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.

关于FRAM分区 ??

Other Parts Discussed in Thread: MSP430FR5959, MSP430FR5949

我用的是 MSP430FR5959, IDE是 IAR。 

如何 通过MPU将FRAM, 单独划分出一块区域 Segment 4,用来存储数据,(目的,替代片外的 EEPROM)。 

  • 分享一个文档给你,一看就明白啦

    Memory 分区.pdf
  • 感谢,您的解答。 我还是有些疑问。

    我做的是仪表。

    第一:先前,仪表的设置参数(通信地址、量程、报警设置 ... 等数据),都是 存储在片外的EEPROM芯片 (AT24C02)中。

    第二:现在,我打算不在使用,EEPROM芯片 (AT24C02) 存储数据了。直接使用 MSP430FR5949。使用片上的 FRAM替代 片外EEPROM芯片存储的功能。
    就像片外EEPROM芯片一样,在程序执行中,可进行读写,掉电不丢失,
    而且不要和应用程序代码起冲突,如果配置不当,因为 程序变量、代码和 数据(设置参数)都在FRAM中,地址是连续的。
    我比较担心,程序执行中会修改了应用程序代码。

    第三:《MSP430? FRAM Technology – How To and Best Practices》 手册中,MPUSEGB1和MPUSEGB2两个寄存器,
    把 FRAM分成三个段,Segment 1、Segment 2、 Segment 3。



    Segment 3 是 代码段,配置为,是只读的、可执行的。

    Segment 2 是 Constants,配置为 只读的, 我的理解是 存储C语言里 const变量。

    我对Segment 1理解是:
    Segment 1 是 分成了三段,Variables 、No-init、 Persistent。 配置为 可读写。


    Variables 包含 DATAxx_Z 和 DATAxx_I ,对应 C语言里的 局部变量、初始化了的全局变量。就是.data段

    No-init 包含 DATAxx_N 对应 C语言里的 未初始化的全局变量 ,就是 .bss 段

    Persistent 包含 DATAxx_P、 DATAxx_HEAP ,那么 DATAxx_P 是 ????

    DATAxx_HEAP 是针对 标准C里的 malloc()和free() 函数而分配的堆存储区吗?

    我的疑问是,我将 仪表的"设置参数",存储在那个段里呢,我该如何进行配置呢?

    我看到一个官方的FRAM使用例程,是用 指针指向将 Segment 3段的中未使用的空间,进行赋值,将数据存储在代码段,
    这样容易和应用程序代码段起冲突,无意间会修改了应用程序代码。


    请问,Persistent里的 DATAxx_P、可否用来,存储数据?