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.

TMS320F28027: Missing symbol "codestart"

Part Number: TMS320F28027
Other Parts Discussed in Thread: C2000WARE

I have a new project copied from an existing project.   The new project does not run from Flash without the debugger connected.  One difference that I am focused on right now is that the old project has a "codestart" symbol shown in the map file.  The new project is missing codestart.

How do I properly configure project settings, etc., so that it starts up from Flash without the debugger connected?


Some background on what I have looked at so far:

For the new project, I am using c2000ware\device_support\f2802x\common\ccs\Debug\driverlib.lib

Using nm2000 to show the symbol table, this copy of driverlib.lib has a codestart symbol.  As I said, it is not showing up in the map file for the project.

The project configuration between old and new projects is the same.  It is possible that I am missing some setting.  

(I do not have all of the build files for the old project so I am not able to build it.  I am told it is working standalone)

From the sample project Example_F2802xLEDBlink, I see a setting for specifying entry point, where that sample project has this set to code_start.  I made the same setting in my project, then I get an error:

Description Resource Path Location Type
unresolved symbol _c_int00, first referenced in C:/ti/c2000/C2000Ware_MotorControl_SDK_4_02_00_00/c2000ware/device_support/f2802x/common/ccs/Debug/driverlib.lib<f2802xx_codestartbranch.obj> TitanCube_Ctrl_PC C/C++ Problem

I saw that Example_F2802xLEDBlink includes  "rts2800_ml.lib" under the Linker "File Search Path"

I added "rts2800_ml.lib".  Then I get a warning:

Description Resource Path Location Type
entry-point symbol other than "_c_int00" specified: "code_start" TitanCube_Ctrl_PC C/C++ Problem

The new project runs with the debugger, and now without the debugger.

 

If I remove the "code_start" now, the warning goes away, but the project no longer runs from Flash.

So adding code_start back into the linker settings, it seems I have a solution, but why do I get the warning?  What is the "right way" to do this?

Thanks!

  • Mark,

    The warning can be ignored safely here, from my understanding this is underlying base compiler type warning to make sure the user is aware that the entry point is not the standard one and they are OK with that(and in this case we are). 

    Because the code will be ran on an embedded system all the different boot modes(in your case Flash) have a individual dedicated entry point defined in memory that the MCU will call on XRSn de-assertion. 

    To avoid size restrictions on the code that would be placed there we place a branch to the c_int00 at these locations using the code_start label that you have observed.  Then the c_int00 can be placed in the same .text area as the rest of the code where there are less restrictions on code size, etc.

    The reason that this "works" with the debug probe connected, is that CCS has some default options checked to go to "main" on its own, w/o following the boot flow that exists in a standalone system.  These can be disabled, and you would start to see the behavior match between debug and standalone modes in this case. 

    If you want to see what's going on under the hood so to speak, after you do a code load with CCS, you can then issue a manual "Reset" from the run menu which will force a jump to initial reset vector itself.  You should then be able to step through the code to observe the above; eventually landing back at your "main" function.

    Let me know if you have further questions, will be happy to help.

    Best regards,

    Matthew