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.

[参考译文] MSP430F5529:通过外部闪存升级固件

Guru**** 2520830 points
Other Parts Discussed in Thread: MSP430F5529, MSPBSL

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/851921/msp430f5529-upgrade-firmware-via-external-flash

器件型号:MSP430F5529
主题中讨论的其他器件: MSPBSL

大家好、

我们的客户通过 SPI 总线将 MSP430F5529连接到外部闪存器件。
客户希望从外部闪存升级 MSP430F5529。  

如果映像来自 CCS 十六进制文件、应如何对映像数据进行格式化?  
2.设置 MSP430F5529器件从外部闪存重新编程其固件映像需要什么?  
3.应进行何种检查以避免使器件起毛?

如果您需要客户提供的其他信息、请告诉我。

谢谢!

Jonathan

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

    你好 Jonathan、

    为了确保我理解、用例是 MSP430F5529将通过 SPI 读取外部闪存、然后重新闪存本身? 这不是 MSP430的典型用例。  这似乎是可能的、但需要创建一个客户 BSL。    

    我建议客户首先查看并查看 MSPBSL。  这将使他们很好地了解通常如何实施现场更新、并提供示例上下文。  

    客户将必须开发一个定制的引导加载程序、该加载程序将是 SPI 主器件、从外部闪存中读取映像、然后将其写入 MSP430F5529的闪存。  在 MSPBSL 页面上提供了创建定制 BSL 的相关信息、但这可能涉及更多内容。  

    至于检查、我认为最好的选择是闪存的 CRC。  它所做的就是确认编程到器件中的固件与从外部闪存中读取的内容相匹配、而不是它的工作。  自定义 BSL 时、他们还可以找到一种方法来实现 BSL 的外部硬件启动以读取新映像。  如果之前的映像损坏/损坏、这可能是故障保护。    

    希望这对您有所帮助!

    谢谢、

    JD

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

    JD、您好!

    提供的链接非常有用、我将需要深入了解 BSL 功能。  

    另一个更深层的问题是、当我用定制 BSL 替换出厂 BSL 并触发它对 MSP430F5529固件进行重新编程时、外部闪存器件将需要保存新固件。  我计划使用更新的固件通过无线通信路径加载外部闪存。  当我从 Code Composer Studio 中获取 Intel Hex 文件并将其直接写入外部闪存时、读取外部闪存的 BSL 代码是否会成功地对 MSP430F5529进行编程、以便在复位后立即使用新固件运行?

    谢谢、

    ED

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

    JD 将比我更了解这一点、但我在为旧的 G2xx 器件使用 SD 卡引导加载程序时研究了文件格式、我没有看到任何适用于十六进制文件的 BSL 代码。  因此、我想您必须在您的定制 BSL 中包含您自己的十六进制解析器。  在我的引导加载程序中没有空间进行此操作、因此我最终编写了一个用于 Windows 的 C 程序、该程序采用了十六进制文件并生成了二进制闪存映像、正是我保存到 SD 卡中的.bin 文件。

    https://github.com/gbhug5a/SD-Card-Bootloader-for-MSP430

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

    您好、Ed、

    我同意 George 的说法。  我不知道直接传入十六进制文件的方法。  我的理解是、需要将其转换为闪存映像。   

    有一个关于将 Simplelink MCU 用作 MSP430的 BSL 主机的应用手册、第5节讨论了如何生成这些映像、我相信它提供了一些 Python 脚本来自动转换 TI 十六进制文件。   

    我认为该应用手册通常非常适用于此处。   

    谢谢、

    JD

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

    Jonathan、

    BSL 限制为2K 字节、因此最好的方法是保存 SPI 闪存二进制文件。  一旦触发更新、就可以使用闪存块写入(超过100KB/s、或者使用智能块写入超过200KByte/sec)非常快速地完成更新。 刷写完成后、BSL 可以通过边界读取检查结果、必要时重复更新序列、或仅更新闪存弱单元。