我用的是 MSP430FR5959, IDE是 IAR。
如何 通过MPU将FRAM, 单独划分出一块区域 Segment 4,用来存储数据,(目的,替代片外的 EEPROM)。
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.
我用的是 MSP430FR5959, IDE是 IAR。
如何 通过MPU将FRAM, 单独划分出一块区域 Segment 4,用来存储数据,(目的,替代片外的 EEPROM)。
关于FRAM分区,请参考文档www.ti.com/lit/an/slaa628/slaa628.pdf 3.4节
感谢,您的解答。 我还是有些疑问。
我做的是仪表。
第一:先前,仪表的设置参数(通信地址、量程、报警设置 ... 等数据),都是 存储在片外的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段的中未使用的空间,进行赋值,将数据存储在代码段,
这样容易和应用程序代码段起冲突,无意间会修改了应用程序代码。