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.

[参考译文] MSP430FR2311:密码命令后 BSL 没有响应

Guru**** 2589275 points
Other Parts Discussed in Thread: MSP430FR2311

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/628473/msp430fr2311-bsl-not-responding-after-password-command

器件型号:MSP430FR2311

固件正在运行、然后给出跳转到 BSL 的命令。  BSL 在向其发送空器件密码以使其擦除器件时进行响应、但它不响应读取命令。  我为每个命令附加了两个信令捕获。  如果有人能帮助我了解我的错误,我会很感激。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    首先、我认为 MSP430 FRAM BSL 用户指南中有一个错误、因为数据包的长度应该是0x21、而不是0x33。 您是通过软件命令还是 RST/TEST 进入序列调用 BSL? 发送不正确的密码后、您需要等待多长时间? 典型示例在输入错误密码后延迟2ms、因为应用错误密码后器件不会给出任何响应。 下一步是在发送固件之前发送默认的空白密码以解锁 BSL (在这种情况下会返回确认)。

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

    您好、Ryan、

    我通过软件命令调用 BSL、长度更改解决了命令问题、但现在它在第二个默认密码命令之后停止。

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

    我之前对延迟不正确、它是2秒而不是2ms。 您可能需要等待更长时间才能发送另一个默认密码。

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

    您好、Ryan、

    是的、是这样做的、现在正在发送它的数据。  我在该论坛上看到的另一个问题是、有人说空白器件检测当前不适用于此器件。  是这样吗?  我的假设是、只要我保存了复位矢量写入直至最后、如果程序在任何时候失败、并且器件重新启动、它将看到复位矢量为0xFFFF 并跳转到 BSL。  这是正确的假设吗?

    谢谢。

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

    确实、由于勘误表的原因、空白器件检测目前不适用于所有器件、TI 正在内部工作以解决此问题、以供将来的裸片版本使用。 此时、具有0xFFFF 的空白器件的复位矢量不会自动跳转到 BSL、因此必须改用 TEST/RST 进入序列或软件调用。

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

    由于这种限制、您是否具有有关如何编写只需检查地址并跳转到应用程序或跳转到 BSL 的微小辅助引导程序的示例代码? 这包括为应用程序设置单独的矢量表、这样在升级时、我可以为器件设置相同的密码、我只需确保我没有过度写入次级引导程序。 不幸的是、该应用程序是3568B、所以我只剩下144B。

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

    目前没有任何示例代码可帮助解决此问题、解决勘误表 BSL18 (空复位矢量不调用 BSL)的裸片修订版将不会再发布几个月。 我认为次级引导程序不会解决您的问题、因为如果复位矢量为0xFFFF、则永远不会执行此操作、并且由于 MSP430FR2311器件上没有信息存储器、因此没有用于存储此代码的安全位置。

    您最好禁用 BSL 密码错误时的批量擦除功能、并保持正确的密码以解锁 BSL。 解锁后、您可以首先擦除特定的存储器地址、该地址在 BSL 编程结束时被重写。 这可能是您的软件调用代码检查以查看最后一个 BSL 序列是否成功完成的标志。

    您的另一个选择是在批量擦除之后首先对软件调用代码进行编程并重置向量、再次使用该标志检查并查看预期编程的最后一个地址是否已完成。 这两种解决方案都不是完美的、但它们将有助于降低所涉及的风险。

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很明显、当我说次级引导加载程序时、禁用整体擦除并使用具有固定矢量表的小型应用、 这将是器件的初始程序、在该程序中、小型应用程序仅检查是否存在实际应用程序(使用您的特定存储器地址设置)、否则跳转至 BSL。 我唯一的问题是如何移动真实应用程序的矢量表、以及如何使用链接器重新映射矢量表或设置代理矢量表。 这就是我希望你能帮助我的事情。

    如果我了解您的示例、我想如果升级中断、这在我们的设置中很可能会中断、我会一直坚持。 这就是我希望创建上述拆分应用程序的原因、这样、即使实际应用程序的矢量表会在不同版本之间发生变化、小型应用程序的密码也会始终相同。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    听起来好像您正在尝试复制 MSPBoot/MSP430FRBoot 资源(SLAA600/SLAA721)、但我不确定您是否可以在有限的代码空间内完成此操作。 您可以尝试进一步优化您的代码以获得更大的内存裕度。

    如果升级在我的示例中被中断、那么在启动时、软件会识别地址标志保持复位并调用 BSL、从而避免出现错误状态。 如果在对地址标志检查和调用代码进行编程时中断编程、则可能会出现唯一的问题。

    编辑:此问题的结论正在脱机处理。

    此致、
    Ryan