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.

[参考译文] MSP430F5342:在擦除和重新编程 BSL 后无法保证 BSL 再次工作

Guru**** 2551570 points
Other Parts Discussed in Thread: MSP430-FLASHER, MSP430F5342, MSP430F5529, MSP-FET

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/590192/msp430f5342-cannot-bet-bsl-working-again-after-erasing-and-re-programming-bsl

器件型号:MSP430F5342
主题中讨论的其他器件:MSP430-FLASHERMSP-FLASHERMSP430F5529MSP-FET

我试图取消保护一些先前受保护的 MSP430、我遇到了一些奇怪的事情。

我擦除了 BSL 段(A、B、C、D、0x1000到0x17ff)并重新编程。 我使用了三个单独的图像、但都不起作用。 这些图像包括:

自定义 BSL 软件包版本1.00.12.00中的 BSL.00.06.04.04

自定义 BSL 软件包版本1.00.12.00中的 BSL.00.07.05.04

此外、我已经从另一个(工作)板读取了 BSL、它的字节与6.04.04相同。 我已验证签名(主要和次要)是否正确、并且 BSL 实际上已编程到器件中。 为了重新迭代、"坏"板工作正常、直到我对 BSL 进行核化并对其进行重新编程。

当我查看复位、TCK、RX 和 TX 线路时、我会看到正确的行为(参考 SLAU319、第1.3.2节)比较工作中的器件与非工作中的器件、我会看到一切一样、除了非工作中的器件从其 Tx 线路中不发送任何内容。

尝试调试引导 ROM 和 BSL 非常具有挑战性。 代码保护功能和一些 IDE/调试器功能似乎在每个方面都能阻止这种情况的发生。

我已经观察到、引导 ROM 必须调用 BSL 的 BSL_PROTECT 函数、因为 SYSBSLC 寄存器的 SYSBSLPE 位已设置、两个大小位也是如此、这正是加载到器件中的 BSL 应该执行的操作。

在 BSL 被固定时、是否有一些配置项会被擦除、从而影响 BSL 运行? 我已经阅读了我在引导、BSL、BSL-Scripter 等上可以找到的所有内容、找不到任何错误。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您使用什么工具和接口来擦除和编程 BSL 区域? 是否也可以擦除任何其他存储器段? 您能否通过读出该区域来确认 BSL 闪存存储器正在被正确重新编程? 您会发现工作单元和故障单元之间的 BSL 闪存(以及相关的所有主存储器)是相同的? SYSBSLC 寄存器的值是多少?

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

    我将 MSP -FET 接口与 MSP430-Flasher 版本1.3.12搭配使用
    我要使用的命令行是:
    MSP430Flasher.exe -b -w BSL.00.07.05.04.txt -v

    然后、我使用 CCS 加载了我的应用、通过关闭 SYSBSLPE 位、可以观察到从0x1000到0x17ff 的存储器是正确的。 具体而言、我已经验证了签名字节。

    初始事件(涉及对 BSL 存储器的最后512字节部分进行编程擦除和重新写入)可能会无意中写入其他存储器块。 不过、我很想知道另一个块的存储器可能是什么。
    SYSBSLC 寄存器的值为0x8003、表示针对所有4个 BSL 存储器段启用了 BSL 存储器保护。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    约书亚、

    到目前为止、只有一个器件发生了这种情况? 它是哪个版本?

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

    只有一个。 我也欺骗了另一个、但在这种情况下、BSL 的第一部分会被擦除(使其死区)、但签名和 JTAG 锁定的内容不会被改动。 这是真正的魔法,我知道这是怎么发生的。

    在该特定器件上、我无法读取修订版本级别。 但是、我可以读取器件信息。 这让我发现器件数据表和系列参考手册(msp430f5342.pdf 与 SLAU208p.pdf)之间存在差异。 在 SLAU208中、显示固件版本是第一个、硬件版本是下一个。 5342 pdf 说明了这是另一种方法。 由于5342 pdf 指出了明确的地址、因此我将从现在开始在我的描述中进行介绍。

    位置0x1A06 -应该是硬件版本、我们的值为0x18、0x1A07 (固件版本)的值为0x12。

    这有帮助吗? 字母的第24个字母将是 X、因此这对我来说是没有意义的、但器件描述符表中的数字可能不会将一个映射到一个到修订级别。

    此致、
    Josh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是数据表和用户指南之间一个有趣的区别、我一定会提醒文档团队注意此错误。 同时、0x1A06是硬件版本的正确地址、值0x18表示修订版 I (来自勘误表)。 已知的 BSL 勘误表已从修订版 I 修复为 K、但此勘误表与您的问题无关、无论如何 BSL 升级应该已修复此问题。

    如何使用锁定的 JTAG 对 BSL 进行编程? 似乎只能使用驻留 BSL 来解锁 JTAG、然后使用 JTAG 通信来对 BSL 进行编程。 如果不按顺序执行此操作、可能会使您无法使用这两种编程方法。

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这个特定的部分未被锁定、这是因为 BSL 闪存的最后4个字节以及 BSL 最后一个段的其余部分被擦除。

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

    我设法使另一个单元砖砌。 在这种情况下、我有一个工作单元、该单元未被锁定、我使用上面提到的两个中较新的一个擦除并重新编程 BSL、现在 BSL 将不工作。 我仍然可以对其进行 JTAG 操作、它仍然会运行我 JTAG 所使用的代码、但我无法激活 BSL。 5342随附的 BSL 与分布的 BSL 是否有特殊或不同之处?

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

    我正在联系定制 BSL 专家对此事发表评论。

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

    谢谢你。 请告诉我是否应该收集更多信息或进行实验。

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

    我们仍在尝试查找有关您问题的线索、但现在比较短、在 IAR 中、可以将 PC 设置为0x1000并使用提供的调试符号进一步调查您的一方。

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

    Ryan、

    很遗憾、我没有 IAR 许可证。 可以在 CCS 中设置 PC、但似乎无法加载符号。 不管怎样、当我尝试通过 BSL 进行单步执行(在汇编级别)时、BSL 第一次跳转到 ROM 例程时、CCS 调试器会丢失该图、必须重新启动。 我尝试过这种情况好几次、因此 CCS 似乎根本无法处理这种情况。

    您有什么建议可以继续吗?

    在您的一侧、我认为您可以通过简单地使用 MSP-Flasher 擦除和重新编程5342上的 BSL 来重现此问题。 那么、您大概可以使用您的 IAR 工具来判断发生了什么。

    此致、

    Josh

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

    Ryan、

    对此有任何报告吗? 您可以尝试擦除和重新编程5342上的 BSL 吗? 这就是我在第二种情况下所做的一切、它使 BSL 不起作用。 我认为有很好的机会、它也会为您提供同样的功能。

    此致、

    Josh

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

    Josh、您好!

    我认为您正在下载的内容与 BSL 签名之间可能不匹配。 这可能会导致新下载的 BSL 无法正确响应。 我刚才将与您相同的 BSL 下载到 MSP430F5529板上、并且能够访问 BSL。MSP430F5529是 MSP430F5342的父器件。 要尝试清除此问题、我建议您在具有 JTAG 访问权限的器件上执行以下操作。

    1. 下载 Elprotronic Lite FT-PRO 430。 它是我们合作伙伴 Elprotronic 提供的免费工具、可帮助简化此过程。
    2. 单击 Setup (设置)> Memory Options (内存选项)、然后选择 Code File (代码文件)(包括所选 BSL)使用的单选按钮。 此外、确保所有 BSL 闪存段复选框都直接位于其右侧。
    3. 单击 Setup (设置)> BSL Password and Access (BSL 密码和访问)。 禁用此复选框、因为我们现在要将 BSL 保持打开状态。 您可以稍后在 BSL 映像中将其更改为具有密码。
    4. 单击 Setup Connection / Device Reset (设置连接/设备重置)。 确保此处的设置与您的 JTAG 连接类型(4线对2线 JTAG)相匹配、并且选择了正确的 COM 端口。 自动功能正常。
    5. 确保 MSP-FET 连接到器件、然后点击右侧的擦除闪存按钮。 将弹出一个对话框、确认您是否要擦除所有闪存、仅擦除用户定义的空间或取消。 选择是、删除所有闪存内容。 (这将包括 BSL 区域)。
    6. 在工具中、将其指向器件的最新 BSL 映像。 (打开 Code File 按钮、左上角)
    7. 单击 Auto PROG (自动编程)。 在 BSL 中进行编程。

    上述过程应该为您提供一个具有最新 BSL (或您在中编程的 BSL 版本)的空白器件(主闪存)、就像它脱离了 TI 的工厂线一样。 您可以使用 BSL Scripter 来确认 BSL 的功能。 希望这能帮您解决问题。

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

    Jace、

    我完全按照您的指示操作、结果是没有任何变化。 设备仍然以相同的方式出现故障。 器件中的 BSL 从不通过 UART Tx 线路发送任何内容。

    此外、EpProtronic 工具还包含过时的 DLL、并将 MSP-FET 重新闪存到旧版本的固件、然后在返回 TI 工具时必须重新闪存。

    我想我可能会向您发送一个带砖头的示例、如果有必要、还会随附 BSL 接线适配器。

    此外、我相信我已经完成了与您建议的使用 MSPFlaser 的程序相同的操作、结果也是一样的。 您是否有任何理由认为 MSPFlaser 出现了问题?

    此致、

    Josh

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

    Josh、您好!

    就 MSP430 DLL 和 Elprotronic 工具而言、它只会将它更新的最后一个 DLL 识别为最新的。 如果您使用的是最新版本的 CCS、并且已经将该 DLL 下载到 MSP-FET 上、请忽略 Elprotronic 工具为您提供的更新。

    我不确定 MSPFLasher、因为我不经常使用它。 我知道我之前的帖子中的程序、就像我刚刚执行过的那样。

    如何在对 BSL 进行编程后对其进行测试? 您能否使用 BSLScipter 将闪烁 LED 应用程序编程到器件上? 如有必要、我可以提供此脚本。

    您能否提供图片、说明在通过 JTAG 编程期间如何将 MSP-FET 连接到 MSP430? 还需要通过 BSL 进行测试? 如果这是定制电路板、您能否共享原理图的 MSP430部分? (如果需要、我们可以通过 PM 执行此操作。)

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

    JH、

    我可以提供原理图和图片、但我需要通过私人方式与您联系。

    此外、它可能在所有方面都已经丢失、但在 BSL 被擦除和重新编程之前、不起作用的器件确实可以用于 BSL 编程。

    此致、

    Josh

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

    了解您的评论。 这是 hwy、我认为 BSL 签名可能未对齐、从而导致您的问题。 对所有内容进行完全擦除可以解决此问题。 单击我的姓名并向我发送朋友请求。 在我接受后、您可以让我感到失望。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    HMM、

    我尝试了一些不同的东西、现在取得了成功。 之前我使用了该器件可用的最新 BSL 版本(0.07.05.04)、无法使其正常工作。 我刚刚尝试过6.04.04版(原始出厂版本)、它起作用了。

    我想我的问题已经解决了、但为什么版本7 BSL 不起作用? 我想那是我们应该使用的版本吗? 此外、为什么 MSP-Flasher 无法实现相同的结果(我使用该工具多次尝试了这两个版本)? 如果您要提供工具、您应该在内部使用它、并确保它能够在类似的常见使用场景中正常工作。

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

    我看到的原理图有一个不符之处、是适配器板上的 UART TX 线是引脚11、而板载接头是引脚10。 这是否在电缆内得到了处理? 否则 UART TX 未连接到器件。

    我看到你在写这份答复时又发表了。 很高兴知道您现在可以使用它。 我想、如果您在使主闪存保持空白并在 BSL 工作后使用最新的 BSL 版本重新编程 BSL、它也会起作用。 再说一次、我认为 BSL 签名会以某种方式混淆、从而导致失败。 我之前已经看到过这种情况、但完全擦除可以解决该问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    JH、

    我还有另一个发展需要报告。 当我在其他两块砖型电路板上尝试相同的过程时、他们没有响应、仍然被骗了。 我已经在这些板上尝试过两个 BSL 版本、但都不起作用。

    Josh