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.

TMS320F280049C: Missing section specification

Part Number: TMS320F280049C


Hi there,

I'm trying to build a custom project based on the adc_ex1_soc_epwm example from the C2000 ware 3_04. I created a new, blank ccs object wrote some files to setup the Adc and ePWM modules. I also added the 28004x_generic_ram_lnk.cmd linker script and various files such as f28004x_sysctrl.c or f28004x_usdelay.asm as they are needed by code I copied from the example. 

When I try to compile now I get two errors: 
One is "unresolved symbol F28x_usDelay" which should be in the f28004x_usdelay.asm but somehow the linker can't find it. How can I tell the linker where to look for it? 
Second I get many warnings such as:
#10247-D creating output section "AdcaRegsFile" without a SECTIONS specification evl_brd C/C++ Problem

Looks like the linker doesn't know where to place the AdcaRegsFile which is defined to be a Section. Can't blame him as it doesn't appear in the linker script but I can't really figure out why it works in the adc_ex1_soc_epwm example. Any suggestions where to look for the issue?

I'm generally facing the problem that the Include Options in the Project properties seam to have no effect. I have a folder next to the actual project_src folder where I have al the f28004x_... files. I added that path to the include files but the compiler doesn't seem to be able to find them. I'm seeing the same in the adc_ex1_soc_epwm example. That also includes a similar fodler from the c2000 ware install path but it also has all the relevant files within the project_src folder. Why is that?

Any help would be highly appreciated. I hope this info is enough to solve the issue. I could upload the project but wouldn't really like to upload it public to the entire internet. So if there's another way to share it with just you TI folks that would be grate.

Thanks,

Lennart

  • Hi Lennart,

    One is "unresolved symbol F28x_usDelay" which should be in the f28004x_usdelay.asm but somehow the linker can't find it. How can I tell the linker where to look for it? 

    I believe you are using EABI compiler. The f28004x bitfield support files are still in COFF format. If you are using EABI format, please update the asm file and replace _F28x_usDelay with F28x_usDelay. _ is needed in case of COFF compiler

    #10247-D creating output section "AdcaRegsFile" without a SECTIONS specification evl_brd C/C++ Problem

    You need to add the linker command file f28004x_headers_nonbios.cmd to your project to correctly map the bitfield structs.

    I'm generally facing the problem that the Include Options in the Project properties seam to have no effect. I have a folder next to the actual project_src folder where I have al the f28004x_... files. I added that path to the include files but the compiler doesn't seem to be able to find them. I'm seeing the same in the adc_ex1_soc_epwm example. That also includes a similar fodler from the c2000 ware install path but it also has all the relevant files within the project_src folder. Why is that?

    Can you check the Includes listed under the CCS project and check if the paths are valid? You would see them grayed if the path is invalid.

    ...

    Regards,

    Veena

  • Hi Veena,

    thanks for the hints. You were right about the COFF and the nobios.cmd now I get a step further but end up with the error that the program will not fit into the memory. Paticularly:

    <Linking>
    "../28004x_generic_ram_lnk.cmd", line 93: error #10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. run placement with alignment/blocking fails for section ".ebss" size 0xffcpage 1.  Available memory ranges:
       RAMLS5       size: 0x800        unused: 0x800        max hole: 0x800     
    error #10010: errors encountered during linking; "evl_brd.out" not built

    The included pathes appear in the CCS projects include section. I can open them up and browse around. Nothing is grayed or seems missing. But as soon as I delete the f28004x_....c files from the actual project folder (so that they must be taken from the include paths) I additionally to the error above get a "unresolved symbols" error.

  • Hi Lennart,

    You getting this error, because the .ebss section is of size 0xffc and it is trying to fit it in RAMLS5  which is only of size 0x800. You can add memory blocks to the ebss section:

    you can do it in one of the following ways

    1) .ebss :>> RAMLS5 | RAMS6

    2) ebss :> RAMLS56 where RAMLS56 is the RAMLS5 and 6 combined together to form a bigger block of size 0x1000

    //RAMLS5 : origin = 0x00A800, length = 0x000800
    //RAMLS6 : origin = 0x00B000, length = 0x000800
    RAMLS56 : origin = 0x00A800, length = 0x001000

    Regards,

    Veena

  • I double checked on what the ebss actually is and it turned out the problem is a quite large global struct I quickly added for debug purposes. Reducing it's size made it all fit again. However, if necessary I'll keep the above in mind.