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.

TMS320F28379D: using ramfuncs vs ti.ramfuncs error

Part Number: TMS320F28379D
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE

hello, I am using a modified version of the code from lab3 which can be downloaded here: 

I wanted to run the code from flash and successfully have succeeded in doing so but I am a little confused by this section in the Flash_linker command file:

#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


Basically, If I run the code as is, it doesnt work, I need to bypass the #if __TI_COMPILER_VERSION__ >= 15009000 such that my code uses 'ramfuncs' as the section instead.

I also used a similar bypass in my .c file:

#ifdef __TI_COMPILER_VERSION__
#if __TI_COMPILER_VERSION__ >= 15009000
#define ramFuncSection "ramfuncs"
// #define ramFuncSection ".TI.ramfunc"  - not being used
#else
#define ramFuncSection "ramfuncs"
#endif
#endif

Basically, the default code would have me believe that I need to use .TI.ramfunc  instead of ramfuncs based on my compiler version however I could only get it to work by using ramfuncs. If anyone could help shed some light on this that would be much appreciated.

  • Jake

    With the newer compiler, we are using a newer naming for the ram function section, ".TI.ramfunc". Technically either should work, but it relies on both the linker section naming and the pragmas used within the code to be aligned. You look to be using a linker before it got fixed to include an else-statement to handle either naming. The latest collateral in C2000Ware and controlSUITE is setup to handle either.

    If you switched any references within code from ramfuncs to .TI.ramfunc it should work with .TI.ramfunc too.

    Best regards
    Chris