在程序中定义以下数组:
#pragma PERSISTENT(dataRecorded);
uint16_t dataRecorded[8*1024] = {0};
编译调试没有问题
1. 但是数组默认不是定义在RAM中吗,RAM只有8KB,为什么不会溢出?
2.如何定义到了FRAM中,FRAM大小为256KB,为什么当数组大小为16*1024时就会溢出,是不是需要在lnk_msp430fr5994.cmd中修改?应该如何修改?
Seven Han:
http://www.ti.com.cn/cn/lit/an/slaa628/slaa628.pdf
以上链接会有帮助!
m:
回复 Seven Han:
看来,还不是很明白,上面说使用#pragma PERSISTENT就可以将变量定义到FRAM中,但是.cmd相关代码如下:
GROUP(READ_WRITE_MEMORY) {
.TI.persistent : {} /* For #pragma persistent */ .cio : {} /* C I/O Buffer */ .sysmem : {} /* Dynamic memory allocation area */ } PALIGN(0x0400), RUN_START(fram_rw_start)
并未像文档中的那样说的(.TI.persistent : {} > FRAM /* For #pragma PERSISTENT)所以
1. #pragma PERSISTENT 真的可以吧数组存在FRAM中吗?
2. 测试了一下,使用#pragma PERSISTENT 确实可以初始化一个10KB的数组,因为SRAM只有8KB,所以应该是存放在FRAM中了,但是数组的更大就不行了(例如16KB),而FRAM不是有256KB吗,怎么才能初始化一个64KB的数组存放在FRAM中?
灰小子:
回复 m:
这个涉及到存储区域的划分,划分的区域不够大就放不下你的10kB数组
m:
回复 灰小子:
那应该如何处理?
m:
?
m:
求回答
TI中文支持网




