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.

TMS320F28379D: Increasing .text section on a RAM linker file for error #10099-D

Part Number: TMS320F28379D

Hello everyone, I currently have the following MEMORY setup in my RAM linker file:

PAGE 0 :
   /* BEGIN is used for the "boot to SARAM" bootloader mode   */

   BEGIN           	: origin = 0x000000, length = 0x000002
   RAMM0           	: origin = 0x000122, length = 0x0002DE
   RAMD0           	: origin = 0x00B000, length = 0x000800
   RAMLS0          	: origin = 0x008000, length = 0x000800
   RAMLS1          	: origin = 0x008800, length = 0x000800
   RAMLS2      		: origin = 0x009000, length = 0x000800
   RAMLS3      		: origin = 0x009800, length = 0x000800
   RAMLS4      		: origin = 0x00A000, length = 0x000800
   RESET           	: origin = 0x3FFFC0, length = 0x000002

And then I split my .text in the SECTIONS part of the linker file as follows:

   .text            : >>RAMM0 | RAMD0 | RAMD1 |  RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3 | RAMLS4,   PAGE = 0


However, doing this, I get a message saying that my program will not fit into the available memory, giving me the following error message, and it seems like all my memory blocks from PAGE 0 are full. 

#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. placement with alignment/blocking fails for section ".text" size 0x33e8 page 0.  Available memory ranges:

What options do I have to solve this problem?

  • Hi Eric,

    Please have a look at similar thread  - (+) TMS320F28379D: error #10099-D: program will not fit into available memory. placement with alignment fails for section ".text" size 0x2b12 . - C2000 microcontrollers forum - C2000Tm︎ microcontrollers - TI E2E support forums

    Also RAMD1 from your configuration comes under Page1. Can you check how much memory is left in the LS Rams from the .map file?

    Regards

    Aswin

  • Hello Aswin,

    Hope you are doing well. It seems like there is no memory left in the LS RAMS in the .map file:

             name            origin    length      used     unused   attr    fill
    ----------------------  --------  ---------  --------  --------  ----  --------
    PAGE 0:
      BEGIN                 00000000   00000002  00000002  00000000  RWIX
      RAMM0                 00000122   000002de  000002dd  00000001  RWIX
      RAMLS0                00008000   00000800  00000800  00000000  RWIX
      RAMLS1                00008800   00000800  00000800  00000000  RWIX
      RAMLS2                00009000   00000800  000007ff  00000001  RWIX
      RAMLS3                00009800   00000800  00000800  00000000  RWIX
      RAMLS4                0000a000   00000800  00000800  00000000  RWIX
      RAMD0                 0000b000   00000800  00000800  00000000  RWIX
      RESET                 003fffc0   00000002  00000000  00000002  RWIX

    I just took the RAMD1 out of my line of code, I'd initially put it in in order to try and fit my large .text file into it.

  • Hi Eric,

    It looks like the complete LS RAM is used for the sections and we don't have any memory left to accommodate the .text section in the LSRAM.

    As you can see, the total .text section require a total of 0x33e8. And if you calculate the total LSRAM length +M0 length + D0 length, it will be close to the total .text size. Hence i think this LS sections are not enough to hold the total .text section.

    I suggest using the GSRAM location from page 1 to configure the .text section.

    Eg - .text            : >> RAMD1 |  RAMGS0 | RAMGS1 | RAMGS2 ,   PAGE = 1

    Regards 

    Aswin