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.

TMS320F28384D: MSGRAM address assignment

Part Number: TMS320F28384D

[28384D's MSGRAM address assignment.]

Since this post is written using a translator, the content may be unnatural.

hello.
I am writing because I have an inquiry while using 28384D.
I want to share data using only MSGRAM (between CPU1 and CM) without using IPC.

Each data consists of structures with different sizes.
The same structure is defined in each core of CPU1 and CM, and only the RAM location of '#pragma Data_section()' is different, everything is the same.
However, in the memory map, the address of each structure in the shared RAM is different.

Main question Q1) Is there any way to make the data order of CPU1 and CM the same in the memory map?
Can't the user define the order defined in the memory map?
(I'd like a better way than how to split a region of MSGRAM in a link file.)

Q2) Changed COFF -> EABI to use #pragma LOCATION(x, addr).
Is there anything else to be aware of other than the size change of DOUBLE?

Q3) I want to put the structure of gMENU_PQ at address 0x038400 using #pragma LOCATION(gMENU_PQ, 0x038400), but after debugging, gMENU_PQ disappeared.
Am I using it wrong? Or is it an unavailable command?

Q4) I know that you can declare the address of a variable in a link file.

After setting 'extern' in 'header file', I try to insert 'gMENU_PQ :> 0x038000' in link file, but it is the same symptom as when #pragma LOCATION(gMENU_PQ, 0x038400) is used. (Q3)

Is this method not available in TI Compiler?

  • Hi,

    Main question Q1) Is there any way to make the data order of CPU1 and CM the same in the memory map?

    C28x is 16bit addressing where as M4 is byte addressing so address will not be same. 

    Is there anything else to be aware of other than the size change of DOUBLE?

    There should not be any issue but what do you mean by "size change of DOUBLE" ? Are you talking about .out size becoming double ?

    Q3) I want to put the structure of gMENU_PQ at address 0x038400 using #pragma LOCATION(gMENU_PQ, 0x038400), but after debugging, gMENU_PQ disappeared.
    Am I using it wrong? Or is it an unavailable command?

    Please refer CPU compiler guide for the usage.

    Regards,

    Vivek Singh

  • Hi.
    Thanks for replying first.
    I'm sorry that my English is not good enough to cause confusion in the conversation.

    Q1 - reple) C28x is 16bit addressing where as M4 is byte addressing so address will not be same.
    I already know that.
    My question is, in the CPU1 and CM's memory map, where the data is placed in the address map.
    In order for CPU1 and CM to share RAM, it seems that the order of data declared in each core must be the same.
    Please check the pictures posted in the main thread again.
    C28x's memory map: gMENU_INIT -> gMENU_RCMU -> gMENU_PV...
    CM memory map: gMENU_PQ -> gMENU_PV -> gMENU_LINE...
    I declared the same and initialized the same.

    Q2 - reply) There should not be any issue but what do you mean by "size change of DOUBLE" ? Are you talking about .out size becoming double ?
    When changing the project option from COFF -> EABI, the biggest difference is that double is 32 bits (in COFF), and double is 64 bits (in EABI).
    Other than that, I wonder if there are any other issues I should pay attention to.

    Q3 - reply) Please refer CPU compiler guide for the usage.
    I already read the guide and wrote a program.
    I know that I can write something like #pragma LOCATION(gMENU_PQ, 0x038400).
    However, when building, gMENU_PQ disappears from expression, memory map, and map file.
    I need a hint to solve this.

    Q4) Declaring "gMENU_PQ :> 0x038000" in the link file also makes gMENU_PQ disappear.
    Is it possible to specify the address of a variable within a linked file?

  • I am looping our compiler team to help.

  • I presume it is practical for you to use the newer EABI.  In which case the techniques described in the article Methods to Force an Ordering of Global Variables are likely to be useful.

    Thanks and regards,

    -George

  • wow!!

    Thank you so much for your help.
    Finally I have an easy solution to this problem.
    thank you so much.!!!