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.

[参考译文] MSP430FR2476:自动调用 BSL 的帮助

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/883111/msp430fr2476-help-with-autoinvoke-bsl

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

您好!

我的产品中包含 MSP430FR2476 MCU。  当我需要通过另一个更大的 MSP 刷写新固件时、启动 BSL 并对其重新编程。  这一切都很好、我的 BSL 命令也可以正常工作。  我陷入困境的情况是、如果映像闪存被拧紧、我需要 MSP430FR 器件自动调用其 BSL。   

例如、如果我的客户在更新过程中遇到问题、并且出现欠压或只是拔下馈送 PCB 图像的数据电缆等...我需要能够恢复。  因此、我需要的是一种在没有任何 MSP430FR IO 交互的情况下返回 BSL 的方法。  我无法访问 RST/TEST 引脚。  我通常通过来自软件 UI 的命令来调用 BSL、该命令命令主处理器向 MSP 发送消息、告知 MSP 调用它的 BSL。   

因此、我很难处理这种临界情况、即如果第一次刷写尝试因任何原因而失败、如何重新刷写 MSP430FR 器件。  我已经了解到、此部件属于 MSP 类别、如果存储器被擦除、则会自动调用 BSL。  我指的是 TI 的 slau550x"MSP430 FRAM 器件引导加载程序(BSL)"文档。  在第3.3.3节中、有一段关于空白检测的内容。  我还附上了此部分的屏幕截图。

我可以在工作台上很好地测试这个、现在我正在擦除器件并重新启动我的系统。  在空白的 MSP430FR2476中、我将尝试摆脱这种挑选。  我正在尝试在第3.4节提到的超时功能的10秒内发送 BSL 消息。  BSL 似乎从未响应。   

是否有人有任何意见或我需要编写寄存器来告知自动调用功能在加电时执行?   

我使用 I2C 作为我的 BSL 链接、而不是 UART。  我的主处理器还会在加电时配置其他一些 IC、但它们不共享0x48的 BSL 地址。  我认为这不是问题吗?

非常感谢您的帮助!!

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

    Robbie、您好!

    您可能已经知道了、但 MSP430的所有 BSL 相关配套资料、包括您在此处截获的文档、都可以在 MSPBSL 页面上找到。  

    我正在尝试理解您的问题。  听起来好像您没有通过硬件进入序列调用 BSL、而且目前电路板上无法实现。   相反、您似乎是在向 MSP430发送消息、告诉它通过应用软件调用 BSL。  是这样吗?   

    如果为空、我不知道器件会自动进入 BSL、并且似乎没有太多信息。  我将假定、只要器件已经被整体擦除或全新、BSL 就会自动被调用、如这里和数据表中所述。   

    问题:

    1. 您是如何擦除器件的?  (在现场的这一临界情况下、您计划如何执行此操作?)
    2. MSP430 FRAM 器件引导加载程序 UG 中的4.1.5.2似乎显示了在批量擦除之后应该发送的序列。  这是您为此测试发送的命令吗?

    谢谢、

    JD  

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

    JD、您好!

    因此、我已经设法弄清了目前的情况。  事实上、如果器件为空白且我的是 BSL、则在加电时会有部分系列启动到 BSL。  这实际上很好。  我首先发送的是启动 BSL 命令、似乎会将事情拧得更松。  在我开始发送直接命令后、它工作正常。  捕获是、BSL 仅提供10秒。  这不是很好,但也不坏,我现在有一条很好的路要走。

    我无法访问测试和复位引脚、因此如果我的客户在尝试加载映像时擦除 MSP、但实际上没有加载映像数据、我本来无法重新刷写器件。  这是我最初的问题。  因此、它有点被解决了。

    我现在的最终问题是以下问题。

    我无法访问 MSP 的 TEST/RST 引脚、我正在通过另一个 MCU 的 I2C 消息调用 BSL。  如果加载了映像并且器件不是空白(而是损坏的映像或其他内容)、是否有任何方法可以在不对测试/复位引脚进行物理访问的情况下启动/访问 BSL?

    感谢您的观看!

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

    Robbie、您好!

    不幸的是、这也是我所好奇的边缘案例。  如果已损坏的映像被加载并阻止应用程序在软件中调用 BSL、那么除了使用 TEST/RST 引脚从外部调用 BSL 之外、我看不到其他方法。    

    如果为空、此器件将自动调用 BSL、但我也不知道擦除闪存映像损坏的器件的方法。  (唯一的例外是从外部调用 BSL 并发送错误的密码、但如果我们可以从外部调用 BSL、则我们不需要执行此操作。)

    似乎总是会有一些风险。   

    谢谢、

    JD

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

    这需要重新调整代码、但您可以让重置矢量始终指向存储在信息存储器中的代码、即使在批量擦除时、该代码也会受到永久和写保护(如果可能)。  该代码将首先检查是否需要调用 BSL、如果不需要、则会跳转到实际应用(必须始终从同一个位置开始)。  调用测试可以是引脚(任何引脚、甚至是其中一个 I2C 引脚)的状态、也可以是主器件进行的一些通信。  或者、如果 BSL 超时将控制权返回给信息代码、则它甚至可以始终调用 BSL。

    另一个想法是、您实际上不必对整个器件进行整体擦除、只需用0xFFFF 覆盖复位矢量、然后进行复位或下电上电。  我不知道是否有方法可以做到这一点。

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

    你好,George,谢谢你的回答,非常有帮助!!

    信息存储器是否甚至可以安全地防止 BSL 批量擦除?

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

    没关系-在 BSL 用户指南中找到了批量擦除消息的答案。  这样做看起来我需要手动擦除。

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

    同样作为供参考- BSL 密码需要的是代码空间的前16个字节、而不仅仅是复位矢量0xFFFE。

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

    我不清楚为什么需要大规模擦除 FR 器件、甚至是有益的。

    无论如何、在使用诸如 G2553之类的芯片的旧时代、您可以在不同的时间点从固件进入 BSL、这将产生防止批量擦除时擦除任何信息存储器的效果。  但是、新芯片到目前为止还不能让您了解 BSL、因此这可能是不可能的。

    是的、密码是一个持续的问题。  在您的情况下、如果更新失败、您下次应该提供哪个版本的密码?  换言之、您将从哪个版本的固件升级?

    嗯、我想看看您为解决方案提出了什么。

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

    我会报告-我正在制定一个计划。

    我确实在 BSL 文档中发现了一个错误-请参阅随附的图像。