This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VE-Q1: [tidl demo]unable to handle kernel paging request at virtual address ffff000880000000

Part Number: TDA4VE-Q1
Other Parts Discussed in Thread: TDA4VM

Tool/software:

SOC: TDA4VM ECO

SDK: 0902

HW: ADCU A1 sample

./run_app_tidl.sh

issue log:

[   62.458711] Unable to handle kernel paging request at virtual address ffff000880000000

1070.run_app_tidl_log.txt

ADCU A1 VS TDA4VM ECO board

1. Memory map changed

4604.app_mem_map.h

<!DOCTYPE html>
<html>
<style type="text/css">
.tg  {border-collapse:collapse;border-spacing:0;border-color:#999;}
.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#999;color:#444;background-color:#F7FDFA;}
.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#999;color:#fff;background-color:#26ADE4;}
.tg .tg-kftd{background-color:#efefef;text-align:left;vertical-align:top}
.tg .tg-6sgx{background-color:#ffffff;text-align:left;vertical-align:top}
.tg .tg-fjir{background-color:#343434;color:#ffffff;text-align:left;vertical-align:top}
</style>

    <head>
        <title>System Memory Map for Linux+RTOS mode</title>
    </head>
    <body>
        <h1>System Memory Map for Linux+RTOS mode</h1>
        <p>Note, this file is auto generated using PyTI_PSDK_RTOS tool</p>
        <table class="tg">
            <tr>
                <th class="tg-fjir">Name</th>
                <th class="tg-fjir">Start Addr</th>
                <th class="tg-fjir">End Addr</th>
                <th class="tg-fjir">Size </th>
                <th class="tg-fjir">Attributes</th>
                <th class="tg-fjir">Description</th>
            </tr>
            <tr>
                <td class="tg-kftd">MAIN_OCRAM_MCU2_0</td>
                <td class="tg-kftd">0x60000000</td>
                <td class="tg-kftd">0x6007FFFF</td>
                <td class="tg-kftd">512.00 KB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">Main OCRAM for MCU2_0</td>
            </tr>
            <tr>
                <td class="tg-6sgx">MAIN_OCRAM_MCU2_1</td>
                <td class="tg-6sgx">0x60080000</td>
                <td class="tg-6sgx">0x600FFFFF</td>
                <td class="tg-6sgx">512.00 KB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">Main OCRAM for MCU2_1</td>
            </tr>
            <tr>
                <td class="tg-kftd">L2RAM_C7x_1</td>
                <td class="tg-kftd">0x64800000</td>
                <td class="tg-kftd">0x6486FFFF</td>
                <td class="tg-kftd">448.00 KB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">L2 for C7x_1</td>
            </tr>
            <tr>
                <td class="tg-6sgx">L1RAM_C7x_1</td>
                <td class="tg-6sgx">0x64E00000</td>
                <td class="tg-6sgx">0x64E03FFF</td>
                <td class="tg-6sgx">16.00 KB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">L1 for C7x_1</td>
            </tr>
            <tr>
                <td class="tg-kftd">L2RAM_C7x_2</td>
                <td class="tg-kftd">0x65800000</td>
                <td class="tg-kftd">0x6586FFFF</td>
                <td class="tg-kftd">448.00 KB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">L2 for C7x_2</td>
            </tr>
            <tr>
                <td class="tg-6sgx">L1RAM_C7x_2</td>
                <td class="tg-6sgx">0x65E00000</td>
                <td class="tg-6sgx">0x65E03FFF</td>
                <td class="tg-6sgx">16.00 KB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">L1 for C7x_2</td>
            </tr>
            <tr>
                <td class="tg-kftd">MSMC_MPU1</td>
                <td class="tg-kftd">0x70000000</td>
                <td class="tg-kftd">0x7001FFFF</td>
                <td class="tg-kftd">128.00 KB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">MSMC reserved for MPU1 for ATF</td>
            </tr>
            <tr>
                <td class="tg-6sgx">MSMC_C7x_1</td>
                <td class="tg-6sgx">0x70020000</td>
                <td class="tg-6sgx">0x703E7FFF</td>
                <td class="tg-6sgx"> 3.78 MB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">MSMC for C7x_1</td>
            </tr>
            <tr>
                <td class="tg-kftd">MSMC_DMSC</td>
                <td class="tg-kftd">0x703F0000</td>
                <td class="tg-kftd">0x703FFFFF</td>
                <td class="tg-kftd">64.00 KB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">MSMC reserved for DMSC IPC</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_MCU1_0_IPC</td>
                <td class="tg-6sgx">0xA0000000</td>
                <td class="tg-6sgx">0xA00FFFFF</td>
                <td class="tg-6sgx">1024.00 KB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for MCU1_0 for Linux IPC</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_MCU1_0_RESOURCE_TABLE</td>
                <td class="tg-kftd">0xA0100000</td>
                <td class="tg-kftd">0xA01003FF</td>
                <td class="tg-kftd">1024 B</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">DDR for MCU1_0 for Linux resource table</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_MCU1_0</td>
                <td class="tg-6sgx">0xA0100400</td>
                <td class="tg-6sgx">0xA0FFFFFF</td>
                <td class="tg-6sgx">15.00 MB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for MCU1_0 for code/data</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_MCU1_1_IPC</td>
                <td class="tg-kftd">0xA1000000</td>
                <td class="tg-kftd">0xA10FFFFF</td>
                <td class="tg-kftd">1024.00 KB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">DDR for MCU1_1 for Linux IPC</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_MCU1_1_RESOURCE_TABLE</td>
                <td class="tg-6sgx">0xA1100000</td>
                <td class="tg-6sgx">0xA11003FF</td>
                <td class="tg-6sgx">1024 B</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for MCU1_1 for Linux resource table</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_MCU1_1</td>
                <td class="tg-kftd">0xA1100400</td>
                <td class="tg-kftd">0xA1FFFFFF</td>
                <td class="tg-kftd">15.00 MB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">DDR for MCU1_1 for code/data</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_MCU2_0_IPC</td>
                <td class="tg-6sgx">0xA2000000</td>
                <td class="tg-6sgx">0xA20FFFFF</td>
                <td class="tg-6sgx">1024.00 KB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for MCU2_0 for Linux IPC</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_MCU2_0_RESOURCE_TABLE</td>
                <td class="tg-kftd">0xA2100000</td>
                <td class="tg-kftd">0xA21003FF</td>
                <td class="tg-kftd">1024 B</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">DDR for MCU2_0 for Linux resource table</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_MCU2_0</td>
                <td class="tg-6sgx">0xA2100400</td>
                <td class="tg-6sgx">0xA3FFFFFF</td>
                <td class="tg-6sgx">31.00 MB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for MCU2_0 for code/data</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_MCU2_1_IPC</td>
                <td class="tg-kftd">0xA4000000</td>
                <td class="tg-kftd">0xA40FFFFF</td>
                <td class="tg-kftd">1024.00 KB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">DDR for MCU2_1 for Linux IPC</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_MCU2_1_RESOURCE_TABLE</td>
                <td class="tg-6sgx">0xA4100000</td>
                <td class="tg-6sgx">0xA41003FF</td>
                <td class="tg-6sgx">1024 B</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for MCU2_1 for Linux resource table</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_MCU2_1</td>
                <td class="tg-kftd">0xA4100400</td>
                <td class="tg-kftd">0xA5FFFFFF</td>
                <td class="tg-kftd">31.00 MB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">DDR for MCU2_1 for code/data</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_MCU3_0_IPC</td>
                <td class="tg-6sgx">0xA6000000</td>
                <td class="tg-6sgx">0xA60FFFFF</td>
                <td class="tg-6sgx">1024.00 KB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for MCU3_0 for Linux IPC</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_MCU3_0_RESOURCE_TABLE</td>
                <td class="tg-kftd">0xA6100000</td>
                <td class="tg-kftd">0xA61003FF</td>
                <td class="tg-kftd">1024 B</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">DDR for MCU3_0 for Linux resource table</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_MCU3_0</td>
                <td class="tg-6sgx">0xA6100400</td>
                <td class="tg-6sgx">0xA6FFFFFF</td>
                <td class="tg-6sgx">15.00 MB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for MCU3_0 for code/data</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_MCU3_1_IPC</td>
                <td class="tg-kftd">0xA7000000</td>
                <td class="tg-kftd">0xA70FFFFF</td>
                <td class="tg-kftd">1024.00 KB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">DDR for MCU3_1 for Linux IPC</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_MCU3_1_RESOURCE_TABLE</td>
                <td class="tg-6sgx">0xA7100000</td>
                <td class="tg-6sgx">0xA71003FF</td>
                <td class="tg-6sgx">1024 B</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for MCU3_1 for Linux resource table</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_MCU3_1</td>
                <td class="tg-kftd">0xA7100400</td>
                <td class="tg-kftd">0xA7FFFFFF</td>
                <td class="tg-kftd">15.00 MB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">DDR for MCU3_1 for code/data</td>
            </tr>
            <tr>
                <td class="tg-6sgx">IPC_VRING_MEM</td>
                <td class="tg-6sgx">0xA8000000</td>
                <td class="tg-6sgx">0xA9FFFFFF</td>
                <td class="tg-6sgx">32.00 MB</td>
                <td class="tg-6sgx"></td>
                <td class="tg-6sgx">Memory for IPC Vring's. MUST be non-cached or cache-coherent</td>
            </tr>
            <tr>
                <td class="tg-kftd">APP_LOG_MEM</td>
                <td class="tg-kftd">0xAA000000</td>
                <td class="tg-kftd">0xAA03FFFF</td>
                <td class="tg-kftd">256.00 KB</td>
                <td class="tg-kftd"></td>
                <td class="tg-kftd">Memory for remote core logging</td>
            </tr>
            <tr>
                <td class="tg-6sgx">TIOVX_OBJ_DESC_MEM</td>
                <td class="tg-6sgx">0xAA040000</td>
                <td class="tg-6sgx">0xADFFFFFF</td>
                <td class="tg-6sgx">63.75 MB</td>
                <td class="tg-6sgx"></td>
                <td class="tg-6sgx">Memory for TI OpenVX shared memory. MUST be non-cached or cache-coherent</td>
            </tr>
            <tr>
                <td class="tg-kftd">APP_FILEIO_MEM</td>
                <td class="tg-kftd">0xAE000000</td>
                <td class="tg-kftd">0xAE3FFFFF</td>
                <td class="tg-kftd"> 4.00 MB</td>
                <td class="tg-kftd"></td>
                <td class="tg-kftd">Memory for remote core file operations</td>
            </tr>
            <tr>
                <td class="tg-6sgx">TIOVX_LOG_RT_MEM</td>
                <td class="tg-6sgx">0xAE400000</td>
                <td class="tg-6sgx">0xAFFFFFFF</td>
                <td class="tg-6sgx">28.00 MB</td>
                <td class="tg-6sgx"></td>
                <td class="tg-6sgx">Memory for TI OpenVX shared memory for Run-time logging. MUST be non-cached or cache-coherent</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_C7x_1_IPC</td>
                <td class="tg-kftd">0xB0000000</td>
                <td class="tg-kftd">0xB00FFFFF</td>
                <td class="tg-kftd">1024.00 KB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">DDR for C7x_1 for Linux IPC</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_C7x_1_RESOURCE_TABLE</td>
                <td class="tg-6sgx">0xB0100000</td>
                <td class="tg-6sgx">0xB01003FF</td>
                <td class="tg-6sgx">1024 B</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for C7x_1 for Linux resource table</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_C7x_1_BOOT</td>
                <td class="tg-kftd">0xB0200000</td>
                <td class="tg-kftd">0xB02003FF</td>
                <td class="tg-kftd">1024 B</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">DDR for C7x_1 for boot section</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_C7x_1_VECS</td>
                <td class="tg-6sgx">0xB0400000</td>
                <td class="tg-6sgx">0xB0403FFF</td>
                <td class="tg-6sgx">16.00 KB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for C7x_1 for vecs section</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_C7x_1_SECURE_VECS</td>
                <td class="tg-kftd">0xB0600000</td>
                <td class="tg-kftd">0xB0603FFF</td>
                <td class="tg-kftd">16.00 KB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">DDR for C7x_1 for secure vecs section</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_C7x_1</td>
                <td class="tg-6sgx">0xB0604000</td>
                <td class="tg-6sgx">0xB5FFFFFF</td>
                <td class="tg-6sgx">89.98 MB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for C7x_1 for code/data</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_C7x_2_IPC</td>
                <td class="tg-kftd">0xB6000000</td>
                <td class="tg-kftd">0xB60FFFFF</td>
                <td class="tg-kftd">1024.00 KB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">DDR for C7x_2 for Linux IPC</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_C7x_2_RESOURCE_TABLE</td>
                <td class="tg-6sgx">0xB6100000</td>
                <td class="tg-6sgx">0xB61003FF</td>
                <td class="tg-6sgx">1024 B</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for C7x_2 for Linux resource table</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_C7x_2_BOOT</td>
                <td class="tg-kftd">0xB6200000</td>
                <td class="tg-kftd">0xB62003FF</td>
                <td class="tg-kftd">1024 B</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">DDR for C7x_2 for boot section</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_C7x_2_VECS</td>
                <td class="tg-6sgx">0xB6400000</td>
                <td class="tg-6sgx">0xB6403FFF</td>
                <td class="tg-6sgx">16.00 KB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for C7x_2 for vecs section</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_C7x_2_SECURE_VECS</td>
                <td class="tg-kftd">0xB6600000</td>
                <td class="tg-kftd">0xB6603FFF</td>
                <td class="tg-kftd">16.00 KB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">DDR for C7x_2 for secure vecs section</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_C7x_2</td>
                <td class="tg-6sgx">0xB6604000</td>
                <td class="tg-6sgx">0xB7FFFFFF</td>
                <td class="tg-6sgx">25.98 MB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for C7x_2 for code/data</td>
            </tr>
            <tr>
                <td class="tg-kftd">M3N_DEBUG_DATA</td>
                <td class="tg-kftd">0xB8000000</td>
                <td class="tg-kftd">0xB8497FFF</td>
                <td class="tg-kftd"> 4.59 MB</td>
                <td class="tg-kftd"></td>
                <td class="tg-kftd">Memory for main mcu comms debug data. MUST be non-cached or cache-coherent</td>
            </tr>
            <tr>
                <td class="tg-6sgx">IPG_EXTENDED_DATA</td>
                <td class="tg-6sgx">0xB8498000</td>
                <td class="tg-6sgx">0xB849BFFF</td>
                <td class="tg-6sgx">16.00 KB</td>
                <td class="tg-6sgx"></td>
                <td class="tg-6sgx">Memory for main mcu comms ipg data. MUST be non-cached or cache-coherent</td>
            </tr>
            <tr>
                <td class="tg-kftd">MAIN_MCU_20MS_MEM</td>
                <td class="tg-kftd">0xB849C000</td>
                <td class="tg-kftd">0xB84CDFFF</td>
                <td class="tg-kftd">200.00 KB</td>
                <td class="tg-kftd"></td>
                <td class="tg-kftd">Memory for main to mcu data shared memory. MUST be non-cached or cache-coherent</td>
            </tr>
            <tr>
                <td class="tg-6sgx">MCU_MAIN_20MS_MEM</td>
                <td class="tg-6sgx">0xB84CE000</td>
                <td class="tg-6sgx">0xB84FFFFF</td>
                <td class="tg-6sgx">200.00 KB</td>
                <td class="tg-6sgx"></td>
                <td class="tg-6sgx">Memory for mcu to main comms data shared memory. MUST be non-cached or cache-coherent</td>
            </tr>
            <tr>
                <td class="tg-kftd">LPC_SHARED_MEM</td>
                <td class="tg-kftd">0xB8500000</td>
                <td class="tg-kftd">0xB899FFFF</td>
                <td class="tg-kftd"> 4.62 MB</td>
                <td class="tg-kftd"></td>
                <td class="tg-kftd">Memory for lpc shared memory. MUST be non-cached or cache-coherent</td>
            </tr>
            <tr>
                <td class="tg-6sgx">GLOBAL_TIMER_MEM</td>
                <td class="tg-6sgx">0xB89A0000</td>
                <td class="tg-6sgx">0xB89BFFFF</td>
                <td class="tg-6sgx">128.00 KB</td>
                <td class="tg-6sgx"></td>
                <td class="tg-6sgx">Memory for global timer memory. MUST be non-cached or cache-coherent</td>
            </tr>
            <tr>
                <td class="tg-kftd">VIP_SHARED_BUF_MEM</td>
                <td class="tg-kftd">0xB89C0000</td>
                <td class="tg-kftd">0xB89DFFFF</td>
                <td class="tg-kftd">128.00 KB</td>
                <td class="tg-kftd"></td>
                <td class="tg-kftd">Memory for vip shared buf memory. MUST be non-cached or cache-coherent</td>
            </tr>
            <tr>
                <td class="tg-6sgx">VALIDATE_INFO_MEM</td>
                <td class="tg-6sgx">0xB89E0000</td>
                <td class="tg-6sgx">0xB89EFFFF</td>
                <td class="tg-6sgx">64.00 KB</td>
                <td class="tg-6sgx"></td>
                <td class="tg-6sgx">Memory for validate info memory. MUST be non-cached or cache-coherent</td>
            </tr>
            <tr>
                <td class="tg-kftd">SENSOR_NAME_MEM</td>
                <td class="tg-kftd">0xB89F0000</td>
                <td class="tg-kftd">0xB89FFFFF</td>
                <td class="tg-kftd">64.00 KB</td>
                <td class="tg-kftd"></td>
                <td class="tg-kftd">Memory for global sensor name shared buf memory. MUST be non-cached or cache-coherent</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_MCU1_0_LOCAL_HEAP</td>
                <td class="tg-6sgx">0xB8A00000</td>
                <td class="tg-6sgx">0xB91FFFFF</td>
                <td class="tg-6sgx"> 8.00 MB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for MCU1_0 for local heap</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_MCU1_1_LOCAL_HEAP</td>
                <td class="tg-kftd">0xB9200000</td>
                <td class="tg-kftd">0xB99FFFFF</td>
                <td class="tg-kftd"> 8.00 MB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">DDR for MCU1_1 for local heap</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_MCU2_0_LOCAL_HEAP</td>
                <td class="tg-6sgx">0xB9A00000</td>
                <td class="tg-6sgx">0xBA7FFFFF</td>
                <td class="tg-6sgx">14.00 MB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for MCU2_0 for local heap</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_MCU2_0_VISS_CONFIG_HEAP</td>
                <td class="tg-kftd">0xBA800000</td>
                <td class="tg-kftd">0xBA9FFFFF</td>
                <td class="tg-kftd"> 2.00 MB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">VISS configuration memory. MUST be write through cache policy.</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_MCU2_1_LOCAL_HEAP</td>
                <td class="tg-6sgx">0xBAA00000</td>
                <td class="tg-6sgx">0xBB9FFFFF</td>
                <td class="tg-6sgx">16.00 MB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for MCU2_1 for local heap</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_MCU3_0_LOCAL_HEAP</td>
                <td class="tg-kftd">0xBBA00000</td>
                <td class="tg-kftd">0xBC1FFFFF</td>
                <td class="tg-kftd"> 8.00 MB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">DDR for MCU3_0 for local heap</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_MCU3_1_LOCAL_HEAP</td>
                <td class="tg-6sgx">0xBC200000</td>
                <td class="tg-6sgx">0xBC9FFFFF</td>
                <td class="tg-6sgx"> 8.00 MB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for MCU3_1 for local heap</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_SHARED_MEM</td>
                <td class="tg-kftd">0xC0000000</td>
                <td class="tg-kftd">0xDFFFFFFF</td>
                <td class="tg-kftd">512.00 MB</td>
                <td class="tg-kftd"></td>
                <td class="tg-kftd">Memory for shared memory buffers in DDR</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_C7X_1_SCRATCH</td>
                <td class="tg-6sgx">0x100000000</td>
                <td class="tg-6sgx">0x116FFFFFF</td>
                <td class="tg-6sgx">368.00 MB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for c7x_1 for Scratch Memory</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_C7X_1_LOCAL_HEAP</td>
                <td class="tg-kftd">0x117000000</td>
                <td class="tg-kftd">0x126FFFFFF</td>
                <td class="tg-kftd">256.00 MB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">DDR for c7x_1 for local heap</td>
            </tr>
            <tr>
                <td class="tg-6sgx">DDR_C7X_2_LOCAL_HEAP</td>
                <td class="tg-6sgx">0x127000000</td>
                <td class="tg-6sgx">0x127FFFFFF</td>
                <td class="tg-6sgx">16.00 MB</td>
                <td class="tg-6sgx">RWIX</td>
                <td class="tg-6sgx">DDR for c7x_2 for local heap</td>
            </tr>
            <tr>
                <td class="tg-kftd">DDR_C7X_2_SCRATCH</td>
                <td class="tg-kftd">0x128000000</td>
                <td class="tg-kftd">0x12BFFFFFF</td>
                <td class="tg-kftd">64.00 MB</td>
                <td class="tg-kftd">RWIX</td>
                <td class="tg-kftd">DDR for c7x_2 for Scratch Memory</td>
            </tr>
        </table>
    </body>
</html>

#!/usr/bin/env python3
#
# Copyright (c) 2018 Texas Instruments Incorporated
#
# All rights reserved not granted herein.
#
# Limited License.
#
# Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
# license under copyrights and patents it now or hereafter owns or controls to make,
# have made, use, import, offer to sell and sell ("Utilize") this software subject to the
# terms herein.  With respect to the foregoing patent license, such license is granted
# solely to the extent that any such patent is necessary to Utilize the software alone.
# The patent license shall not apply to any combinations which include this software,
# other than combinations with devices manufactured by or for TI ("TI Devices").
# No hardware patent is licensed hereunder.
#
# Redistributions must preserve existing copyright notices and reproduce this license
# (including the above copyright notice and the disclaimer and (if applicable) source
# code license limitations below) in the documentation and/or other materials provided
# with the distribution
#
# Redistribution and use in binary form, without modification, are permitted provided
# that the following conditions are met:
#
#       No reverse engineering, decompilation, or disassembly of this software is
# permitted with respect to any software provided in binary form.
#
#       any redistribution and use are licensed by TI for use only with TI Devices.
#
#       Nothing shall obligate TI to provide you with source code for the software
# licensed and provided to you in object code.
#
# If software source code is provided to you, modification and redistribution of the
# source code are permitted provided that the following conditions are met:
#
#       any redistribution and use of the source code, including any resulting derivative
# works, are licensed by TI for use only with TI Devices.
#
#       any redistribution and use of any object code compiled from the source code
# and any resulting derivative works, are licensed by TI for use only with TI Devices.
#
# Neither the name of Texas Instruments Incorporated nor the names of its suppliers
#
# may be used to endorse or promote products derived from this software without
# specific prior written permission.
#
# DISCLAIMER.
#
# THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
# OF THE POSSIBILITY OF SUCH DAMAGE.
#
#

#
# This script is used to generate 'MEMORY' section for multiple CPUs
# in different CPU specific linker command files.
#
# This helps to define the memory map in one file vs having to manually
# keep the system memory map consistant across multiple CPUs
# in different linker commnd files.
#
# Make sure PyTI_PSDK_RTOS module is installed before running this script.
# See vision_apps/tools/PyTI_PSDK_RTOS/README.txt to install PyTI_PSDK_RTOS module.
#
# Edit this file to change the memory map
#
# Run this script by doing below,
# ./gen_linker_mem_map.py
#
# This will generate linker command file at below folders
# ./<cpu name>/linker_mem_map.cmd
#
# Here CPU name is mpu1, c7x_1, c7x_2, mcu1_0, mcu2_0, mcu3_0
#
#
from ti_psdk_rtos_tools import *

KB = 1024;
MB = KB*KB;
GB = KB*MB;

#
# Notes,
# - recommend to keep all memory segment sizes in units of KB at least
#

#
# On J721E/J7ES/TDA4VM, there are 2 DDR chipsets
#
# lower DDR address starts at 0x0000_8000_0000
# higher DDR address starts at 0x0008_8000_0000
#
# As the address is non-contiguous it requires MMU to remap the address
# Currently the upper 2GB is accessed by either ARM (user space)
# C7x DSP heap/scratch space, as 32-bit cores like R5F cannot access it
#
# The upper DDR address is mapped contiguously from lower DDR address
# but remapped to actual physical address using MMU
#
# physical lower DDR address range 0x0000_8000_0000
# virtual lower DDR address range 0x0000_8000_0000
#
# physical lower DDR address range 0x0008_8000_0000
# virtual lower DDR address range 0x0001_0000_0000
#

ddr_mem_addr  = 0xa0000000;
ddr_mem_size  = 1*GB + 448*MB; # Last 64MB is used by Linux

ddr_mem_addr_hi_phy = 0x880000000;
ddr_mem_addr_hi = 0x100000000;
ddr_mem_size_hi = 736*MB;

msmc_mem_addr = 0x70000000;
main_ocram_mem_addr = 0x60000000; # Note: uses RAT to translate to proper address
main_ocram_mem_addr_phys = 0x4F02000000;

#
# Other constant sizes
#
linux_ddr_ipc_size = 1*MB;
linux_ddr_resource_table_size = 1*KB;

#
# MSMC memory allocation for various CPUs
#
dmsc_msmc_size   = 64*KB;
mpu1_msmc_addr   = msmc_mem_addr;
mpu1_msmc_size   = 128*KB;
c7x_1_msmc_addr  = mpu1_msmc_addr + mpu1_msmc_size;
misc_msmc_stack_size = 32*KB;
c7x_1_msmc_size  = 4*MB - mpu1_msmc_size - dmsc_msmc_size - misc_msmc_stack_size;
dmsc_msmc_addr   = c7x_1_msmc_addr + c7x_1_msmc_size + misc_msmc_stack_size;

#
# C7x L1, L2 memory allocation
# L1 - 32KB $, 16KB SRAM
# L2 - 64KB $, 448KB SRAM
c7x_1_l2_addr  = 0x64800000;
c7x_1_l2_size  = (512 - 64)*KB;
c7x_1_l1_addr  = 0x64E00000;
c7x_1_l1_size  = 16*KB;

#
# C7x L1, L2 memory allocation
# L1 - 32KB $, 16KB SRAM
# L2 - 64KB $, 448KB SRAM
c7x_2_l2_addr  = 0x65800000;
c7x_2_l2_size  = (512 - 64)*KB;
c7x_2_l1_addr  = 0x65E00000;
c7x_2_l1_size  = 16*KB;

#
# Main OCRAM memory allocation
#
mcu2_0_main_ocram_addr       = main_ocram_mem_addr;
mcu2_0_main_ocram_addr_phys  = main_ocram_mem_addr_phys;
mcu2_0_main_ocram_size       = 512*KB;

mcu2_1_main_ocram_addr       = mcu2_0_main_ocram_addr + mcu2_0_main_ocram_size;
mcu2_1_main_ocram_addr_phys  = mcu2_0_main_ocram_addr_phys + mcu2_0_main_ocram_size;
mcu2_1_main_ocram_size       = 512*KB;

#
# DDR memory allocation for various CPUs
#
mcu1_0_ddr_ipc_addr = ddr_mem_addr;
mcu1_0_ddr_resource_table_addr = mcu1_0_ddr_ipc_addr + linux_ddr_ipc_size;
mcu1_0_ddr_addr = mcu1_0_ddr_resource_table_addr + linux_ddr_resource_table_size;
mcu1_0_ddr_size = 16*MB - (mcu1_0_ddr_addr-mcu1_0_ddr_ipc_addr);

mcu1_1_ddr_ipc_addr = mcu1_0_ddr_addr + mcu1_0_ddr_size;
mcu1_1_ddr_resource_table_addr = mcu1_1_ddr_ipc_addr + linux_ddr_ipc_size;
mcu1_1_ddr_addr = mcu1_1_ddr_resource_table_addr + linux_ddr_resource_table_size;
mcu1_1_ddr_size = 16*MB - (mcu1_1_ddr_addr-mcu1_1_ddr_ipc_addr);

mcu2_0_ddr_ipc_addr = mcu1_1_ddr_addr + mcu1_1_ddr_size;
mcu2_0_ddr_resource_table_addr = mcu2_0_ddr_ipc_addr + linux_ddr_ipc_size;
mcu2_0_ddr_addr = mcu2_0_ddr_resource_table_addr + linux_ddr_resource_table_size;
mcu2_0_ddr_size = 32*MB - (mcu2_0_ddr_addr-mcu2_0_ddr_ipc_addr);

mcu2_1_ddr_ipc_addr = mcu2_0_ddr_addr + mcu2_0_ddr_size;
mcu2_1_ddr_resource_table_addr = mcu2_1_ddr_ipc_addr + linux_ddr_ipc_size;
mcu2_1_ddr_addr = mcu2_1_ddr_resource_table_addr + linux_ddr_resource_table_size;
mcu2_1_ddr_size = 32*MB - (mcu2_1_ddr_addr-mcu2_1_ddr_ipc_addr);

mcu3_0_ddr_ipc_addr = mcu2_1_ddr_addr + mcu2_1_ddr_size;
mcu3_0_ddr_resource_table_addr = mcu3_0_ddr_ipc_addr + linux_ddr_ipc_size;
mcu3_0_ddr_addr = mcu3_0_ddr_resource_table_addr + linux_ddr_resource_table_size;
mcu3_0_ddr_size = 16*MB - (mcu3_0_ddr_addr-mcu3_0_ddr_ipc_addr);

mcu3_1_ddr_ipc_addr = mcu3_0_ddr_addr + mcu3_0_ddr_size;
mcu3_1_ddr_resource_table_addr = mcu3_1_ddr_ipc_addr + linux_ddr_ipc_size;
mcu3_1_ddr_addr = mcu3_1_ddr_resource_table_addr + linux_ddr_resource_table_size;
mcu3_1_ddr_size = 16*MB - (mcu3_1_ddr_addr-mcu3_1_ddr_ipc_addr);

#
# DDR memory allocation for various shared memories
#

# Hardcoding this value, as this cannot be different from IPC echo test value
ipc_vring_mem_addr      = 0xA8000000;
ipc_vring_mem_size      = 32*MB;

app_log_mem_addr        = ipc_vring_mem_addr + ipc_vring_mem_size;
app_log_mem_size        = 256*KB;
tiovx_obj_desc_mem_addr = app_log_mem_addr + app_log_mem_size;
tiovx_obj_desc_mem_size = 64*MB - app_log_mem_size;

app_fileio_mem_addr     =  tiovx_obj_desc_mem_addr + tiovx_obj_desc_mem_size;
app_fileio_mem_size     = 4*MB;
tiovx_log_rt_mem_addr   = app_fileio_mem_addr + app_fileio_mem_size;
tiovx_log_rt_mem_size   = 32*MB - app_fileio_mem_size;

c7x_1_ddr_ipc_addr =tiovx_log_rt_mem_addr + tiovx_log_rt_mem_size;
c7x_1_ddr_resource_table_addr = c7x_1_ddr_ipc_addr + linux_ddr_ipc_size;
c7x_1_ddr_boot_addr = c7x_1_ddr_resource_table_addr + 1*MB;
c7x_1_ddr_boot_size = 1*KB;
c7x_1_ddr_vecs_addr = c7x_1_ddr_resource_table_addr + 3*MB;
c7x_1_ddr_vecs_size = 16*KB;
c7x_1_ddr_secure_vecs_addr = c7x_1_ddr_resource_table_addr + 5*MB;
c7x_1_ddr_secure_vecs_size = 16*KB;
c7x_1_ddr_addr = c7x_1_ddr_secure_vecs_addr + c7x_1_ddr_secure_vecs_size;
c7x_1_ddr_size = 96*MB - (c7x_1_ddr_addr-c7x_1_ddr_ipc_addr);

c7x_2_ddr_ipc_addr = c7x_1_ddr_addr  + c7x_1_ddr_size;
c7x_2_ddr_resource_table_addr = c7x_2_ddr_ipc_addr + linux_ddr_ipc_size;
c7x_2_ddr_boot_addr = c7x_2_ddr_resource_table_addr + 1*MB;
c7x_2_ddr_boot_size = 1*KB;
c7x_2_ddr_vecs_addr = c7x_2_ddr_resource_table_addr + 3*MB;
c7x_2_ddr_vecs_size = 16*KB;
c7x_2_ddr_secure_vecs_addr = c7x_2_ddr_resource_table_addr + 5*MB;
c7x_2_ddr_secure_vecs_size = 16*KB;
c7x_2_ddr_addr = c7x_2_ddr_secure_vecs_addr + c7x_2_ddr_secure_vecs_size;
c7x_2_ddr_size = 32*MB - (c7x_2_ddr_addr-c7x_2_ddr_ipc_addr);


# the two 5M memory allocated from tiovx_obj_desc_mem is used for main/mcu communication and LPC related
# please attention their position
m3n_debug_data_addr     = c7x_2_ddr_addr + c7x_2_ddr_size;
m3n_debug_data_size     = 5*MB - 16*KB - 200*KB - 200*KB;
ipg_extended_data_addr  = m3n_debug_data_addr + m3n_debug_data_size;
ipg_extended_data_size  = 16*KB;
main_mcu_20ms_mem_addr  = ipg_extended_data_addr + ipg_extended_data_size;
main_mcu_20ms_mem_size  = 200*KB;
mcu_main_20ms_mem_addr  = main_mcu_20ms_mem_addr + main_mcu_20ms_mem_size;
mcu_main_20ms_mem_size  = 200*KB;

# Four shared memory sections
lpc_shared_mem_addr        = mcu_main_20ms_mem_addr + mcu_main_20ms_mem_size;
lpc_shared_mem_size        = 5*MB - 128*KB*3;

global_timer_mem_addr      = lpc_shared_mem_addr + lpc_shared_mem_size;
global_timer_mem_size      = 128*KB;

vip_shared_buf_mem_addr    = global_timer_mem_addr + global_timer_mem_size;
vip_shared_buf_mem_size    = 128*KB;

validate_info_mem_addr     = vip_shared_buf_mem_addr + vip_shared_buf_mem_size;
validate_info_mem_size     = 64*KB;

sensor_name_addr    = validate_info_mem_addr + validate_info_mem_size;
sensor_name_size    = 64*KB;
mcu1_0_ddr_local_heap_addr  = sensor_name_addr + sensor_name_size;
mcu1_0_ddr_local_heap_size  = 8*MB;
mcu1_1_ddr_local_heap_addr  = mcu1_0_ddr_local_heap_addr + mcu1_0_ddr_local_heap_size;
mcu1_1_ddr_local_heap_size  = 8*MB;
mcu2_0_ddr_local_heap_addr  = mcu1_1_ddr_local_heap_addr + mcu1_1_ddr_local_heap_size;
mcu2_0_ddr_local_heap_size  = 14*MB;
mcu2_0_ddr_viss_heap_addr   = mcu2_0_ddr_local_heap_addr + mcu2_0_ddr_local_heap_size;
mcu2_0_ddr_viss_heap_size   = 2*MB;
mcu2_1_ddr_local_heap_addr  = mcu2_0_ddr_viss_heap_addr + mcu2_0_ddr_viss_heap_size;
mcu2_1_ddr_local_heap_size  = 16*MB;
mcu3_0_ddr_local_heap_addr  = mcu2_1_ddr_local_heap_addr + mcu2_1_ddr_local_heap_size;
mcu3_0_ddr_local_heap_size  = 8*MB;
mcu3_1_ddr_local_heap_addr  = mcu3_0_ddr_local_heap_addr + mcu3_0_ddr_local_heap_size;
mcu3_1_ddr_local_heap_size  = 8*MB;

# Shared memory for DMA Buf FD carveout
ddr_shared_mem_addr     = 0xC0000000; # This will be the virtual address used for R5F's / C7X's
ddr_shared_mem_size     = 512*MB;

c7x_1_ddr_scratch_addr     = ddr_mem_addr_hi;
c7x_1_ddr_scratch_size     = 368*MB;

c7x_1_ddr_local_heap_addr  = c7x_1_ddr_scratch_addr + c7x_1_ddr_scratch_size;
c7x_1_ddr_local_heap_size  = 256*MB;

c7x_2_ddr_local_heap_addr = c7x_1_ddr_local_heap_addr + c7x_1_ddr_local_heap_size;
c7x_2_ddr_local_heap_size = 16*MB;
c7x_2_ddr_scratch_addr    = c7x_2_ddr_local_heap_addr + c7x_2_ddr_local_heap_size;
c7x_2_ddr_scratch_size    = 64*MB;

# Shared memory for DMA Buf FD carveout (located in high mem)
ddr_shared_mem_addr_phys  = 0x900000000; # TODO: Clean this up
ddr_shared_mem_size       = 512*MB;

#
# Create memory section based on addr and size defined above, including
# any CPU specific internal memories
#

# r5f local memory sections
mcu_r5f_tcma_vecs  = MemSection("R5F_TCMA_VECS" , "X"   , 0x00000000, (KB >> 4));
mcu_r5f_tcma       = MemSection("R5F_TCMA" , "X"   , 0x00000040, (32*KB) - (KB >> 4));

r5f_tcmb0      = MemSection("R5F_TCMB0", "RWIX", 0x41010000, 32*KB);

mcu_r5f_tcmb0_vecs   = MemSection("R5F_TCMB0_VECS", "RWIX", 0x41010000, (KB >> 4));
mcu_r5f_tcmb0        = MemSection("R5F_TCMB0", "RWIX", 0x41010040, (32*KB) - (KB >> 4));

# MSMC memory sections
mpu1_msmc   = MemSection("MSMC_MPU1", "RWIX", mpu1_msmc_addr  , mpu1_msmc_size  , "MSMC reserved for MPU1 for ATF");
c7x_1_msmc  = MemSection("MSMC_C7x_1", "RWIX", c7x_1_msmc_addr  , c7x_1_msmc_size  , "MSMC for C7x_1");
dmsc_msmc  = MemSection("MSMC_DMSC", "RWIX", dmsc_msmc_addr  , dmsc_msmc_size  , "MSMC reserved for DMSC IPC");

# C7x L1/L2 memory sections
c7x_1_l2   = MemSection("L2RAM_C7x_1", "RWIX", c7x_1_l2_addr  , c7x_1_l2_size  , "L2 for C7x_1");
c7x_1_l1   = MemSection("L1RAM_C7x_1", "RWIX", c7x_1_l1_addr  , c7x_1_l1_size  , "L1 for C7x_1");

c7x_2_l2   = MemSection("L2RAM_C7x_2", "RWIX", c7x_2_l2_addr  , c7x_2_l2_size  , "L2 for C7x_2");
c7x_2_l1   = MemSection("L1RAM_C7x_2", "RWIX", c7x_2_l1_addr  , c7x_2_l1_size  , "L1 for C7x_2");

# Main OCRAM memory sections
mcu2_0_main_ocram   = MemSection("MAIN_OCRAM_MCU2_0", "RWIX", mcu2_0_main_ocram_addr  , mcu2_0_main_ocram_size  , "Main OCRAM for MCU2_0");
mcu2_1_main_ocram   = MemSection("MAIN_OCRAM_MCU2_1", "RWIX", mcu2_1_main_ocram_addr  , mcu2_1_main_ocram_size  , "Main OCRAM for MCU2_1");

mcu2_0_main_ocram_phys   = MemSection("MAIN_OCRAM_MCU2_0_PHYS", "RWIX", mcu2_0_main_ocram_addr_phys  , mcu2_0_main_ocram_size  , "Main OCRAM Physical Address for MCU2_0");
mcu2_1_main_ocram_phys   = MemSection("MAIN_OCRAM_MCU2_1_PHYS", "RWIX", mcu2_1_main_ocram_addr_phys  , mcu2_1_main_ocram_size  , "Main OCRAM Physical Address for MCU2_1");

# CPU code/data memory sections in DDR
mcu1_0_ddr_ipc             = MemSection("DDR_MCU1_0_IPC", "RWIX", mcu1_0_ddr_ipc_addr, linux_ddr_ipc_size, "DDR for MCU1_0 for Linux IPC");
mcu1_0_ddr_ipc.setDtsName("vision_apps_mcu_r5fss0_core0_dma_memory_region", "vision-apps-r5f-dma-memory");
mcu1_0_ddr_resource_table  = MemSection("DDR_MCU1_0_RESOURCE_TABLE", "RWIX", mcu1_0_ddr_resource_table_addr, linux_ddr_resource_table_size, "DDR for MCU1_0 for Linux resource table");
mcu1_0_ddr                 = MemSection("DDR_MCU1_0", "RWIX", mcu1_0_ddr_addr, mcu1_0_ddr_size, "DDR for MCU1_0 for code/data");
mcu1_0_ddr_local_heap      = MemSection("DDR_MCU1_0_LOCAL_HEAP", "RWIX", mcu1_0_ddr_local_heap_addr, mcu1_0_ddr_local_heap_size, "DDR for MCU1_0 for local heap");
mcu1_0_ddr_total           = MemSection("DDR_MCU1_0_DTS", "", 0, 0, "DDR for MCU1_0 for all sections, used for reserving memory in DTS file");
mcu1_0_ddr_total.concat(mcu1_0_ddr_resource_table);
mcu1_0_ddr_total.concat(mcu1_0_ddr);
mcu1_0_ddr_total.setDtsName("vision_apps_mcu_r5fss0_core0_memory_region", "vision-apps-r5f-memory");

mcu1_1_ddr_ipc             = MemSection("DDR_MCU1_1_IPC", "RWIX", mcu1_1_ddr_ipc_addr, linux_ddr_ipc_size, "DDR for MCU1_1 for Linux IPC");
mcu1_1_ddr_ipc.setDtsName("vision_apps_mcu_r5fss0_core1_dma_memory_region", "vision-apps-r5f-dma-memory");
mcu1_1_ddr_resource_table  = MemSection("DDR_MCU1_1_RESOURCE_TABLE", "RWIX", mcu1_1_ddr_resource_table_addr, linux_ddr_resource_table_size, "DDR for MCU1_1 for Linux resource table");
mcu1_1_ddr                 = MemSection("DDR_MCU1_1", "RWIX", mcu1_1_ddr_addr, mcu1_1_ddr_size, "DDR for MCU1_1 for code/data");
mcu1_1_ddr_local_heap      = MemSection("DDR_MCU1_1_LOCAL_HEAP", "RWIX", mcu1_1_ddr_local_heap_addr, mcu1_1_ddr_local_heap_size, "DDR for MCU1_1 for local heap");
mcu1_1_ddr_total           = MemSection("DDR_MCU1_1_DTS", "", 0, 0, "DDR for MCU1_1 for all sections, used for reserving memory in DTS file");
mcu1_1_ddr_total.concat(mcu1_1_ddr_resource_table);
mcu1_1_ddr_total.concat(mcu1_1_ddr);
mcu1_1_ddr_total.setDtsName("vision_apps_mcu_r5fss0_core1_memory_region", "vision-apps-r5f-memory");

mcu2_0_ddr_ipc             = MemSection("DDR_MCU2_0_IPC", "RWIX", mcu2_0_ddr_ipc_addr, linux_ddr_ipc_size, "DDR for MCU2_0 for Linux IPC");
mcu2_0_ddr_ipc.setDtsName("vision_apps_main_r5fss0_core0_dma_memory_region", "vision-apps-r5f-dma-memory");
mcu2_0_ddr_resource_table  = MemSection("DDR_MCU2_0_RESOURCE_TABLE", "RWIX", mcu2_0_ddr_resource_table_addr, linux_ddr_resource_table_size, "DDR for MCU2_0 for Linux resource table");
mcu2_0_ddr                 = MemSection("DDR_MCU2_0", "RWIX", mcu2_0_ddr_addr, mcu2_0_ddr_size, "DDR for MCU2_0 for code/data");
mcu2_0_ddr_total           = MemSection("DDR_MCU2_0_DTS", "", 0, 0, "DDR for MCU2_0 for all sections, used for reserving memory in DTS file");
mcu2_0_ddr_local_heap      = MemSection("DDR_MCU2_0_LOCAL_HEAP", "RWIX", mcu2_0_ddr_local_heap_addr, mcu2_0_ddr_local_heap_size, "DDR for MCU2_0 for local heap");
mcu2_0_ddr_viss_config_heap = MemSection("DDR_MCU2_0_VISS_CONFIG_HEAP", "RWIX", mcu2_0_ddr_viss_heap_addr, mcu2_0_ddr_viss_heap_size, "VISS configuration memory. MUST be write through cache policy.");
mcu2_0_ddr_total.concat(mcu2_0_ddr_resource_table);
mcu2_0_ddr_total.concat(mcu2_0_ddr);
mcu2_0_ddr_total.setDtsName("vision_apps_main_r5fss0_core0_memory_region", "vision-apps-r5f-memory");

mcu2_1_ddr_ipc             = MemSection("DDR_MCU2_1_IPC", "RWIX", mcu2_1_ddr_ipc_addr, linux_ddr_ipc_size, "DDR for MCU2_1 for Linux IPC");
mcu2_1_ddr_ipc.setDtsName("vision_apps_main_r5fss0_core1_dma_memory_region", "vision-apps-r5f-dma-memory");
mcu2_1_ddr_resource_table  = MemSection("DDR_MCU2_1_RESOURCE_TABLE", "RWIX", mcu2_1_ddr_resource_table_addr, linux_ddr_resource_table_size, "DDR for MCU2_1 for Linux resource table");
mcu2_1_ddr                 = MemSection("DDR_MCU2_1", "RWIX", mcu2_1_ddr_addr, mcu2_1_ddr_size, "DDR for MCU2_1 for code/data");
mcu2_1_ddr_total           = MemSection("DDR_MCU2_1_DTS", "", 0, 0, "DDR for MCU2_1 for all sections, used for reserving memory in DTS file");
mcu2_1_ddr_local_heap      = MemSection("DDR_MCU2_1_LOCAL_HEAP", "RWIX", mcu2_1_ddr_local_heap_addr, mcu2_1_ddr_local_heap_size, "DDR for MCU2_1 for local heap");
mcu2_1_ddr_total.concat(mcu2_1_ddr_resource_table);
mcu2_1_ddr_total.concat(mcu2_1_ddr);
mcu2_1_ddr_total.setDtsName("vision_apps_main_r5fss0_core1_memory_region", "vision-apps-r5f-memory");

mcu3_0_ddr_ipc             = MemSection("DDR_MCU3_0_IPC", "RWIX", mcu3_0_ddr_ipc_addr, linux_ddr_ipc_size, "DDR for MCU3_0 for Linux IPC");
mcu3_0_ddr_ipc.setDtsName("vision_apps_main_r5fss1_core0_dma_memory_region", "vision-apps-r5f-dma-memory");
mcu3_0_ddr_resource_table  = MemSection("DDR_MCU3_0_RESOURCE_TABLE", "RWIX", mcu3_0_ddr_resource_table_addr, linux_ddr_resource_table_size, "DDR for MCU3_0 for Linux resource table");
mcu3_0_ddr                 = MemSection("DDR_MCU3_0", "RWIX", mcu3_0_ddr_addr, mcu3_0_ddr_size, "DDR for MCU3_0 for code/data");
mcu3_0_ddr_local_heap      = MemSection("DDR_MCU3_0_LOCAL_HEAP", "RWIX", mcu3_0_ddr_local_heap_addr, mcu3_0_ddr_local_heap_size, "DDR for MCU3_0 for local heap");
mcu3_0_ddr_total           = MemSection("DDR_MCU3_0_DTS", "", 0, 0, "DDR for MCU3_0 for all sections, used for reserving memory in DTS file");
mcu3_0_ddr_total.concat(mcu3_0_ddr_resource_table);
mcu3_0_ddr_total.concat(mcu3_0_ddr);
mcu3_0_ddr_total.setDtsName("vision_apps_main_r5fss1_core0_memory_region", "vision-apps-r5f-memory");

mcu3_1_ddr_ipc             = MemSection("DDR_MCU3_1_IPC", "RWIX", mcu3_1_ddr_ipc_addr, linux_ddr_ipc_size, "DDR for MCU3_1 for Linux IPC");
mcu3_1_ddr_ipc.setDtsName("vision_apps_main_r5fss1_core1_dma_memory_region", "vision-apps-r5f-dma-memory");
mcu3_1_ddr_resource_table  = MemSection("DDR_MCU3_1_RESOURCE_TABLE", "RWIX", mcu3_1_ddr_resource_table_addr, linux_ddr_resource_table_size, "DDR for MCU3_1 for Linux resource table");
mcu3_1_ddr                 = MemSection("DDR_MCU3_1", "RWIX", mcu3_1_ddr_addr, mcu3_1_ddr_size, "DDR for MCU3_1 for code/data");
mcu3_1_ddr_local_heap      = MemSection("DDR_MCU3_1_LOCAL_HEAP", "RWIX", mcu3_1_ddr_local_heap_addr, mcu3_1_ddr_local_heap_size, "DDR for MCU3_1 for local heap");
mcu3_1_ddr_total           = MemSection("DDR_MCU3_1_DTS", "", 0, 0, "DDR for MCU3_1 for all sections, used for reserving memory in DTS file");
mcu3_1_ddr_total.concat(mcu3_1_ddr_resource_table);
mcu3_1_ddr_total.concat(mcu3_1_ddr);
mcu3_1_ddr_total.setDtsName("vision_apps_main_r5fss1_core1_memory_region", "vision-apps-r5f-memory");

c7x_2_ddr_ipc             = MemSection("DDR_C7x_2_IPC", "RWIX", c7x_2_ddr_ipc_addr, linux_ddr_ipc_size, "DDR for C7x_2 for Linux IPC");
c7x_2_ddr_ipc.setDtsName("vision_apps_c71_1_dma_memory_region", "vision-apps-c71_1-dma-memory");
c7x_2_ddr_resource_table  = MemSection("DDR_C7x_2_RESOURCE_TABLE", "RWIX", c7x_2_ddr_resource_table_addr, linux_ddr_resource_table_size, "DDR for C7x_2 for Linux resource table");
c7x_2_ddr_boot            = MemSection("DDR_C7x_2_BOOT", "RWIX", c7x_2_ddr_boot_addr, c7x_2_ddr_boot_size, "DDR for C7x_2 for boot section");
c7x_2_ddr_vecs            = MemSection("DDR_C7x_2_VECS", "RWIX", c7x_2_ddr_vecs_addr, c7x_2_ddr_vecs_size, "DDR for C7x_2 for vecs section");
c7x_2_ddr_secure_vecs     = MemSection("DDR_C7x_2_SECURE_VECS", "RWIX", c7x_2_ddr_secure_vecs_addr, c7x_2_ddr_secure_vecs_size, "DDR for C7x_2 for secure vecs section");
c7x_2_ddr                 = MemSection("DDR_C7x_2", "RWIX", c7x_2_ddr_addr, c7x_2_ddr_size, "DDR for C7x_2 for code/data");
c7x_2_ddr_local_heap      = MemSection("DDR_C7X_2_LOCAL_HEAP", "RWIX", c7x_2_ddr_local_heap_addr, c7x_2_ddr_local_heap_size, "DDR for c7x_2 for local heap");
c7x_2_ddr_scratch         = MemSection("DDR_C7X_2_SCRATCH", "RWIX", c7x_2_ddr_scratch_addr, c7x_2_ddr_scratch_size, "DDR for c7x_2 for Scratch Memory");
c7x_2_ddr_total           = MemSection("DDR_C7x_2_DTS", "", 0, 0, "DDR for C7x_2 for all sections, used for reserving memory in DTS file");
c7x_2_ddr_total.concat(c7x_2_ddr_resource_table);
c7x_2_ddr_total.concat(c7x_2_ddr_boot);
c7x_2_ddr_total.concat(c7x_2_ddr_vecs);
c7x_2_ddr_total.concat(c7x_2_ddr_secure_vecs);
c7x_2_ddr_total.concat(c7x_2_ddr);
c7x_2_ddr_total.setDtsName("vision_apps_c71_1_memory_region", "vision-apps-c71_1-memory");

c7x_1_ddr_ipc             = MemSection("DDR_C7x_1_IPC", "RWIX", c7x_1_ddr_ipc_addr, linux_ddr_ipc_size, "DDR for C7x_1 for Linux IPC");
c7x_1_ddr_ipc.setDtsName("vision_apps_c71_0_dma_memory_region", "vision-apps-c71-dma-memory");
c7x_1_ddr_resource_table  = MemSection("DDR_C7x_1_RESOURCE_TABLE", "RWIX", c7x_1_ddr_resource_table_addr, linux_ddr_resource_table_size, "DDR for C7x_1 for Linux resource table");
c7x_1_ddr_boot            = MemSection("DDR_C7x_1_BOOT", "RWIX", c7x_1_ddr_boot_addr, c7x_1_ddr_boot_size, "DDR for C7x_1 for boot section");
c7x_1_ddr_vecs            = MemSection("DDR_C7x_1_VECS", "RWIX", c7x_1_ddr_vecs_addr, c7x_1_ddr_vecs_size, "DDR for C7x_1 for vecs section");
c7x_1_ddr_secure_vecs     = MemSection("DDR_C7x_1_SECURE_VECS", "RWIX", c7x_1_ddr_secure_vecs_addr, c7x_1_ddr_secure_vecs_size, "DDR for C7x_1 for secure vecs section");
c7x_1_ddr                 = MemSection("DDR_C7x_1", "RWIX", c7x_1_ddr_addr, c7x_1_ddr_size, "DDR for C7x_1 for code/data");
c7x_1_ddr_local_heap      = MemSection("DDR_C7X_1_LOCAL_HEAP", "RWIX", c7x_1_ddr_local_heap_addr, c7x_1_ddr_local_heap_size, "DDR for c7x_1 for local heap");
c7x_1_ddr_scratch         = MemSection("DDR_C7X_1_SCRATCH", "RWIX", c7x_1_ddr_scratch_addr, c7x_1_ddr_scratch_size, "DDR for c7x_1 for Scratch Memory");
c7x_1_ddr_total           = MemSection("DDR_C7x_1_DTS", "", 0, 0, "DDR for C7x_1 for all sections, used for reserving memory in DTS file");
c7x_1_ddr_total.concat(c7x_1_ddr_resource_table);
c7x_1_ddr_total.concat(c7x_1_ddr_boot);
c7x_1_ddr_total.concat(c7x_1_ddr_vecs);
c7x_1_ddr_total.concat(c7x_1_ddr_secure_vecs);
c7x_1_ddr_total.concat(c7x_1_ddr);
c7x_1_ddr_total.setDtsName("vision_apps_c71_0_memory_region", "vision-apps-c71_0-memory");

# Shared memory memory sections in DDR
app_log_mem            = MemSection("APP_LOG_MEM"        , "", app_log_mem_addr       , app_log_mem_size       , "Memory for remote core logging");
tiovx_obj_desc_mem     = MemSection("TIOVX_OBJ_DESC_MEM" , "", tiovx_obj_desc_mem_addr, tiovx_obj_desc_mem_size, "Memory for TI OpenVX shared memory. MUST be non-cached or cache-coherent");

m3n_debug_data         = MemSection("M3N_DEBUG_DATA" , "", m3n_debug_data_addr, m3n_debug_data_size, "Memory for main mcu comms debug data. MUST be non-cached or cache-coherent");
m3n_debug_data.setDtsName("m3n_debug_data_region", "m3n-debug-data-memories");
ipg_extended_data      = MemSection("IPG_EXTENDED_DATA" , "", ipg_extended_data_addr, ipg_extended_data_size, "Memory for main mcu comms ipg data. MUST be non-cached or cache-coherent");
ipg_extended_data.setDtsName("ipg_extended_data_region", "ipg-extended-data-memories");
main_mcu_20ms_mem      = MemSection("MAIN_MCU_20MS_MEM" , "", main_mcu_20ms_mem_addr, main_mcu_20ms_mem_size, "Memory for main to mcu data shared memory. MUST be non-cached or cache-coherent");
main_mcu_20ms_mem.setDtsName("main_mcu_20ms_shared_region", "main-mcu-20ms-memories");
mcu_main_20ms_mem      = MemSection("MCU_MAIN_20MS_MEM" , "", mcu_main_20ms_mem_addr, mcu_main_20ms_mem_size, "Memory for mcu to main comms data shared memory. MUST be non-cached or cache-coherent");
mcu_main_20ms_mem.setDtsName("mcu_main_20ms_shared_region", "mcu-main-20ms-memories");
lpc_shared_mem         = MemSection("LPC_SHARED_MEM" , "", lpc_shared_mem_addr, lpc_shared_mem_size, "Memory for lpc shared memory. MUST be non-cached or cache-coherent");
lpc_shared_mem.setDtsName("lpc_shared_region", "lpc-shared-memories");
global_timer_mem       = MemSection("GLOBAL_TIMER_MEM" , "", global_timer_mem_addr, global_timer_mem_size, "Memory for global timer memory. MUST be non-cached or cache-coherent");
global_timer_mem.setDtsName("global_timer_shared_region", "global-timer-shared-memories");
vip_shared_buf_mem     = MemSection("VIP_SHARED_BUF_MEM" , "", vip_shared_buf_mem_addr, vip_shared_buf_mem_size, "Memory for vip shared buf memory. MUST be non-cached or cache-coherent");
vip_shared_buf_mem.setDtsName("vip_shared_region", "vip-shared-memories");
validate_info_mem      = MemSection("VALIDATE_INFO_MEM" , "", validate_info_mem_addr, validate_info_mem_size, "Memory for validate info memory. MUST be non-cached or cache-coherent");
validate_info_mem.setDtsName("validate_info_shared_region", "validate-info-shared-memories");
sensor_name_mem     = MemSection("SENSOR_NAME_MEM" , "", sensor_name_addr, sensor_name_size, "Memory for global sensor name shared buf memory. MUST be non-cached or cache-coherent");
sensor_name_mem.setDtsName("sensor_name_region", "sensor-name-memories");

app_fileio_mem        = MemSection("APP_FILEIO_MEM"        , "", app_fileio_mem_addr       , app_fileio_mem_size       , "Memory for remote core file operations");
tiovx_log_rt_mem     = MemSection("TIOVX_LOG_RT_MEM" , "", tiovx_log_rt_mem_addr, tiovx_log_rt_mem_size, "Memory for TI OpenVX shared memory for Run-time logging. MUST be non-cached or cache-coherent");

ipc_vring_mem      = MemSection("IPC_VRING_MEM"     , "", ipc_vring_mem_addr     , ipc_vring_mem_size     , "Memory for IPC Vring's. MUST be non-cached or cache-coherent");
ipc_vring_mem.setDtsName("vision_apps_rtos_ipc_memory_region", "vision-apps-rtos-ipc-memory-region");

vision_apps_ddr_total  = MemSection("DDR_VISION_APPS_DTS", "", 0                      , 0                      , "DDR for Vision Apps for all sections, used for reserving memory in DTS file");
vision_apps_ddr_total.concat(app_log_mem);
vision_apps_ddr_total.concat(tiovx_obj_desc_mem);
vision_apps_ddr_total.concat(m3n_debug_data);
vision_apps_ddr_total.concat(ipg_extended_data);
vision_apps_ddr_total.concat(main_mcu_20ms_mem);
vision_apps_ddr_total.concat(mcu_main_20ms_mem);
vision_apps_ddr_total.concat(lpc_shared_mem);
vision_apps_ddr_total.concat(global_timer_mem);
vision_apps_ddr_total.concat(vip_shared_buf_mem);
vision_apps_ddr_total.concat(validate_info_mem);
vision_apps_ddr_total.concat(sensor_name_mem);
vision_apps_ddr_total.concat(app_fileio_mem);
vision_apps_ddr_total.concat(tiovx_log_rt_mem);
vision_apps_ddr_total.setDtsName("vision_apps_memory_region", "vision-apps-dma-memory");

vision_apps_core_heaps_lo = MemSection("DDR_VISION_APPS_CORE_HEAPS_LO_DTS", "", 0, 0, "Vision Apps Core Heaps in 32bit address range of DDR");
vision_apps_core_heaps_lo.concat(mcu1_0_ddr_local_heap);
vision_apps_core_heaps_lo.concat(mcu2_0_ddr_local_heap);
vision_apps_core_heaps_lo.concat(mcu2_0_ddr_viss_config_heap);
vision_apps_core_heaps_lo.concat(mcu2_1_ddr_local_heap);
vision_apps_core_heaps_lo.concat(mcu3_0_ddr_local_heap);
vision_apps_core_heaps_lo.concat(mcu3_1_ddr_local_heap);
vision_apps_core_heaps_lo.setDtsName("vision_apps_core_heaps_lo", "vision-apps-core-heap-memory-lo");


c7x_1_ddr_local_heap_phy  = MemSection("DDR_C7X_1_LOCAL_HEAP", "RWIX", ddr_mem_addr_hi_phy, (c7x_1_ddr_scratch_size + c7x_1_ddr_local_heap_size + c7x_2_ddr_scratch_size + c7x_2_ddr_local_heap_size), "DDR for c7x_1, c7x_2 for scratch memory and local heap");

c7x_ddr_heaps_hi = MemSection("DDR_VISION_APPS_CORE_HEAPS_HI_DTS", "", 0, 0, "Vision Apps Core Heaps in 40bit address range of DDR");
c7x_ddr_heaps_hi.concat(c7x_1_ddr_local_heap_phy);
c7x_ddr_heaps_hi.setDtsName("c7x_ddr_heaps_hi", "c7x_ddr_heaps_hi-apps-core-heap-memory-hi");
c7x_ddr_heaps_hi.splitOrigin(True)

# this region should NOT have the "no-map" flag since we want ION to map this memory and do cache ops on it as needed
ddr_shared_mem     = MemSection("DDR_SHARED_MEM"    , "", ddr_shared_mem_addr    , ddr_shared_mem_size    , "Memory for shared memory buffers in DDR");
ddr_shared_mem_phys  = MemSection("DDR_SHARED_MEM_PHYS"    , "", ddr_shared_mem_addr_phys  , ddr_shared_mem_size    , "Physical address of memory for shared memory buffers in DDR");
ddr_shared_mem_phys.setDtsName("vision_apps_shared_region", "vision_apps_shared-memories");
ddr_shared_mem_phys.setCompatibility("dma-heap-carveout");
ddr_shared_mem_phys.setNoMap(False);
ddr_shared_mem_phys.setOriginTag(False);
ddr_shared_mem_phys.splitOrigin(True)

#
# Create CPU specific memory maps using memory sections created above
#

mcu1_0_mmap = MemoryMap("mcu1_0");
mcu1_0_mmap.addMemSection( mcu_r5f_tcma_vecs );
mcu1_0_mmap.addMemSection( mcu_r5f_tcma      );
mcu1_0_mmap.addMemSection( mcu_r5f_tcmb0_vecs   );
mcu1_0_mmap.addMemSection( mcu_r5f_tcmb0        );
mcu1_0_mmap.addMemSection( mcu1_0_ddr_ipc       );
mcu1_0_mmap.addMemSection( mcu1_0_ddr_resource_table  );
mcu1_0_mmap.addMemSection( mcu1_0_ddr           );
mcu1_0_mmap.addMemSection( app_log_mem          );
mcu1_0_mmap.addMemSection( tiovx_obj_desc_mem   );
mcu1_0_mmap.addMemSection( app_fileio_mem          );
mcu1_0_mmap.addMemSection( ipc_vring_mem        );
mcu1_0_mmap.addMemSection( mcu1_0_ddr_local_heap  );
mcu1_0_mmap.addMemSection( ddr_shared_mem       );
mcu1_0_mmap.addMemSection( lpc_shared_mem );
mcu1_0_mmap.addMemSection( global_timer_mem );
mcu1_0_mmap.addMemSection( vip_shared_buf_mem );
mcu1_0_mmap.addMemSection( validate_info_mem );
mcu1_0_mmap.addMemSection( m3n_debug_data );
mcu1_0_mmap.addMemSection( ipg_extended_data );
mcu1_0_mmap.addMemSection( main_mcu_20ms_mem );
mcu1_0_mmap.addMemSection( mcu_main_20ms_mem );

mcu1_0_mmap.checkOverlap();

mcu1_1_mmap = MemoryMap("mcu1_1");
mcu1_1_mmap.addMemSection( mcu_r5f_tcma_vecs );
mcu1_1_mmap.addMemSection( mcu_r5f_tcma      );
mcu1_1_mmap.addMemSection( mcu_r5f_tcmb0_vecs );
mcu1_1_mmap.addMemSection( mcu_r5f_tcmb0      );
mcu1_1_mmap.addMemSection( mcu1_1_ddr_ipc     );
mcu1_1_mmap.addMemSection( mcu1_1_ddr_resource_table  );
mcu1_1_mmap.addMemSection( mcu1_1_ddr         );
mcu1_1_mmap.addMemSection( app_log_mem        );
mcu1_1_mmap.addMemSection( tiovx_obj_desc_mem );
mcu1_1_mmap.addMemSection( app_fileio_mem        );
mcu1_1_mmap.addMemSection( ipc_vring_mem      );
mcu1_1_mmap.addMemSection( mcu1_1_ddr_local_heap  );
mcu1_1_mmap.addMemSection( ddr_shared_mem     );
mcu1_1_mmap.addMemSection( lpc_shared_mem );
mcu1_1_mmap.addMemSection( global_timer_mem );
mcu1_1_mmap.addMemSection( vip_shared_buf_mem );
mcu1_1_mmap.addMemSection( validate_info_mem );
mcu1_1_mmap.addMemSection( m3n_debug_data );
mcu1_1_mmap.addMemSection( ipg_extended_data );
mcu1_1_mmap.addMemSection( main_mcu_20ms_mem );
mcu1_1_mmap.addMemSection( mcu_main_20ms_mem );
mcu1_1_mmap.checkOverlap();


mcu2_0_mmap = MemoryMap("mcu2_0");
mcu2_0_mmap.addMemSection( mcu_r5f_tcma_vecs );
mcu2_0_mmap.addMemSection( mcu_r5f_tcma      );
mcu2_0_mmap.addMemSection( r5f_tcmb0          );
mcu2_0_mmap.addMemSection( mcu2_0_ddr_ipc     );
mcu2_0_mmap.addMemSection( mcu2_0_ddr_resource_table  );
mcu2_0_mmap.addMemSection( mcu2_0_ddr         );
mcu2_0_mmap.addMemSection( app_log_mem        );
mcu2_0_mmap.addMemSection( tiovx_obj_desc_mem );
mcu2_0_mmap.addMemSection( app_fileio_mem        );
mcu2_0_mmap.addMemSection( ipc_vring_mem      );
mcu2_0_mmap.addMemSection( mcu2_0_ddr_local_heap  );
mcu2_0_mmap.addMemSection( mcu2_0_ddr_viss_config_heap  );
mcu2_0_mmap.addMemSection( ddr_shared_mem     );
mcu2_0_mmap.addMemSection( mcu2_0_main_ocram );
mcu2_0_mmap.addMemSection( lpc_shared_mem );
mcu2_0_mmap.addMemSection( global_timer_mem );
mcu2_0_mmap.addMemSection( vip_shared_buf_mem );
mcu2_0_mmap.addMemSection( validate_info_mem );
mcu2_0_mmap.addMemSection( sensor_name_mem );
mcu2_0_mmap.addMemSection( m3n_debug_data );
mcu2_0_mmap.addMemSection( ipg_extended_data );
mcu2_0_mmap.addMemSection( main_mcu_20ms_mem );
mcu2_0_mmap.addMemSection( mcu_main_20ms_mem );
mcu2_0_mmap.checkOverlap();

mcu2_1_mmap = MemoryMap("mcu2_1");
mcu2_1_mmap.addMemSection( mcu_r5f_tcma_vecs );
mcu2_1_mmap.addMemSection( mcu_r5f_tcma      );
mcu2_1_mmap.addMemSection( r5f_tcmb0          );
mcu2_1_mmap.addMemSection( mcu2_1_ddr_ipc     );
mcu2_1_mmap.addMemSection( mcu2_1_ddr_resource_table  );
mcu2_1_mmap.addMemSection( mcu2_1_ddr         );
mcu2_1_mmap.addMemSection( app_log_mem        );
mcu2_1_mmap.addMemSection( tiovx_obj_desc_mem );
mcu2_1_mmap.addMemSection( app_fileio_mem        );
mcu2_1_mmap.addMemSection( ipc_vring_mem      );
mcu2_1_mmap.addMemSection( mcu2_1_ddr_local_heap  );
mcu2_1_mmap.addMemSection( lpc_shared_mem );
mcu2_1_mmap.addMemSection( global_timer_mem );
mcu2_1_mmap.addMemSection( vip_shared_buf_mem );
mcu2_1_mmap.addMemSection( validate_info_mem );
mcu2_1_mmap.addMemSection( sensor_name_mem );
mcu2_1_mmap.addMemSection( m3n_debug_data );
mcu2_1_mmap.addMemSection( ipg_extended_data );
mcu2_1_mmap.addMemSection( main_mcu_20ms_mem );
mcu2_1_mmap.addMemSection( mcu_main_20ms_mem );
mcu2_1_mmap.addMemSection( ddr_shared_mem     );
mcu2_1_mmap.addMemSection( mcu2_1_main_ocram );
mcu2_1_mmap.checkOverlap();

mcu3_0_mmap = MemoryMap("mcu3_0");
mcu3_0_mmap.addMemSection( mcu_r5f_tcma_vecs );
mcu3_0_mmap.addMemSection( mcu_r5f_tcma      );
mcu3_0_mmap.addMemSection( r5f_tcmb0          );
mcu3_0_mmap.addMemSection( mcu3_0_ddr_ipc     );
mcu3_0_mmap.addMemSection( mcu3_0_ddr_resource_table  );
mcu3_0_mmap.addMemSection( mcu3_0_ddr         );
mcu3_0_mmap.addMemSection( app_log_mem        );
mcu3_0_mmap.addMemSection( tiovx_obj_desc_mem );
mcu3_0_mmap.addMemSection( app_fileio_mem        );
mcu3_0_mmap.addMemSection( ipc_vring_mem      );
mcu3_0_mmap.addMemSection( mcu3_0_ddr_local_heap  );
mcu3_0_mmap.addMemSection( ddr_shared_mem     );
mcu3_0_mmap.addMemSection( lpc_shared_mem );
mcu3_0_mmap.addMemSection( global_timer_mem );
mcu3_0_mmap.addMemSection( vip_shared_buf_mem );
mcu3_0_mmap.addMemSection( validate_info_mem );
mcu3_0_mmap.addMemSection( m3n_debug_data );
mcu3_0_mmap.addMemSection( ipg_extended_data );
mcu3_0_mmap.addMemSection( main_mcu_20ms_mem );
mcu3_0_mmap.addMemSection( mcu_main_20ms_mem );
mcu3_0_mmap.checkOverlap();

mcu3_1_mmap = MemoryMap("mcu3_1");
mcu3_1_mmap.addMemSection( mcu_r5f_tcma_vecs );
mcu3_1_mmap.addMemSection( mcu_r5f_tcma      );
mcu3_1_mmap.addMemSection( r5f_tcmb0          );
mcu3_1_mmap.addMemSection( mcu3_1_ddr_ipc     );
mcu3_1_mmap.addMemSection( mcu3_1_ddr_resource_table  );
mcu3_1_mmap.addMemSection( mcu3_1_ddr         );
mcu3_1_mmap.addMemSection( app_log_mem        );
mcu3_1_mmap.addMemSection( tiovx_obj_desc_mem );
mcu3_1_mmap.addMemSection( app_fileio_mem        );
mcu3_1_mmap.addMemSection( ipc_vring_mem      );
mcu3_1_mmap.addMemSection( mcu3_1_ddr_local_heap  );
mcu3_1_mmap.addMemSection( ddr_shared_mem     );
mcu3_1_mmap.addMemSection( lpc_shared_mem );
mcu3_1_mmap.addMemSection( global_timer_mem );
mcu3_1_mmap.addMemSection( vip_shared_buf_mem );
mcu3_1_mmap.addMemSection( validate_info_mem );
mcu3_1_mmap.addMemSection( m3n_debug_data );
mcu3_1_mmap.addMemSection( ipg_extended_data );
mcu3_1_mmap.addMemSection( main_mcu_20ms_mem );
mcu3_1_mmap.addMemSection( mcu_main_20ms_mem );
mcu3_1_mmap.checkOverlap();

c7x_1_mmap = MemoryMap("c7x_1");
c7x_1_mmap.addMemSection( c7x_1_l2           );
c7x_1_mmap.addMemSection( c7x_1_l1           );
c7x_1_mmap.addMemSection( c7x_1_msmc         );
c7x_1_mmap.addMemSection( c7x_1_ddr_ipc      );
c7x_1_mmap.addMemSection( c7x_1_ddr_resource_table      );
c7x_1_mmap.addMemSection( c7x_1_ddr_boot     );
c7x_1_mmap.addMemSection( c7x_1_ddr_vecs     );
c7x_1_mmap.addMemSection( c7x_1_ddr_secure_vecs     );
c7x_1_mmap.addMemSection( c7x_1_ddr          );
c7x_1_mmap.addMemSection( app_log_mem        );
c7x_1_mmap.addMemSection( tiovx_obj_desc_mem );
c7x_1_mmap.addMemSection( app_fileio_mem        );
c7x_1_mmap.addMemSection( ipc_vring_mem      );
c7x_1_mmap.addMemSection( c7x_1_ddr_local_heap  );
c7x_1_mmap.addMemSection( c7x_1_ddr_scratch  );
c7x_1_mmap.addMemSection( ddr_shared_mem     );
c7x_1_mmap.addMemSection( lpc_shared_mem );
c7x_1_mmap.addMemSection( global_timer_mem );
c7x_1_mmap.addMemSection( vip_shared_buf_mem );
c7x_1_mmap.addMemSection( validate_info_mem );
c7x_1_mmap.addMemSection( sensor_name_mem );
c7x_1_mmap.addMemSection( m3n_debug_data );
c7x_1_mmap.addMemSection( ipg_extended_data );
c7x_1_mmap.addMemSection( main_mcu_20ms_mem );
c7x_1_mmap.addMemSection( mcu_main_20ms_mem );
c7x_1_mmap.checkOverlap();

c7x_2_mmap = MemoryMap("c7x_2");
c7x_2_mmap.addMemSection( c7x_2_l2           );
c7x_2_mmap.addMemSection( c7x_2_l1           );
c7x_2_mmap.addMemSection( c7x_2_ddr_ipc      );
c7x_2_mmap.addMemSection( c7x_2_ddr_resource_table      );
c7x_2_mmap.addMemSection( c7x_2_ddr_boot     );
c7x_2_mmap.addMemSection( c7x_2_ddr_vecs     );
c7x_2_mmap.addMemSection( c7x_2_ddr_secure_vecs     );
c7x_2_mmap.addMemSection( c7x_2_ddr          );
c7x_2_mmap.addMemSection( app_log_mem        );
c7x_2_mmap.addMemSection( tiovx_obj_desc_mem );
c7x_2_mmap.addMemSection( app_fileio_mem        );
c7x_2_mmap.addMemSection( ipc_vring_mem      );
c7x_2_mmap.addMemSection( c7x_2_ddr_local_heap  );
c7x_2_mmap.addMemSection( c7x_2_ddr_scratch  );
c7x_2_mmap.addMemSection( ddr_shared_mem     );
c7x_2_mmap.addMemSection( lpc_shared_mem );
c7x_2_mmap.addMemSection( global_timer_mem );
c7x_2_mmap.addMemSection( vip_shared_buf_mem );
c7x_2_mmap.addMemSection( validate_info_mem );
c7x_2_mmap.addMemSection( sensor_name_mem );
c7x_2_mmap.addMemSection( m3n_debug_data );
c7x_2_mmap.addMemSection( ipg_extended_data );
c7x_2_mmap.addMemSection( main_mcu_20ms_mem );
c7x_2_mmap.addMemSection( mcu_main_20ms_mem );
c7x_2_mmap.checkOverlap();

html_mmap = MemoryMap("System Memory Map for Linux+RTOS mode");
html_mmap.addMemSection( c7x_1_l2           );
html_mmap.addMemSection( c7x_1_l1           );
html_mmap.addMemSection( c7x_2_l2           );
html_mmap.addMemSection( c7x_2_l1           );
html_mmap.addMemSection( mpu1_msmc          );
html_mmap.addMemSection( c7x_1_msmc         );
html_mmap.addMemSection( dmsc_msmc          );
html_mmap.addMemSection( mcu1_0_ddr_ipc     );
html_mmap.addMemSection( mcu1_0_ddr_resource_table      );
html_mmap.addMemSection( mcu1_0_ddr         );
html_mmap.addMemSection( mcu1_0_ddr_local_heap );
html_mmap.addMemSection( mcu1_1_ddr_ipc     );
html_mmap.addMemSection( mcu1_1_ddr_resource_table      );
html_mmap.addMemSection( mcu1_1_ddr         );
html_mmap.addMemSection( mcu1_1_ddr_local_heap );
html_mmap.addMemSection( mcu2_0_ddr_ipc     );
html_mmap.addMemSection( mcu2_0_ddr_resource_table      );
html_mmap.addMemSection( mcu2_0_ddr         );
html_mmap.addMemSection( mcu2_0_ddr_local_heap );
html_mmap.addMemSection( mcu2_0_ddr_viss_config_heap );
html_mmap.addMemSection( mcu2_1_ddr_ipc     );
html_mmap.addMemSection( mcu2_1_ddr_resource_table      );
html_mmap.addMemSection( mcu2_1_ddr         );
html_mmap.addMemSection( mcu2_1_ddr_local_heap );
html_mmap.addMemSection( mcu3_0_ddr_ipc     );
html_mmap.addMemSection( mcu3_0_ddr_resource_table      );
html_mmap.addMemSection( mcu3_0_ddr         );
html_mmap.addMemSection( mcu3_0_ddr_local_heap );
html_mmap.addMemSection( mcu3_1_ddr_ipc     );
html_mmap.addMemSection( mcu3_1_ddr_resource_table      );
html_mmap.addMemSection( mcu3_1_ddr         );
html_mmap.addMemSection( mcu3_1_ddr_local_heap );
html_mmap.addMemSection( c7x_1_ddr_ipc     );
html_mmap.addMemSection( c7x_1_ddr_resource_table     );
html_mmap.addMemSection( c7x_1_ddr_boot    );
html_mmap.addMemSection( c7x_1_ddr_vecs    );
html_mmap.addMemSection( c7x_1_ddr_secure_vecs    );
html_mmap.addMemSection( c7x_1_ddr_local_heap         );
html_mmap.addMemSection( c7x_1_ddr_scratch );
html_mmap.addMemSection( c7x_1_ddr         );
html_mmap.addMemSection( c7x_2_ddr_ipc     );
html_mmap.addMemSection( c7x_2_ddr_resource_table     );
html_mmap.addMemSection( c7x_2_ddr_boot    );
html_mmap.addMemSection( c7x_2_ddr_vecs    );
html_mmap.addMemSection( c7x_2_ddr_secure_vecs    );
html_mmap.addMemSection( c7x_2_ddr_local_heap         );
html_mmap.addMemSection( c7x_2_ddr_scratch );
html_mmap.addMemSection( c7x_2_ddr         );
html_mmap.addMemSection( app_log_mem        );
html_mmap.addMemSection( tiovx_obj_desc_mem );
html_mmap.addMemSection( app_fileio_mem        );
html_mmap.addMemSection( ipc_vring_mem      );
html_mmap.addMemSection( ddr_shared_mem     );
html_mmap.addMemSection( tiovx_log_rt_mem );
html_mmap.addMemSection( mcu2_0_main_ocram );
html_mmap.addMemSection( mcu2_1_main_ocram );
html_mmap.addMemSection( lpc_shared_mem );
html_mmap.addMemSection( global_timer_mem );
html_mmap.addMemSection( vip_shared_buf_mem );
html_mmap.addMemSection( validate_info_mem );
html_mmap.addMemSection( sensor_name_mem );
html_mmap.addMemSection( m3n_debug_data );
html_mmap.addMemSection( ipg_extended_data );
html_mmap.addMemSection( main_mcu_20ms_mem );
html_mmap.addMemSection( mcu_main_20ms_mem );
html_mmap.checkOverlap();

c_header_mmap = MemoryMap("Memory Map for C header file");
c_header_mmap.addMemSection( c7x_1_l2           );
c_header_mmap.addMemSection( c7x_1_l1           );
c_header_mmap.addMemSection( c7x_1_msmc         );
c_header_mmap.addMemSection( c7x_2_l2           );
c_header_mmap.addMemSection( c7x_2_l1           );
c_header_mmap.addMemSection( mcu1_0_ddr_ipc     );
c_header_mmap.addMemSection( mcu1_1_ddr_ipc     );
c_header_mmap.addMemSection( mcu2_0_ddr_ipc     );
c_header_mmap.addMemSection( mcu2_1_ddr_ipc     );
c_header_mmap.addMemSection( mcu3_0_ddr_ipc     );
c_header_mmap.addMemSection( mcu3_1_ddr_ipc     );
c_header_mmap.addMemSection( c7x_1_ddr_ipc     );
c_header_mmap.addMemSection( c7x_2_ddr_ipc     );
c_header_mmap.addMemSection( mcu1_0_ddr_total     );
c_header_mmap.addMemSection( mcu1_1_ddr_total     );
c_header_mmap.addMemSection( mcu2_0_ddr_total     );
c_header_mmap.addMemSection( mcu2_1_ddr_total     );
c_header_mmap.addMemSection( mcu3_0_ddr_total     );
c_header_mmap.addMemSection( mcu3_1_ddr_total     );
c_header_mmap.addMemSection( c7x_1_ddr_total     );
c_header_mmap.addMemSection( c7x_2_ddr_total     );

c_header_mmap.addMemSection( mcu1_0_ddr_local_heap);
c_header_mmap.addMemSection( mcu1_1_ddr_local_heap);
c_header_mmap.addMemSection( mcu2_0_ddr_local_heap);
c_header_mmap.addMemSection( mcu2_0_ddr_viss_config_heap);
c_header_mmap.addMemSection( mcu2_1_ddr_local_heap);
c_header_mmap.addMemSection( mcu3_0_ddr_local_heap);
c_header_mmap.addMemSection( mcu3_1_ddr_local_heap);
c_header_mmap.addMemSection( c7x_1_ddr_local_heap);
c_header_mmap.addMemSection( c7x_1_ddr_scratch);
c_header_mmap.addMemSection( c7x_2_ddr_local_heap);
c_header_mmap.addMemSection( c7x_2_ddr_scratch);
c_header_mmap.addMemSection( tiovx_log_rt_mem );
c_header_mmap.addMemSection( app_log_mem        );
c_header_mmap.addMemSection( tiovx_obj_desc_mem );
c_header_mmap.addMemSection( app_fileio_mem        );
c_header_mmap.addMemSection( ipc_vring_mem      );
c_header_mmap.addMemSection( ddr_shared_mem     );
c_header_mmap.addMemSection( ddr_shared_mem_phys     );
c_header_mmap.addMemSection( c7x_1_msmc         );
c_header_mmap.addMemSection( mcu2_0_main_ocram  );
c_header_mmap.addMemSection( mcu2_1_main_ocram  );
c_header_mmap.addMemSection( mcu2_0_main_ocram_phys  );
c_header_mmap.addMemSection( mcu2_1_main_ocram_phys  );
c_header_mmap.addMemSection( lpc_shared_mem );
c_header_mmap.addMemSection( global_timer_mem );
c_header_mmap.addMemSection( vip_shared_buf_mem );
c_header_mmap.addMemSection( validate_info_mem );
c_header_mmap.addMemSection( sensor_name_mem );
c_header_mmap.addMemSection( m3n_debug_data );
c_header_mmap.addMemSection( ipg_extended_data );
c_header_mmap.addMemSection( main_mcu_20ms_mem );
c_header_mmap.addMemSection( mcu_main_20ms_mem );
c_header_mmap.checkOverlap();

dts_mmap = MemoryMap("Memory Map for Linux kernel dts/dtsi file");
dts_mmap.addMemSection( mcu1_0_ddr_ipc     );
dts_mmap.addMemSection( mcu1_0_ddr_total   );
dts_mmap.addMemSection( mcu1_1_ddr_ipc     );
dts_mmap.addMemSection( mcu1_1_ddr_total   );
dts_mmap.addMemSection( mcu2_0_ddr_ipc     );
dts_mmap.addMemSection( mcu2_0_ddr_total   );
dts_mmap.addMemSection( mcu2_1_ddr_ipc     );
dts_mmap.addMemSection( mcu2_1_ddr_total   );
dts_mmap.addMemSection( mcu3_0_ddr_ipc     );
dts_mmap.addMemSection( mcu3_0_ddr_total   );
dts_mmap.addMemSection( mcu3_1_ddr_ipc     );
dts_mmap.addMemSection( mcu3_1_ddr_total   );
dts_mmap.addMemSection( c7x_1_ddr_ipc      );
dts_mmap.addMemSection( c7x_1_ddr_total    );
dts_mmap.addMemSection( c7x_2_ddr_ipc      );
dts_mmap.addMemSection( c7x_2_ddr_total    );
dts_mmap.addMemSection( vision_apps_ddr_total );
dts_mmap.addMemSection( ipc_vring_mem      );
dts_mmap.addMemSection( vision_apps_core_heaps_lo );
dts_mmap.addMemSection( c7x_ddr_heaps_hi );
dts_mmap.addMemSection( ddr_shared_mem_phys );
# dts_mmap.addMemSection( lpc_shared_mem );
# dts_mmap.addMemSection( global_timer_mem );
# dts_mmap.addMemSection( vip_shared_buf_mem );
# dts_mmap.addMemSection( validate_info_mem );
# dts_mmap.addMemSection( sensor_name_mem );
# dts_mmap.addMemSection( m3n_debug_data );
# dts_mmap.addMemSection( ipg_extended_data );
# dts_mmap.addMemSection( main_mcu_20ms_mem );
# dts_mmap.addMemSection( mcu_main_20ms_mem );
dts_mmap.checkOverlap();

#
# Generate linker command files containing "MEMORY" definitions
#
LinkerCmdFile(c7x_1_mmap , "./c7x_1/linker_mem_map.cmd" ).export();
LinkerCmdFile(c7x_2_mmap , "./c7x_2/linker_mem_map.cmd" ).export();
LinkerCmdFile(mcu1_0_mmap, "./mcu1_0/linker_mem_map.cmd").export();
LinkerCmdFile(mcu1_1_mmap, "./mcu1_1/linker_mem_map.cmd").export();
LinkerCmdFile(mcu2_0_mmap, "./mcu2_0/linker_mem_map.cmd").export();
LinkerCmdFile(mcu2_1_mmap, "./mcu2_1/linker_mem_map.cmd").export();
LinkerCmdFile(mcu3_0_mmap, "./mcu3_0/linker_mem_map.cmd").export();
LinkerCmdFile(mcu3_1_mmap, "./mcu3_1/linker_mem_map.cmd").export();

HtmlMmapTable(html_mmap, "./system_memory_map.html").export();

CHeaderFile(c_header_mmap, 0x880000000, 0x100000000, "./app_mem_map.h").export();

DtsFile(dts_mmap, "./k3-j721s2-rtos-memory-map.dtsi").export();

2. HW Change

DDR is 4GB

generated by the Jacinto7_DDRSS_RegConfigTool, Revision: 0.9.1

7318.board_ddrRegInit.h