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

MSP430FR5994 SRAMA和FRAM

在程序中定义以下数组:

#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:

求回答

赞(0)
未经允许不得转载:TI中文支持网 » MSP430FR5994 SRAMA和FRAM
分享到: 更多 (0)