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.

IWR1642: Linker Command

Part Number: IWR1642
Other Parts Discussed in Thread: CCSTUDIO

Hi,

I gone through c674x_linker.cmd and dss_mmw_linker.cmd file for understanding memory allocation in IWR1642 high accuracy demo.

Line 23 of dss_mmw_linker.cmd file is:  .l3data: type=NOINIT, start(_L3data_start), size(_L3data_size), load=L3SRAM PAGE 1

I wanted to know what are the values of _L3data_start and _L3data_size in above command. Can I change the values?

Thanks,

Akshay

  • Hi Akshay,

    This information is found the .map file in the Debug folder when you compile the lab in CCSTUDIO.

    Cheers,

    Akash

  • Hi,

    Thanks, I found values. 

    How could I modify these values (Is it possible)? Which file compiler refer for the value?

    If I change value in .map file, value changes will be overwritten after compilation and will not reflect in .bin file.

    Thanks,

    Akshay

  • Hi Akshay,

     This needs to be performed at code level. The .map file simply shows the byte-per-byte allocation of memory. You can see what specific data segments are allocated in the bottom section of the .map file.

    Cheers,

    Akash

  • The L3data_start are created by the linking process itself, based on the amount of data that is being directed in the .l3data section by the demo. They can be used in the code to initialize this date if needed. So they are an output of the linking process, they are not an input to the linker. It is related to the overlaying of code with data, some explanation of this is in the SDK 2.1 UG, the high accuracy demo is probably carrying some of the code from the SDK's oob demo, see the comments near the lines, quoting from demo .cmd file :

    /* L3SRAM has code that is overlaid with data, so data must be
    marked uninitialized. Application can initialize this section
    using _L3data_* symbols defined below. Code should be written carefully as
    these are linker symbols (see for example e2e.ti.com/.../92002 ):

    extern far uint8_t _L3data_start; // the type here does not matter
    extern far uint8_t _L3data_size; // the type here does not matter

    memset((void *)_symval(&_L3data_start), 0, (uint32_t) _symval(&_L3data_size));
    */
    .l3data: type=NOINIT, start(_L3data_start), size(_L3data_size), load=L3SRAM PAGE 1

  • .map files are information files generated by the linker during the linking process. You need to learn compiler/linker basics. You can read by opening the UGs for compiler and assembler at http://www.ti.com/tool/TI-CGT [this link can be reached indirectly from the ReadMe.txt in your compiler installation], there is also a link named "linker command file primer" in this link which may be useful.

  • Hi,

    Sorry for delayed response.

    As explained in Technical reference manual, the available DSS_L3 memory is 768K bytes. Some banks in the L3 shared memory are reserved (not available) or dedicated to the DSP, and the remaining memory can be shared between DSP and the Master Cortex-R4F at 128Kbyte granularity.

    Linker manages where shared data is stored and where data dedicated to DSP is stored?

    Regards,

    Akshay