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.

I changed my project output format to eabi and now I get errors on RamfuncsRunStart and friends

Other Parts Discussed in Thread: C2000WARE

These variables are referenced in a hadware_init.c file that I inherited from MotorControlSDK (no longer in use) like this    

memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t) &RamfuncsLoadSize);

If I comment that line out, the code compiles and links but I endup in a situation with no debugging symbols and 

machine code ESTOP.

I suspect this maybe related to this section I have in my .cmd file:

.TI.ramfunc      :
   		{
		-l driverlib/f28004x/driverlib/ccs/Release/driverlib.lib<spi.obj>,
		-l driverlib/f28004x/driverlib/ccs/Release/driverlib.lib<interrupt.obj>
		}
   					  LOAD = FLASHB0_SA,
                      RUN = RAMLS4_7,
                      LOAD_START(_RamfuncsLoadStart),
                      LOAD_SIZE(_RamfuncsLoadSize),
                      LOAD_END(_RamfuncsLoadEnd),
                      RUN_START(_RamfuncsRunStart),
                      RUN_SIZE(_RamfuncsRunSize),
                      RUN_END(_RamfuncsRunEnd),
                      PAGE = 0, ALIGN(4)

But I'm not sure how to proceed.

  • When building for EABI, the compiler does not prepend an underscore to symbol names like RamfuncsRunStart.  It appears without the leading underscore in every context, including linker command files.  For further information, please see the No Leading Underscores part of the larger article C2000 Migration from COFF to EABI.

    Here is an example of what that looks like.  These lines are from a linker command file in C2000Ware.

       #if defined(__TI_EABI__)
           .TI.ramfunc : {} LOAD = FLASH3,
                            RUN = RAMD0,
                            LOAD_START(RamfuncsLoadStart),
                            LOAD_SIZE(RamfuncsLoadSize),
                            LOAD_END(RamfuncsLoadEnd),
                            RUN_START(RamfuncsRunStart),
                            RUN_SIZE(RamfuncsRunSize),
                            RUN_END(RamfuncsRunEnd),
                            ALIGN(8)
       #else
           .TI.ramfunc : {} LOAD = FLASH3,
                            RUN = RAMD0,
                            LOAD_START(_RamfuncsLoadStart),
                            LOAD_SIZE(_RamfuncsLoadSize),
                            LOAD_END(_RamfuncsLoadEnd),
                            RUN_START(_RamfuncsRunStart),
                            RUN_SIZE(_RamfuncsRunSize),
                            RUN_END(_RamfuncsRunEnd),
                            ALIGN(8)
       #endif
    

    Thanks and regards,

    -George

  • Thanks! This solved the issue. I had read the relevant documentation and about this issue too, but it did not 'click'. :)