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.

MSP430FR5994 SRAMA和FRAM

Expert 2115 points
Other Parts Discussed in Thread: MSP430FR5994

在程序中定义以下数组:

#pragma PERSISTENT(dataRecorded);
uint16_t dataRecorded[8*1024] = {0};

编译调试没有问题

1. 但是数组默认不是定义在RAM中吗,RAM只有8KB,为什么不会溢出?

2.如何定义到了FRAM中,FRAM大小为256KB,为什么当数组大小为16*1024时就会溢出,是不是需要在lnk_msp430fr5994.cmd中修改?应该如何修改?

  • http://www.ti.com.cn/cn/lit/an/slaa628/slaa628.pdf

    以上链接会有帮助!

  • 看来,还不是很明白,上面说使用#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中?

  • 这个涉及到存储区域的划分,划分的区域不够大就放不下你的10kB数组

  • 那应该如何处理?