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.

TMS320F280039C: 全局变量定义在在Local Shared RAM中,编译可以通过但是在使用memcopy时,该全局变量无法被赋值。

Part Number: TMS320F280039C

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
memory
{
PAGE 0 :
RAMLS0 : origin = 0x00008000, length = 0x00002200
RAMLS1 : origin = 0x0000A200, length = 0x00000C00
RAMLS2 : origin = 0x0000AE00, length = 0x00000080
RAMLS3 : origin = 0x0000AE80, length = 0x00000080
RAMLS4 : origin = 0x0000AF00, length = 0x00000080
RAMLS5 : origin = 0x0000AF80, length = 0x00000080
}
SECTIONS
{
DataDiagRAM : > RAMLS1 PAGE = 0
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

在cmd文件中,该全局变量j结构体存放的空间为RAMLS1。

Fullscreen
1
2
#pragma DATA_SECTION(DataDiag_gstv,"DataDiagRAM");
DataDiag_Var DataDiag_gstv;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

该全局变量在c文件中被定义。

因为我的global shared RAM 空间不够了,所以将该结构体变量放到LSRAM中。该问题就是在更换存储位置时出现的,详细的现象是memcopy赋值存在赋值不进去的问题,而且在debug调试过程中,我通过expressions窗口给该变量写值时,能成功并观察到memory窗口对应地址的值已经变更,但代码的实际执行时该变量的值并没有变更。请问一下:

1、LSRAM和GSRAM在全局变量的使用上是否存在区别?

2、编译没有报错,但通过memcopy进行不同区域间数据的相互赋值存在问题,原因是什么?

3、是否有其他的办法能规避这类问题呢?有没有相关的文档可以参考?

期待您这边的回答。

x 出现错误。请重试或与管理员联系。