Compiler/TMS320F28377D: No matching section warning for FlashAPI library file... in bootloader application

Part Number: TMS320F28377D

Tool/software: TI C/C++ Compiler

Dear Friends,

I am working on flash programming of 377D controller from communication. The command file is modified accordingly, which needs Flash APIs Library files (.obj files) to be copied to RAM. But while building below warning is shown.

"no matching section".

I have checked the file search path in linker properties, which is also OK.

I am stuck at this problem, as the memory is unallocated for those .obj files from the library. Please help.

Thanks in advance,

Raghuchandar.

15 Replies

  • To understand my answer, please read the first half of the wiki article Linker Command File Primer.

    The diagnostic ...

    Raghuchandar Rajula
    "no matching section".

    should have a line number associated with it.  It means, for that line of the linker command file, no input sections were found which match the specification.  

    Raghuchandar Rajula
    the memory is unallocated for those .obj files from the library.

    Is any code or data from these object files being used anywhere?  Check the map file for occurrences of the name of the library.

    Thanks and regards,

    -George


    TI C/C++ Compiler Forum Moderator
    Please click Verify Answer on the best reply to your question
    The CCS Youtube Channel
     has short how-to videos
    The 
    Compiler Wiki answers most common questions
    Track an issue with SDOWP. Enter your bug id in the Search box.

  • In reply to George Mock:

    I am also having this issue trying to get the linker to link the flash library into code.
    I am using CCS 6.1.1 with a 28377s
    I have been able to compile and link the example code for the 28377s flash_programming_cpu1 project an view the map file .
    I copied the code from the linker command file for this sample app and I get the same warning of no section and the line number it refers to is the loading of the library.
    The difference is my app is a sysbios app. In the boot section of app.cfg I am specifying the same load and run segments for flash functions as specified below.
    The doco on the linker command files has not shed any light on this as the GROUP is not explained very well.
    Here is the portion of the linker command file that is loading the library and I have marked the line that I get the section error on. This exact same line works in the sample app.
    I appreciate any help I can get resolving this issue.
    Thanks
    Maury

    GROUP
    {
    ramfuncs
    { -l F021_API_F2837xD_FPU32.lib} ***** Warning no section defined

    } LOAD = FLASHD,
    RUN = D01SARAM, **** modified from example to match my flash map
    LOAD_START(_RamfuncsLoadStart),
    LOAD_SIZE(_RamfuncsLoadSize),
    LOAD_END(_RamfuncsLoadEnd),
    RUN_START(_RamfuncsRunStart),
    RUN_SIZE(_RamfuncsRunSize),
    RUN_END(_RamfuncsRunEnd),
    PAGE = 0
  • In reply to maurywalters:

    A GROUP is used when you want to allocate multiple output sections, adjacent to each other, in a particular order. The GROUP you show has only one output section.  So you don't need GROUP.  

    This input section section syntax ...

    maurywalters
    { -l F021_API_F2837xD_FPU32.lib}

    ... while legal, is unusual.  It means allocate all of the input sections (.text, .data, and so on) from that library.  It much more likely you mean to write ...

    ramfuncs
    {
       -l F021_API_F2837xD_FPU32.lib(.text)
    } 
    LOAD = FLASHD,
    RUN = D01SARAM,
    LOAD_START(_RamfuncsLoadStart),
    LOAD_SIZE(_RamfuncsLoadSize),
    LOAD_END(_RamfuncsLoadEnd),
    RUN_START(_RamfuncsRunStart),
    RUN_SIZE(_RamfuncsRunSize),
    RUN_END(_RamfuncsRunEnd),
    PAGE = 0

    This says only the .text sections (which contain the code) from the library are allocated in this output section.

    Thanks and regards,

    -George


    TI C/C++ Compiler Forum Moderator
    Please click Verify Answer on the best reply to your question
    The CCS Youtube Channel
     has short how-to videos
    The 
    Compiler Wiki answers most common questions
    Track an issue with SDOWP. Enter your bug id in the Search box.

  • In reply to George Mock:

    George,
    Thanks I was just copying the flash sample code from the linker command file SECTIONS definition.
    I tried the notation you indicated above and get the same error
    ramfuncs
    {
    -l F021_API_F2837xD_FPU32.lib(.text)
    }
    LOAD = FLASHD,
    RUN = D01SARAM,
    LOAD_START(_RamfuncsLoadStart),
    LOAD_SIZE(_RamfuncsLoadSize),
    LOAD_END(_RamfuncsLoadEnd),
    RUN_START(_RamfuncsRunStart),
    RUN_SIZE(_RamfuncsRunSize),
    RUN_END(_RamfuncsRunEnd),
    PAGE = 0
    I thought maybe we were missing a : after the ramfunc section declaration
    so I added one after ramfuncs and still the same issue
    I saw an example in one of the tools and moved the load library lines to after the ramfuncs section declaration
    but still get the same warning and library does not link.
    ramfuncs :
    LOAD = FLASHD,
    RUN = D01SARAM,
    LOAD_START(_RamfuncsLoadStart),
    LOAD_SIZE(_RamfuncsLoadSize),
    LOAD_END(_RamfuncsLoadEnd),
    RUN_START(_RamfuncsRunStart),
    RUN_SIZE(_RamfuncsRunSize),
    RUN_END(_RamfuncsRunEnd),
    PAGE = 0
    -l F021_API_F2837xD_FPU32.lib(.text)
    }
  • In reply to maurywalters:

    maurywalters
    I tried the notation you indicated above and get the same error

    Please show the text of the error.  If it says "no matching section", please see if this forum thread is helpful.

    Thanks and regards,

    -George


    TI C/C++ Compiler Forum Moderator
    Please click Verify Answer on the best reply to your question
    The CCS Youtube Channel
     has short how-to videos
    The 
    Compiler Wiki answers most common questions
    Track an issue with SDOWP. Enter your bug id in the Search box.

  • In reply to George Mock:

    George,
    The error in the console is the following and the line it is flagging is the one that is trying to load the library
    -l F021_API_F2837xD_FPU32.lib(.text)

    "../TMS320F28377S_NO_APPL.cmd", line 105: warning #10068-D: no matching section

    I looked at the latest link you posted and I tried moving the ramfuncs section before the allocation of other program area sections but get the same warning.
    I see there are a couple syntaxes used in examples and it is not clear what is correct.
    -l F021_API_F2837xD_FPU32.lib(.text)
    -lrts64plus_elf.lib<memcpy64.obj> (.text:memcpy)
    In some cases it is -l with a space and library name others omit the space.
    In some cases the destination is indicated by >( section name)
    What is proper syntax for specifying a memory location not a section when loading a library.

    Note the ramfuncs section works without this load library line as there are some flash init and delay functions that get placed there.

    What I do not understand is that the GROUP syntax worked in a non bios application (the sample flash app) but does not in a sysbios app. That seems to indicate that there is a conflict between the sysbios linker command file and mine. I tried the link order setup but that has not resolved it
    Maury
  • In reply to maurywalters:

    George,
    Maybe I am not understanding exactly what this warning is indicating.
    Is it that there is no section defined in the linker SECTIONS for this library or the section is already used or .....
    In order to understand this better I was trying to just load a different library into some other section not even the ramfuncs section it seems I get the same warning even when I try and just load the library into flash page using the following
    libfuncs : > FLASHD | FLASHE PAGE = 0
    {
    -l F021_API_F2837xD.lib(.text)
    }

    I have the library path and library name specified in the project and also have it specified in the linker file search path and have it set up to be included as a library linker input on this same property page.
    Am I double including the library ?
    I see there are other posts where people are having the same issue but no solutions.
    thanks for the help
    Maury
  • In reply to maurywalters:

    For one of the problem links, please attach the linker command file and map file.  So the forum will accept it, add (not change) the file extension .txt.  For example, file.map changes to file.map.txt.  That should help me understand what happens with the .text sections from the library F021_API_F2837xD.lib.  

    Thanks and regards,

    -George


    TI C/C++ Compiler Forum Moderator
    Please click Verify Answer on the best reply to your question
    The CCS Youtube Channel
     has short how-to videos
    The 
    Compiler Wiki answers most common questions
    Track an issue with SDOWP. Enter your bug id in the Search box.

  • In reply to George Mock:

    George,

    Ah I forgot I had to rename the command files, now attached and note I have the section linking library commented out.

    The map is attached with that section commented in but it appears it does not link the library in with the warning.

    2313.TMS320F28377S_NO_APPL.txt

    RFC.txt

  • In reply to maurywalters:

    The map file shows no input sections from the library F021_API_F2837xD_FPU32.lib.  This means your main application code calls none of the functions in that library.  Therefore the ramfuncs output section is empty.  The diagnostic "no matching sections" means no input sections match the input section specification ...

           -l F021_API_F2837xD_FPU32.lib(.text)
    

    Thanks and regards,

    -George


    TI C/C++ Compiler Forum Moderator
    Please click Verify Answer on the best reply to your question
    The CCS Youtube Channel
     has short how-to videos
    The 
    Compiler Wiki answers most common questions
    Track an issue with SDOWP. Enter your bug id in the Search box.