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.

[参考译文] MSP430F5438A:更新固件映像-使用从 i2c 中检索并刻录到闪存中的.bin 文件

Guru**** 2587365 points
Other Parts Discussed in Thread: MSP430F5438A

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1008355/msp430f5438a-update-firmware-image---using-a-bin-file-retrieved-from-i2c-and-burned-into-flash-memory

器件型号:MSP430F5438A

我的任务与大约20年前在 ARM7TDMI 定制 SoC 上工作的任务非常相似、只有一小队工程师。  这次我遇到了一个问题、需要社区提供一些指导。

(一些背景):

我们有一款具有 MSP430F5438A 的产品 、需要现场更新。  产品随附时未连接 JTAG 或串行终端。  因此、更新固件的设计方法是使用 i2c 发送新的固件映像。  该产品是主设备、可从从属设备检索新.bin 映像的大小和 CRC。  然后、它通过 i2c 以较大的块获取图像、填充 RAM 并将图像从 RAM 烧录到闪存中的"暂存区"[重复执行直到完成]。  当整个映像位于闪存中时、将执行 CRC 来验证映像。  如果.bin 映像未验证、任何复位都会导致 MSP430使用旧的"原始"映像重新启动。  如果新映像 验证、复位将导致 MSP430使用新映像重新启动。  为此、我认为我需要从闪存中的"暂存"区域移动"新"图像以覆盖旧图像。

我注意到、在文档中、BSL (引导加载程序)可以使用 UART 和 I2C 通信协议(请参阅 SLAS655G -部分映射 MCU 编程器和调试器页面101)具有 i2c 功能、 虽然我不确定它是否可以用于设计、但现在无法进行设计更改。

目前、我能够通过 i2c 检索新映像、将其刻录到闪存中的"暂存"区域、并执行 CRC。  现在、我需要一只手来介绍有关如何继续的最后一个障碍。

接下来是否要用新映像覆盖旧映像并重新引导?  如果是、我需要一些指导、 例如 :复制新映像的位置、以便"重新设置"将以新映像引导。

如果有任何帮助、我们将不胜感激、

注意: 也许有一种更简单的方法来使用 BSL 和闪存中的新映像-我对不会完全改变设计意图的其他方法持开放态度。

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

    出厂 TI UART BSL 存储在2 KB 的 BSL (默认受保护)闪存段中。 它是开源的(由 TI 提供)、可进行修改/定制。 如果我记得对、它被 slau319覆盖。 我不确定 F5438是否还有 I2C 示例。 您还可以检查与 BSL 无关的 MSPBOOT。 总之、此页面上收集了所有内容...

    https://www.ti.com/tool/MSPBSL

    BTW、如果将刷写函数复制到 RAM 并从 RAM 执行、刷写操作会更容易(如果使用块写入、刷写速度也更快)。