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.

[参考译文] MSPM0G1507:引导加载程序导致 SWD 调试器无法工作

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1468586/mspm0g1507-bootloader-is-causing-swd-debugger-to-not-work

器件型号:MSPM0G1507
主题中讨论的其他器件:UNIFLASH

工具与软件:

大家好、我使用的是次级引导加载程序。 我已正确配置.cmd 文件、并且能够使用修改后的 BSL GUI (我们使用半双工 UART)以某种方式刷写另一个固件一次(写入0x0000)。 (这个过程也是极不稳定的,但让我们在一个单独的线程来讨论它)。

总之、GUI 报告成功、但我刷入的应用程序未运行。 随后尝试运行引导加载程序的操作也不起作用。 GUI 的成功似乎也确实如此、因为我已经尝试通过切断电源来中断固件更新、GUI 会报告故障。

最常见的问题是、在使用 Theia v20.0.1.4或 Uniflash v9.0.0.5086查看闪存时、始终显示此错误:

此时、除了恢复出厂设置目标并重试之外、不能对 XDS110调试器执行任何操作(运行调试、刷新固件)。 幸运的是,这是可行的! 但这也意味着我无法对实际发生的情况进行调试。

有一个相关的注意事项:这似乎与进入 BSL 有关。 恢复出厂设置完成后、如果我使用以下代码在"正常"应用程序中刷写:

DL_SYSCTL_resetDevice(DL_SYSCTL_RESET_BOOTLOADER_ENTRY);

这也会导致 PRSC 故障发生、需要完全恢复出厂设置才能恢复出厂设置。 当辅助 BSL 加载到地址0x6000中时、也会在没有加载辅助 BSL 时发生此情况。

使用 BSL 是否会导致 SWD 调试器永久停止工作、这是预期行为? 是否有办法了解我无法运行目标应用程序的原因?  

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

    尊敬的 Jing:

    这里有几条注意事项:

    第一个也是最简单的一个-我们发布了与 BSL 软件调用相关的勘误表、如上面粘贴的代码所示-请参阅勘误 表项 BSL_ERR_01。 基本上、您在通过软件调用 BSL 之前就需要考虑一些注意事项。

    其他项-我很好奇您到目前为止在次级引导加载程序示例中更改了哪些项? 在定义自定义引导加载程序时、可能会发生很多情况、这些情况会导致器件卡住并需要恢复出厂设置。

    如果您每次运行引导加载程序时器件卡住并需要恢复出厂设置、那么我们假设您会遇到引导加载程序内部的 NMI 或硬故障。 这很可能是器件访问无效的内存导致的。  

    您是否还尝试过通过详细输出使用 Uniflash 中的 BSL 主机功能来查看器件返回到 BSL 主机的内容? 这可能揭示潜在的问题。 GUI 表明 BSL 已成功加载了程序、然后器件无法执行应用程序这一事实使我认为这不会跳转到正确的应用程序代码。 此问题可能从您提供器件的复位矢量开始。

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

    您好、迪伦、感谢您的支持!

    正如您所提到的勘误表所示,我使用了"bsl_software_invoke"示例中的 invokeBSLAsm ();函数跳转到 BSL。 所有问题现在都能解决!

    我已经为以后的论坛用户参考添加了一个不完整的代码片段: