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.

RAM memory section in TMS320C28345

Other Parts Discussed in Thread: TMS320C28345

Hello,

I use a TMS320C28345 and I have a problem with CCS ; in fact, I'm using an 256kB external memory and I'd like to load a program of 250kB in it.

With my techniques, I need to put a table of data in .out build by CCS. For that, I have to resize the memory section (384kB available on SARAM H and 128kB on SARAM L). The program will be load in RAM and then execute to be loaded in external memory.

The problem is that when I put the table in static section (.h), the .ebss and .cinit is filled approximately at the same time and I can't put the whole table, even if I split the sections.

I have also tried to put the table in main.c but the size of local variable memory is not big enough.

Have you any idea to solve this problem ?

Thank you very much for your help.

  • The placement of sections is dependent on how the linker command file defines memory regions and then allocates the sections to those memory regions. In general you can combine RAM regions defined within the MEMORY directive of the linker command file to get one large contiguous chunk of memory. You can also modify the placement of other sections (such as .text, .stack) to other memory regions.

    If you haven't already seen this wiki page, it has some good tips on linking and combining contiguous RAM blocks etc.: http://processors.wiki.ti.com/index.php/C28x_Compiler_-_Understanding_Linking

  • Thank you for your link.

    Do you know where I should put the table of data of 250kB in order to store it into RAM ?

    I would like to put it in .ebss section but .cinit increase at the same time and I would need around 500kB of RAM to store this table of 250kB.

    Thank you for your help.

  • If you do not explicitly place the table in a named section it will go into .ebss. And if it is initialized, the .cinit section will be created as well. You should be able to allocate it anywhere in RAM. However the total size of all sections going into RAM will naturally be constrained by the total amount of memory available on the device.