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.

CCS/TMS320F280049: TMS320F280049 out of memory error

Part Number: TMS320F280049
Other Parts Discussed in Thread: C2000WARE

Tool/software: Code Composer Studio

HI, need your help..

even with the new CCS Version: 10.0.0.00010 I have the same old problem....out of memory:

Error message:

"file:/C:/ti/ccs1000/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. placement with alignment/blocking fails for section ".text" size 0x213dpage 0.  Available memory ranges:

This is the 280049_flash_link.cmd:

SECTIONS

{
codestart : > BEGIN, PAGE = 0, ALIGN(4)
.text : >>FLASH_BANK0_SEC1 | FLASH_BANK0_SEC2 | FLASH_BANK0_SEC3 | FLASH_BANK0_SEC4 | FLASH_BANK0_SEC5 | FLASH_BANK0_SEC6, PAGE = 0, ALIGN(4)
.cinit : > FLASH_BANK0_SEC1, PAGE = 0, ALIGN(4)
.pinit : > FLASH_BANK0_SEC1, PAGE = 0, ALIGN(4)
.switch : > FLASH_BANK0_SEC1, PAGE = 0, ALIGN(4)
.reset : > RESET, PAGE = 0, TYPE = DSECT /* not used, */

.stack : > RAMM1, PAGE = 1
.ebss : >>RAMLS5 | RAMLS6 | RAMLS7, PAGE = 1
.esysmem : > RAMLS7, PAGE = 1 //.esysmem : > RAMLS5, PAGE = 1
.econst : > FLASH_BANK0_SEC7, PAGE = 0, ALIGN(4)

This is the map:

PAGE 0:
RAMM0 000000f5 0000030b 00000000 0000030b RWIX
RAMLS0 00008000 00000800 0000004f 000007b1 RWIX
RAMLS1 00008800 00000800 00000000 00000800 RWIX
RAMLS2 00009000 00000800 00000000 00000800 RWIX
RAMLS3 00009800 00000800 00000000 00000800 RWIX
RAMLS4 0000a000 00000800 00000000 00000800 RWIX
BEGIN 00080000 00000002 00000002 00000000 RWIX
FLASH_BANK0_SEC0 00080002 00000ffe 00000000 00000ffe RWIX
FLASH_BANK0_SEC1 00081000 00001000 00000ffd 00000003 RWIX
FLASH_BANK0_SEC2 00082000 00001000 000001a2 00000e5e RWIX
FLASH_BANK0_SEC3 00083000 00001000 00000000 00001000 RWIX
FLASH_BANK0_SEC4 00084000 00001000 00000000 00001000 RWIX
FLASH_BANK0_SEC5 00085000 00001000 00000000 00001000 RWIX
FLASH_BANK0_SEC6 00086000 00001000 00000000 00001000 RWIX
FLASH_BANK0_SEC7 00087000 00001000 000001c0 00000e40 RWIX
FLASH_BANK0_SEC8 00088000 00001000 00000000 00001000 RWIX
FLASH_BANK0_SEC9 00089000 00001000 00000000 00001000 RWIX
FLASH_BANK0_SEC10 0008a000 00001000 00000000 00001000 RWIX
FLASH_BANK0_SEC11 0008b000 00001000 00000000 00001000 RWIX

The code is not so large to occupy the whole memory...

How can I solve this problem ?

Thanks and best regards.

Luigi

  • There are two solutions to consider. 

    One is to combine memory ranges as described in this forum post.

    The other is to build with the compiler option --gen_func_subsections.  Please search for that option in the C28x compiler manual. In this particular case, the effect needed is create smaller input sections, which makes this section splitting ...

    Luigi Verrua said:
    .text : >>FLASH_BANK0_SEC1 | FLASH_BANK0_SEC2 | FLASH_BANK0_SEC3 | FLASH_BANK0_SEC4 | FLASH_BANK0_SEC5 | FLASH_BANK0_SEC6, PAGE = 0, ALIGN(4)

    ... more likely to be effective.

    Please let me know if one of these suggestions resolves the problem.

    Thanks and regards,

    -George

  • Thanks George,

    what I have understood is that very object file must not be greater than 0x1000 for every section when I put my FW in the flash memory.

    Does it mean that another solution could be to create different object files smaller than "0x1000" ?

    Luigi

  • Thanks George,

    but when I write my code using the C language, after I start the build of the project I expect that the CCS generates my executable code using the default link command file and all is necessary, including any splitting or other actions needed to create the object files and sections adjustments or splittings....

    why do I also have to worry about editing the link command file ?

    Luigi

  • TI supplies linker command files with products like Code Composer Studio and C2000Ware.  Most of the time, a customer uses a linker command file from one of these sources and never needs to change it.  Occasionally, issues arise and changing the linker command file is the best solution.  Your issue is one of these.

    To understand a linker command file generally, please see the article Linker Command File Primer.  Specific to your situation, focus on understanding the terms input section, output section, and section splitting.   That additional background should help you understand the two solutions I propose in my previous post.  Either of those two solutions may resolve your problem.  Please let me know which solution finally works.

    Thanks and regards,

    -George

  • I agree with you..but if I choose a 256kB flash memory CPU one reason could be that I need some space to put my code.

    Why create a linker command file that limits the flash memory use ?

    Luigi