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.

[参考译文] MSP430FR5964:循环通电时 FRAM 损坏

Guru**** 2380860 points
Other Parts Discussed in Thread: MSP430FR5964, UNIFLASH, MSP-FET
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1001989/msp430fr5964-fram-corruption-on-power-cycle

器件型号:MSP430FR5964
主题中讨论的其他器件: UNIFLASHMSP-FET

我们遇到的问题似乎是 MSP430FR5964 FRAM 在器件上电后损坏的一部分。

链接器存储器段定义如下:
内存{
 TINYRAM         :origin = 0xA、length = 0x0016
 BSL             :origin = 0x1000,length = 0x0800
 RAM             :origin = 0x1C00,length = 0x2000
 INFOMEM         :origin = 0x1800,length = 0x0200
 INFOD           :origin = 0x1800,length = 0x0080
 INFOC           :origin = 0x1880,length = 0x0080
 INFOB           :origin = 0x1900,length = 0x0080
 INFOA           :origin = 0x1980,length = 0x0080
 ROM (Rx)        :origin = 0x4000、length = 0xBF80         /* end=0xFF7F、size 49024 *
 HIROM (Rx)      :origin = 0x00010000,length = 0x00032FFF /* end=0x42FFF,size 208895 */
 Hiram (RW)      :origin = 0x00042FFF,length = 0x1000     // end = 0x43FFF,size 4096 */
 JTAGSIGNATURE   :origin = 0xFF80,length = 0x0004
 BSLSIGNATURE    :origin = 0xFF84,length = 0x0004
 IPESIGNATURE    :origin = 0xFF88,length = 0x0008
 ISRVECTORS (r)  :origin = 0xFFB4,length = 0x004C


文本和只读数据段同时进入 ROM 和 HIROM (这些是较低和较高的 FRAM 段)。

使用 MSP-FET 通过 JTAG 对 MSP430进行刷写后、对电路板进行下电上电。  重新连接调试器、使用 TI 的 UniFlash 工具读取 FRAM 和上部 FRAM 中的存储器、并将其与刷写到微控制器中的二进制文件进行比较。  我们看到只读段中的少数字节已更改(例如.rodata、.lower.text、.upper.text)。

程序通过在.crt_0001部分中定义函数来在引导时启用存储器保护单元(MPU)、该函数在_crt0_start 和_crt0_init_BSS 之后立即调用。  MPU 被配置成只读取和执行 ROM 和 HIROM 段。  如果 MPU 检测到一个非法的存储器操作、那么它将触发一个 NMI、此 NMI 打开一个红色 LED。  由于启用了 MPU、我看不到代码中的存储器错误如何修改 FRAM 的受保护部分。

我们观察到、在刷写程序后、程序正常运行、但在下电上电后、一些 FRAM 已损坏。  每次在较低和较高 FRAM 的不同部分中、不同的字节都会被损坏。  如果程序遇到损坏的指令(取决于损坏段的内容)、则会发生非法指令或存储器违规并触发 MPU、导致红色 LED 亮起。  即使红色 LED 未亮起、我仍然可以读取微控制器的存储器、并看到某些字节在循环通电时发生了变化、即使这些字节未导致可观察到的代码故障。  我已经尝试刷写、让它运行、然后在下电上电前读出存储器。  只有在重启电源后、它才会损坏。

MSP430由3.3V 电源供电、所有 DVCC 和 AVCC 引脚连接在一起。  我在论坛、数据表或勘误表中找不到任何可以提供有关导致此问题的任何线索的信息。  我们已在两个不同的板上重新创建了它。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Sam

    感谢您提供的信息、我知道您可以重新生成此问题。 请问您的应用是什么? 您可以通过 TI 现场团队离线联系 MSP 产品线质量或应用团队吗? 我们将通过邮件为您提供支持。 谢谢!