TI中文支持网
TI专业的中文技术问题搜集分享网站

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

Part Number:TMS320F280039C

memory
{
PAGE 0 :RAMLS0: origin = 0x00008000, length = 0x00002200RAMLS1: origin = 0x0000A200, length = 0x00000C00RAMLS2: origin = 0x0000AE00, length = 0x00000080RAMLS3: origin = 0x0000AE80, length = 0x00000080RAMLS4: origin = 0x0000AF00, length = 0x00000080RAMLS5: origin = 0x0000AF80, length = 0x00000080
}

SECTIONS
{
	DataDiagRAM		: > RAMLS1			PAGE = 0
}

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

#pragma DATA_SECTION(DataDiag_gstv,"DataDiagRAM");
DataDiag_Var DataDiag_gstv;

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

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

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

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

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

期待您这边的回答。

Ben Qin:

您好,我查看下相关资料后回复您。

,

Xiazi Lee:

您好,请问一下有查询到相关的信息吗?

,

Ben Qin:

你好,抱歉回复晚了。你注意到了下面几点吗:

,

Xiazi Lee:

是的,我注意到了手册上关于LSx RAM和GSx RAM这部分相关的描述。我的理解是对于CPU、CLA等,LSRAM和GSRAM在读写权限上有区分。但我定义的全局变量是只在CPU中执行,对于这个用法我在手册上并没有找到相关的描述。

,

Ben Qin:

Xiazi Lee said:但通过memcopy进行不同区域间数据的相互赋值存在问题,

能否详细描下你是如何赋值的?

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F280039C: 全局变量定义在在Local Shared RAM中,编译可以通过但是在使用memcopy时,该全局变量无法被赋值。
分享到: 更多 (0)