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.

How to specify starting address of a section in DDR3

Hi

In my cfg file, I have many sections placed in DDR3 using the statement Program.sectMap["systemHeap"] = "DDR3";

Please let me know how to place these section(s) from a specific start address of DDR3 and not frm base address i.e.0x80000000.

regards

Soumya

  • Hi Soumya,

    You can do this by creating a new platform with different external memory spaces, to do this go to CCS Debug perspective and:

    menu Tools -> RTSC Tools -> Platform -> New

    Brows for your platfotm repository, something like C:\ti\xdctools_3_22_04_46\packages and choose your device

    In the next screen Import the default platform that will configure the memories, now in the External Memory section you can add new Rows (right click in a empty row) and define the sections that you want. Then choose where to place the data/code and you can use the new sections as would use the others.

    Hope this is what you're looking for.

    Regards

  • Soumya,

    You can specify hard addresses only for memory sections, not for output sections placed in memory section. So, we typically create a memory section at a hard address and then place just one output section there. You can do this in two ways. One way is described in the previous post by Johannes. Another way is to use a platform instance in your config.bld script. I find the second way easier because it requires less work and you can update addresses more easily.

    You do this by specifying the 'externalMemoryMap' property of a platform instance. You then use the platform instance as your platform name in your configuro command. The following block of code will creates a platform instance with a special section and one for program code and data.

    Build.platformTable["ti.platforms.evmTI813X:video"] = {
        externalMemoryMap: [
            [ "SPECIAL", {
                name: "SPECIAL", space: "code/data", access: "RWX",
                base: 0x8FA00000, len: 0x200000,
                comment: "special section (2 MB)"
            }],
            [ "VIDEO_PROG", {
                name: "VIDEO_PROG", space: "code/data", access: "RWX",
                base: 0x8FC00000, len: 0x200000,
                comment: "VIDEO Program Memory (2 MB)"
            }]
        ],
        codeMemory:  "VIDEO_PROG",
        dataMemory:  "VIDEO_PROG",
        stackMemory: "VIDEO_PROG"
    };

    The following makefile rule invokes the confiuro command with the platform instance name from above.

    configuro/linker.cmd: Video.cfg ../shared/config.bld
     @$(ECHO) "#"
     @$(ECHO) "# Making $@ ..."
     $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))" \
                xdc.tools.configuro -o configuro \
                -t ti.targets.arm.elf.M3 -c $(CGT_M3_ELF_INSTALL_DIR) \
                -p ti.platforms.evmTI813X:video -b ../shared/config.bld \
                -r release --cfgArgs "{ configBld: \"../shared/config.bld\" }" \
                Video.cfg

    I've attached the complete config.bld script for your inspection.

    ~Ramsey

    config.bld