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.

TMS320F28377S: CMD file: Combining .TI.ramfunc and ramfuncs

Genius 5910 points

Part Number: TMS320F28377S
Other Parts Discussed in Thread: C2000WARE

Hi,

How do I combine .TI.ramfunc  and  ramfuncs?

Please don't put me off with the general information on the wiki page.

I trried all the combination of this:

   ramfuncs        : LOAD = FLASHcode,
                      RUN = RAMDfunct,
                      LOAD_START(_RamfuncsLoadStart),
                      LOAD_SIZE(_RamfuncsLoadSize),
                      LOAD_END(_RamfuncsLoadEnd),
                      RUN_START(_RamfuncsRunStart),
                      RUN_SIZE(_RamfuncsRunSize),
                      RUN_END(_RamfuncsRunEnd),
                      PAGE = 0, ALIGN(4)
     .TI.ramfunc        : ramfuncs 

But with no luck. So how do I combine them so that RamfuncsLoadSize and _RamfuncsLoadStart etc cover both sections?

Thanks.

Yes I already found all the wiki pages for cmd files.

  • EVS,

    .TI.ramfunc replace ramfuncs in the linker command file when using compiler v15.9.0.0 and above. If you want more information on how to use .TI.ramfunc vs ramfuncs please see the flash examples for the F2837xS in C2000Ware. Pay attention to the linker command files on how to create .TI.ramfunc sections and when to use them.

    Regards,
    Ozino
  • Ozino Odharo said:
    EVS,

    .TI.ramfunc replace ramfuncs in the linker command file when using compiler v15.9.0.0 and above. If you want more information on how to use .TI.ramfunc vs ramfuncs please see the flash examples for the F2837xS in C2000Ware. Pay attention to the linker command files on how to create .TI.ramfunc sections and when to use them.

    Regards,
    Ozino

    Ozine,

    Can you explain to me where the difference are. I don't see it!  I only see the need for brandname placement.


    #ifdef __TI_COMPILER_VERSION__
        #if __TI_COMPILER_VERSION__ >= 15009000
            GROUP
            {
                .TI.ramfunc
                { -l F021_API_F2837xS_FPU32.lib}
             
            } LOAD = FLASHD,
              RUN  = RAMLS03,
              LOAD_START(_RamfuncsLoadStart),
              LOAD_SIZE(_RamfuncsLoadSize),
              LOAD_END(_RamfuncsLoadEnd),
              RUN_START(_RamfuncsRunStart),
              RUN_SIZE(_RamfuncsRunSize),
              RUN_END(_RamfuncsRunEnd),
              PAGE = 0    
        #else
            GROUP
            {
                ramfuncs
                { -l F021_API_F2837xS_FPU32.lib}
             
            } LOAD = FLASHD,
              RUN  = RAMLS03,
              LOAD_START(_RamfuncsLoadStart),
              LOAD_SIZE(_RamfuncsLoadSize),
              LOAD_END(_RamfuncsLoadEnd),
              RUN_START(_RamfuncsRunStart),
              RUN_SIZE(_RamfuncsRunSize),
              RUN_END(_RamfuncsRunEnd),
              PAGE = 0    
        #endif
    #endif

    Thanks,

     EVS

  • Evs,

    The difference is at the beginning where it specficies which flash configuration to use based on the project's compiler version.
    There was an update in the compilers that requires a name change if the compiler version is greater than v15.0.9.0. The blocks of code both work the same but it relies on the linker section naming and pragmas in code to be aligned. No obvious change besides change in the name.

    That is the only difference, everything else is the same. One just has to change the ramfunc name based on the compiler version.

    Here is another forum question with the same question: e2e.ti.com/.../594577

    The flash examples in C2000Ware should have an example of the updated section name and pragmas in code.

    processors.wiki.ti.com/.../Placing_functions_in_RAM

    Regards,
    Ozino