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: program will not fit into available memory

Part Number: TMS320F28379D

Hello Team,

I'm posting on behalf of my customer.

I am facing this error.. Pls could you help me in rectifying this error

<a href="file:/C:/ti/ccs1210/ccs/tools/compiler/dmed/HTML/10099.html">#10099-D</a> 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 0x61a9c page 1. Available memory ranges: 2837x_FLASH_lnk_cpu1.cmd /Project line 114 C/C++ Problem

I am working on the TMS320F28379D.
Hereby, I am attaching the main.c file for your reference.
In the code, just increase any one of the array size to >2000, error will come, otherwise no error.
 
Regards,
Renan
  • Hi Renan,

    As you increase the global variable size, it cannot fit into the section

    Please take a look at the 2837x_FLASH_lnk_cpu1.cmd, and look for .ebss section. You need to increase the size as suggested in the error message. This link explains the details on Linker Command File

    https://software-dl.ti.com/ccs/esd/documents/sdto_cgt_Linker-Command-File-Primer.html

    Something like below.

    .ebss : >> RAMLS5 | RAMGS0 | RAMGS1 | RAMGS2, PAGE = 1
    Regards, Santosh
  • Hello Santosh,

    Please see response from my customer:

    As per your suggestion, after visiting, I have changed to the following information in the .cmd file.
     .ebss               : >> RAMLS5 | RAMGS0 | RAMGS1 |RAMGS5  |RAMGS6 |RAMGS7 |RAMGS8 | RAMGS9.
    Still, the error persists. In addition to this, any modification, I have to do..pls guide me
    Regards,
    Renan
  • Renan,

    Please look at the exact error in console log. It will show how much is needed, and how much you have and then you can calculate accordingly.

    .ebss               : >>

    Not sure why you need such a big arrays. Are you just experimenting or you need it for your application? You have 13 arrays of floats with 2000 elements each. So you need :

    13 * 2000 * 4 bytes = 104 kB just for this arrays. 

    You may need to store them in flash something like below. Again you will need at least 4 flash sectors.

    .ebss               : >> FLASHH FLASHG |FLASHI |FLASHJ 
     
    Hope it helps.
    Regards, Santosh
  • Hello Santosh,

    Please see response form my customer:

    Sorry for the delayed response.
    I need those variables for my application. One variable with 4000 size is needed to store the ADC sampled data.

    The following line is added in the flash intialisation place. A flash memory of size (48000 bytes)
    .ebss :>> FLASHE |FLASHH | FLASHG| FLASHI | FLASHJ PAGE = 0

    Still the error is occurring.

    Description Resource Path Location Type
    <a href="file:/C:/ti/ccs1210/ccs/tools/compiler/dmed/HTML/10099.html">#10099-D</a> 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 0x1084 page 1. Available memory ranges: 2837x_FLASH_lnk_cpu1.cmd /Project line 115 C/C++ Problem

    Thank you so much for your help.

    Regards,

    Renan

  • Renan,

    Having one variable 0f 4000 size is manageable. As it is for sampled ADC buffer, so it must be placed in RAM. Create a separate section and place the variable in that section using #pragma DATA_SECTION().

    You need a bit of background.  Please read the first part of the article Linker Command File Primer.  Get a clear understanding of how input sections come from object files, are combined into output sections, and those output sections are allocated to memory ranges.

    The DATA_SECTION pragma is how you tell the compiler which input section to use for a particular global or static variable.

    Regards, Santosh