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.

TMS320F28075: allocate memory cmd file | or

Part Number: TMS320F28075
Other Parts Discussed in Thread: C2000WARE

Hello, 

I would like to allocate one output section to RAMGS0123 or RAMGS4567 memory ranges that are in different pages.

I have tried with several syntaxes but all of them fail. I would like to do something like this:

PAGE 0:

…………….

   RAMGS0123                  : origin = 0x00C000, length = 0x004000

…………….

PAGE 1:

…………….

   RAMGS4567                  : origin = 0x010000, length = 0x004000

…………….

SECTIONS

{

…………….

.esysmem           : > RAMGS0123                 PAGE = 0     |       RAMGS4567                 PAGE = 1    

…………….

}

I don’t know either if it is not possible or the syntax is wrong.

Thank you in advanced,

Paloma

  • You may want to read

    www.ti.com/.../litabsmultiplefilelist.tsp

    It may give you enough info to do what you want...
  • Paloma,

    I would also recommend taking a look at this wiki page: processors.wiki.ti.com/.../C28x_Compiler_-_Understanding_Linking

    It explains how to combine sections of memory.

    Regards,
    Ozino
  • Hello,

    Thank you for your response but I have several doubts and assumptions.

    I have

    • TMS320F2807x microcontroller
    • RAMGS0123 in PAGE 0
    • RAMGS4567 in PAGE 1

    Case 1:

    I guess that in order to allocate .esysmem memory which is data memory, as default, the linker looks for it within PAGE 1. So, when I define:

    .esysmem           : > RAMGS0123

    The linker answers:

    "../cmd/2807x_Generic_FLASH_lnk.cmd", line 103: warning #10097: memory range not found: RAMGS0123 on page 1

    Therefore, I have to specify that RAMGS0123 is in page 0 and there is no error:

    .esysmem           : > RAMGS0123           PAGE = 0

    Case 2:

    If I want to allocate .esysmem either RAMGS0123 or RAMGS4567 as:

    .esysmem           : > RAMGS0123           |              RAMGS4567

    I get the following response (same as before):

    "../cmd/2807x_Generic_FLASH_lnk.cmd", line 103: warning #10097: memory range not found: RAMGS0123 on page 1

    When I define specific PAGES like this:

    .esysmem           : > RAMGS0123           PAGE = 0              |             RAMGS4567      PAGE = 1

    I get a syntax error errror:

    #10026-D expecting output section, GROUP, or UNION instead of "|"    

    Is there any way to allocate one memory section in 2 different pages using |?

     

    Besides, in order to define our cmd file in the best way. I have some doubts.

    In http://processors.wiki.ti.com/index.php/C28x_Compiler_-_Understanding_Linking#PAGE_0_or_PAGE_1:

    1) “If code accesses data within the same physical memory, then performance will degrade due to resource conflicts. It is better to place code and the data it accesses separate blocks.”

    I don’t completely understand it. When it refers to “separate blocks”, it means memory blocks (names in cmd file):

    Code -> RAMGS0

    Its data -> RAMGS1

    Or physical memory as it is said in the first part of the sentence:

    Code -> RAMGS

    Its data -> RAMLS

    2) “Always check the data manual to find the wait states for each physical block and whether it applies to program or data accesses.” Could you help me to find that information in TMS320F2807x data sheet?

     

    And just for curiosity, as I have read, linker and cmd files consider pages just for backwards consistence, but we have to defined them, don’t we? I will define all of them as the examples define but, is there any problem to run a program from a memory section that is in PAGE 1? Can I allocate a memory section that it is supposed to be in page 1, in page 0? For example, .ebss memory section in PAGE = 0. Do I really have to care about pages?

    Thank you very much.

     

    Paloma

  • Paloma,

    The technical reference manual (www.ti.com/.../litabsmultiplefilelist.tsp has more information regarding the wait states. Please take a look at that for more information.

    Case 1: Yes, you will have to specify the page number if the section of memory is not in the default location for .esysmem

    I am forwarding your post to the Compiler team to provide addtional help with the other questions.

    In the meantime, please refer to the various linker cmd files provided in device support in C2000Ware for the F2807x.
    Regards,
    Ozino
  • Sorry, I can’t go to www.ti.com/.../litabsmultiplefilelist.tsp, the link is broken.

    Thank you for forwarding my post.

    Best regards,

    Paloma

  • Paloma,

    Here is an updated link to the TRM:
    www.ti.com/.../spruhm9d.pdf

    Regards,
    Ozino