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.

CCS: Redefinition of _Ramfuncs_xxxx when beginning from scratch

Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE

Tool/software: Code Composer Studio

Hello there,

when i start a CCS project from scratch and select for the .cmd file <automatic> in the project wizard, i get a .cmd file, that contains areas for the _Ramfuncs_xxxx twice.
Can someone explain the difference of the to regions to me? I have noticed the #ifdefs but i don´t get the purpose.
I know the use of the .cmd file an the SECTION part.

   /* Allocate program areas: */
   .cinit              : > FLASHB      PAGE = 0, ALIGN(4)
   .pinit              : > FLASHB,     PAGE = 0, ALIGN(4)
   .text               : >> FLASHB | FLASHC | FLASHD | FLASHE      PAGE = 0, ALIGN(4)
   codestart           : > BEGIN       PAGE = 0, ALIGN(4)
   ramfuncs            : LOAD = FLASHD,
                         RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3,
                         LOAD_START(_RamfuncsLoadStart),
                         LOAD_SIZE(_RamfuncsLoadSize),
                         LOAD_END(_RamfuncsLoadEnd),
                         RUN_START(_RamfuncsRunStart),
                         RUN_SIZE(_RamfuncsRunSize),
                         RUN_END(_RamfuncsRunEnd),
                         PAGE = 0, ALIGN(4)

#ifdef __TI_COMPILER_VERSION__
   #if __TI_COMPILER_VERSION__ >= 15009000
    .TI.ramfunc : {} LOAD = FLASHD,
                         RUN = RAMLS0 | RAMLS1 | RAMLS2 |RAMLS3,
                         LOAD_START(_RamfuncsLoadStart),
                         LOAD_SIZE(_RamfuncsLoadSize),
                         LOAD_END(_RamfuncsLoadEnd),
                         RUN_START(_RamfuncsRunStart),
                         RUN_SIZE(_RamfuncsRunSize),
                         RUN_END(_RamfuncsRunEnd),
                         PAGE = 0, ALIGN(4)
   #endif
#endif

best regards,
Jasson

  • Please take a look at this wiki page for some background on how and when the .TI.ramfunc section is generated:
    http://processors.wiki.ti.com/index.php/Placing_functions_in_RAM

    This was a new feature introduced in version 15.9.0 of the compiler tools, hence the #if specification in the linker command file. Prior versions of the tools used the ramfuncs section instead. 

    Also you appear to be using an older version of the linker command file before it included an else-statement to handle either section naming.  Which version of CCS are you using? CCS 7.1 should include the latest/updated linker command files and also the latest ControlSuite and C2000Ware software packages should have the updated files as well.