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

Part Number: TMS320F28377D

Tool/software: Code Composer Studio

Hello !

I have written a code using 28377d which has many float variables. 

When I tried to build it, an error ocured:

" program will not fit into available memory. placement with alignment/blocking fails for section ".cinit" size 0x2e4 page 0. Available memory ranges:

RAMM0 size: 0x2de unused: 0x4 max hole: 0x4 "

So I tried to modify the "2837xD_RAM_lnk_cpu1.cmd" file as bellow:

"     .cinit           : >> RAMM0 | RAMD0 ,     PAGE = 0  "

after re-building the project, the error fixed but a warning says:

" split placement (>>) ignored for ".cinit":  split placement for this section is not permitted"

So what should I do? How can I increase the memory allocated for the variable definitions? 

Best regards

  • Sana,

    Yes, it is not valid for that section of memory. For more information on what sections can be split and how to allocate more memory, please check out this wiki page.

    processors.wiki.ti.com/.../C28x_Compiler_-_Understanding_Linking

    Regards,
    Ozino
  • Hi Ozino
    thank you for your reply.

    I have already read that wiki page but it doesn't contain any information about extending the " .cinit ".
    I'm not an expert programmer so could you simply let me know how I can solve this problem? which memory blocks could I use for extending ".cinit" or other sections such as ".ebss" or ".econst" ? for example can I use "RAMGS6" ?
    what syntax should I use for extending .cinit ?

    regards
    Sana
  • I have changed ".cmd" as follows:
    .cinit : > RAMM0 | RAMD0 | RAMLS4 , PAGE = 0

    and all problem and warning related to the ".cinit " section has been solved. But another problem happens! now my ".text" section doesn't have enough space!

    -Should I only use the following memory blocks which are in PAGE 0 for ".text" and ".cinit " ?

    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

    Is there any way for extending the ranges of Page 0 memory blocks using Page 1 blocks?

    Or is it possible to use the memory blocks of Page 1 as Page 0. i.e., add the RAMGS7 from Page 1 to Page 0. 


    regards

  • Sana,

    Glad to see you have resolved your initial problem. You cannot combine memory ranges across different pages. If you want extend the range of addresses in page 0, you can move sections of RAM from page 1 to page 0. This will give you more available sections of ram to choose from.

    Regards,
    Ozino