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进行不同区域间数据的相互赋值存在问题,
能否详细描下你是如何赋值的?