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.

[参考译文] MSPM0G3507:BSL

Guru**** 2776335 points

Other Parts Discussed in Thread: MSPM0G3507

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1612859/mspm0g3507-bsl

器件型号: MSPM0G3507

您好!

我正在使用 MSPM0G3507 执行固件更新。 MSPM0 引导加载程序 GUI 作为 BSL 主机。

从调用 BSL 到执行批量擦除和数据编程、一切都正常。 但是、在最后选择“启动应用程序“时、它会卡住。 从 ACK 0x00 来看、它看起来也不错。
image.png

您能给我一些调试这个问题的建议吗?

另一个问题:当我从应用映像调用 BSL 后进入 BSL 模式时、系统不会跳转到新固件。 现在我正在尝试复位、但似乎始终处于 BSL 模式。 在断电和上电后、为什么它不返回到上一个从 0x0000_0000 开始的应用程序映像?  


此致
zq

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

    嗨、zq、  

    如果手动重置器件或重启器件、会发生什么情况?  它是否会运行?   

    下电上电后的上一个图像意味着什么?  您是否使用 BIM 来管理多个映像?   

    我正在查看我们的 MSPM0 BSL 用户指南 、您的波形似乎显示了正确的“启动应用程序“命令、0x00 是来自 BSL 的正确响应。  然后它应使器件复位并启动闪存中存储的代码。   

    默认情况下、BSL 将擦除整个 MAIN 闪存。  它将擦除您的“以前版本“固件、必须加载新固件。  如果 BSL 无法加载新固件、那么当器件复位/下电上电时、将不会加载任何代码以使其运行。   此外、如果闪存为“空“、则器件将默认引导至 BSL。  空时、它实际上只检查存储器从 0x00 开始的前 4 个地址。   

    希望这有所帮助。

    JD

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果手动重置或重启设备、会发生什么情况?  它是否会运行?   [/报价]

    器件下电上电后、仍会运行 BSL 代码(位于 0x0000 1000 中)  

    重启后上一个图像是什么意思?  您是否使用 BIM 来管理多个映像?  [/报价]

    这里、先前的映像表示“使用 BSL 调用的应用程序代码“、到目前为止我未使用 BIM

    默认情况下、BSL 将擦除整个主闪存。  它将擦除您的“以前版本“固件、必须加载新固件。  如果 BSL 无法加载新固件、那么当器件复位/下电上电时、将不会加载任何代码以使其运行。   此外、如果闪存为“空“、则器件将默认引导至 BSL。  空时、它实际上只检查存储器从 0x00 开始的前 4 个地址。   [/报价]

    加载的新映像似乎不正确。  
    但我检查存储器、存储器的前 4 个地址中有从 0x00 开始的内容。

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

    嗨、ZQ、  

    MSPM0G3507 是一款单组器件。  如果您不使用 BIM 示例、则设备上将仅显示一个映像。  如果您将其擦除并且 BSL 失败、则器件上没有良好的映像。  最好的方法是返回 BSL 模式并尝试再次更新。   

    我猜您的器件并不是真正处于 BSL 模式。  代码损坏、MCU 进入杂草、卡在某个地方、当您重新调用 BSL 时、可让您再次尝试更新 MCU。   

    通常、我建议最后对存储器的前 4 个字节进行编程。  这样、如果更新失败、器件会认为它为空白、并自动跳回 BSL 模式、以便 BSL 主机可以重试。   

    希望这有所帮助。

    JD

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

    尊敬的 JD:

    感谢您的解释。

    我还需要集成 BIM 代码和辅助 BSL 代码来执行固件更新。 我计划先放置 BIM、然后放置辅助 BSL、再放置时隙 1 和时隙 2。

    具体思路是:

    • 使用 BIM 确定哪个映像是最新的映像并启动应用程序。

    • 只能使用辅助 BSL 对映像进行编程。 编程后、器件将复位、BIM 会决定要启动哪个映像。

    这种方法是否可行?
    我是否应该注意一些具体的问题?

    谢谢、
    zq

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

    尊敬的 JD:

    我还有一个问题。

    在辅助 BSL 对新映像进行编程之前,它如何确定要擦除哪个槽位 — 槽位 1 或槽位 2? 我是否需要实现任何相应的逻辑(类似于 BIM)以确保在编程之前擦除正确的时隙?

    谢谢、
    zq

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

    您好 zq、

    我认为 BIM 示例使用 XIP(就地执行)、这意味着必须针对较低或更高的时隙构建映像。  因此要进行更新、BSL 主机端需要知道要擦除和覆盖的槽位。  您可以通过 BSL 擦除所需的段。   

    如果您尚未查看以下文档:   

    BIM 用户指南。   

    BSL 用户指南

    谢谢、

    JD