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.

error #10099-D run placement fails for object

Hello,

I’m using CCSv5 with compiler versión 6.0.2.

I added  a header file with 4000 defines in my project and this .h was included in other files where some constants structures use them. This .h has the protection for only be taken into account once.

With all this, I get this error:

  Errors (2 items):

      #10010 errors encountered during linking;

      #10099-D run placement fails for object

This error is a problem with ram length. CCSv5 shows me that RAM necessary is bigger than RAM available. However, RAM length was enough before including this header file, and defines don’t use RAM memory.

Before adding this file, the variables stored in RAM occupied a size, but after this problem, the .map generated doesn't have all this variables. The RAM length showed in .map is shorter; it stops in position where bios has located the variable CLK_HTIMEPERLTIME.

This problem appears and disappears if I change some includes to .h files, but I don’t know why, which is the reason of the error and how to solve it properly.

I would appreciate some help.

Thanks,

Nerea

  • Please see this wiki article on linker diagnostic 10099.

    Thanks and regards,

    -George

  • Wait, sorry, that last answer isn't really on point.

    Please show the full text of the linker diagnostic.  Copy it from the Console view, not the Problems view.

    Thanks and regards,

    -George

  • Thank you for the answer, this is the text of the linker diagnostic:

    <Linking>

    "./aee0000cfg.cmd", line 367: error #10099-D: run placement fails for object

       ".ebss", size 0x12ce9 (page 1).  Available ranges:

       L47SARAM     size: 0x6000       unused: 0x51bb       max hole: 0x51b8   

    error #10010: errors encountered during linking; "ee0000__.out" not built

     

    >> Compilation failure

    gmake: *** [ee0000__.out] Error 1

    gmake: Target `main-build' not remade because of errors.

     

    **** Build Finished ****

    I have only add a file with #defines and before this, I had much unused space in RAM.


    Thanks,

    Nerea

  • Something is causing your .ebss section to be very large.  Please look in the map file at the .ebss section. You will see all the input files which contribute to it.  Is there one file that has a much bigger .ebss section than all the rest?  What is going on with that file?  Note the .ebss section contains the definition of the far global and static variables.

    Thanks and regards,

    -George

  • Thanks George. Due to this problem, I’m not able to see all the .ebss input files and the contributions of each one.

    .ebss      1    00000000    00012ce9     FAILED TO ALLOCATE

    As this .ebss has failed in the allocation, the others sections are now located were .ebss should be.

    In the map file, I can see the location of all the RAM variables and I notice that I have a jump on the addressing of these variables:

    0x0000ae34   _TickSec_swi

    0x0000ae34   TickSec_swi

    0x0000ae48   SWI_A_TABEND

    0x0000c34f   _CLK_PRD

    0x0000c34f   CLK_PRD

    0x0000c350   _CLK_COUNTSPMS

    0x0000c350 CLK_COUNTSPMS

    0x0000c350  CLK_HTIMEPERLTIME

    0x00010294  _var1

    0x00010295  _var2

    0x00010296 ­ _var3

     

    ¿Which could be the reason of this huge jump?

    Thanks,

    Nerea

  • Nerea Portillo said:

    Due to this problem, I’m not able to see all the .ebss input files and the contributions of each one.

    .ebss      1    00000000    00012ce9     FAILED TO ALLOCATE

    Ah, sorry.  I should have thought of that.  See which memory range .ebss is going into.  Just for the sake of making the link succeed, increase the size of that memory range.  Don't try to run the resulting executable.  Just look at the map file and see which file is causing .ebss to be so large.

    Thanks and regards,

    -George

  • Thanks George. I have moved this .ebss section to other bigger data memory and I have seen a file with a huge length. Now, I know in which file I have the problem but this file doesn’t use any of the 4000 defines I have included…

    What I have seen is that this file with the problem includes one header file which includes the header file with all this defines.  If I delete this last include I solve the problem but I don’t know why....

     

    With this, I have the problem:                                With this, I don’t have the problem:

    Thanks,

    Nerea

  • I am unable to reproduce this problem.  I'd appreciate if you would submit FileWithThisHugeEbssLength.c, preprocessed like this, along with all the compiler options used.  

    Thanks and regards,

    -George