我有一个适用于 MSP430FR5994的 TI-RTOS 项目。 我为该项目实施了系统内固件升级、其操作如下:
- 擦除 FRAM 的上半部分
- 将新固件下载到 FRAM 的上半部分
- 验证新固件
- 从 RAM 运行固件升级功能
- 在信息内存中注意正在进行固件升级
- 擦除 FRAM 的下半部分
- 将 FRAM 的上半部分复制到 FRAM 的下半部分
- 使用以下代码重新启动:
PMMCTL0_H = PMMPW_H; PMMCTL0_L |= SVSHE_1 | PMMSWPOR | PMMREGOFF; __bis_SR_register(LPM4_bits | GIE);
这会在固件升级完成后执行 POR、并使用新固件重新启动 MSP430。 我在位于 FRAM 开头的持久性存储器中有一些数据。 在主程序开始时、我检查信息内存以查看是否有固件升级。 如果是、我会重新初始化持久性存储器中的所有变量。
这在过去很好、但我最近进行了一项更改、更改了永久性存储器部分中的数据结构。 现在、MSP430在固件升级后锁定、但通过正确升级的固件、额外的硬件复位开始正常运行。 我正在尝试调试该问题、但我在确定如何获取调试输出方面遇到了问题。
我无法使用调试器单步解决问题、因为问题仅在从固件的最后一个版本升级到当前版本后发生。 重新初始化所有 GPIO 之前、似乎出现了问题、因此我无法切换 GPIO 以指示代码进度。 在我调用 BIOS_start()之前也会出现此问题,因此我无法使用任何 TI-RTOS 调试或检测工具来跟踪此问题。
还有其他关于如何跟踪此问题的想法吗? 我不知道如何跟踪 POR 之后发生的情况以及代码被卡住的位置。