主题中讨论的其他器件: MSP430WARE
工具/软件:Code Composer Studio
我正在尝试了解如何在 FRAM 中存储一个值(无符号长整型)、理想情况下、在对芯片重新编程时不会被擦除。
首先、这些示例使用 PERSISTENT 和 NOINIT pragma、这看起来很简单。 但是、我是否需要担心这些变量的地址将来会发生变化? 例如、在该版本的固件中、我仅存储单个无符号长整型。 如果我决定将来存储其他变量、原始 unsigned long 的地址是否会保持不变? 使用 NOINIT pragma 时、如何查找其地址?
第二、关于 NOINIT、我阅读 SLAA628 - MSP430 FRAM 技术-操作方法和最佳实践。 在第5.1节中、它指出:(我添加了强调)"请注意、与 PERSISTENT 不同、声明为 NOINIT 的变量不会被默认链接器命令文件放置在 FRAM 中、如果需要此类功能、则需要对链接器命令文件进行少量修改。" 所以... 需要在链接命令文件中修改哪些内容以及如何修改?
第三、看一下 msp430fr243x_framwrite.c 示例、我很困惑。 (我想链接到它、但编辑一直在奇怪地行事。 因此、位于:TI Resource Explorer > Software > MSP430Ware > MS430FR2XX_4XX > MSP430FR2633 > Peripheral Examples > Register Level > msp430fr243x_framwrite.c"。
该说明指出您应该在写入主 FRAM 时禁用中断。 但随后说"此代码示例使用 DFWP、这不会带来危险。" 我不知道这种说法是什么意思。 我认为唯一有意义的是、该示例声称使用 DFWP。
在代码中、FRAM-TEST_START 定义为0x1800。 查看与 INFOA 相对应的链接器命令文件。 其注释为"//* MSP430 info FRAM Memory Segments */"。 (请注意、什么是信息 FRAM 存储器段?) 如果这个示例写入 FRAM、那么起始地址0xC400为什么不写入?
在 FRAMWrite()函数中,它看起来像 SYSCFG0解锁 PFWP 而不是 DFWP。 我认为明确的书面说明明确地指出、该代码与 PFWP 没有任何关系。 那么、那里发生了什么呢?
此外、在线路上、LED 被切换、注释为"show 512 bytes"。 这毫无意义。 写入5120字节后、LED 将切换。 或者我是否缺少了什么?
最后、我发现的所有营销数据都表明 FRAM 没有闪存的生命周期问题。 然而、该示例清楚地警告"长时间运行此示例将影响 FRAM 的寿命。" 是的! 运行此代码有多危险?! 什么被定义为"延长期限?"



