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.

[参考译文] MSPM0G3519:刷写期间意外断电后、SWD 访问被阻止

Guru**** 2373240 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/1522604/mspm0g3519-swd-access-blocked-after-unexpected-power-loss-during-flashing

器件型号:MSPM0G3519
Thread 中讨论的其他器件:UNIFLASH

工具/软件:

您好:

在使用 Uniflash 通过 SWD 运行期间发生意外断电后、我的客户对 M0G3519 的 SWD 访问权限会丢失。 他们尝试通过 XDS110 和 J-Link 访问 SWD 时未成功。 在此刷写过程中、仅针对 MAIN 闪存、不针对 NONMAIN 区域。

在施加>1 秒的 NRST 脉冲触发上电复位 (POR) 后、他们设法恢复了 SWD 访问。

当然、我们的建议绝不是在刷写操作期间断电、因为这可能会导致不可预测的状态。 但是、由于此处发生断电的情况、重新建立电源应该会触发 POR、而无需将 NRST 保持在低电平超过 1 秒。

您对此 SWD 锁定有何解释?


此致、
François μ s。

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

    嗨、Francois、

    这是一种独特的情况、因为应用程序 只是部分编程、 这意味着 应用程序执行的行为是不可预测的。

    根据您的 描述、 器件在唤醒时似乎遇到了嵌套异常、但这确实是 发生了 POR 还是 BOR?

    但是、我能提供的最好解释是 部分代码会 导致 CPU 中出现不可预测的行为、从而导致嵌套异常、从而导致 CPU 锁定。

    谢谢您、

    Henry Nguyen  

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

    您好 Henry、

    感谢您回复我。

    由于电源中断、MCU 应该已经通过 POR、这意味着 Vdd 降至数据表第 7.6.1 节中所述的 POR-阈值以下。

    您是说 SWD 在某个位置锁定时无法控制 M0+内核、就像它无法返回的嵌套异常一样吗? 由于 MCU 经过了会重新启用调试的 POR(如果未在 NONMAIN 中禁用)、为什么 SWD 无法暂停 M0+内核?


    此致、
    François μ s。

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

    您好 Henry、

    您能尽快回来找我吗?


    此致、
    François μ s。

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

    嗨、Francois、

    很抱歉晚才回复。

    如果闪存中的代码不完整、则该行为将变得不可预测。

    在 未知应用程序运行期间连接到 MCU 时、您可能会遇到 它工作正常或无法工作的情况、具体取决于它执行不完整应用程序 的位置、您可能会再次运行到嵌套异常以阻止连接。

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

    您好 Henry:

    谢谢你,但这没有帮助足够。 请您准确回答我的问题:

    您是否说 SWD 在某个位置锁定时无法控制 M0+内核、比如由于嵌套异常、它无法返回? 由于 MCU 经过了会重新启用调试的 POR(如果未在 NONMAIN 中禁用)、为什么 SWD 无法暂停 M0+内核?


    此致、
    François μ s。

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

    尊敬的 Francois:

    当您打开 MAIN 闪存中存在固件的器件电源时、它将执行固件。 MCU 将执行闪存中的内容。

    在您的情况下、您允许器件执行错误的固件、这将具有不可预测的行为。 应用程序的执行不需要几分钟、它将在 器件通电后瞬时执行。

    这意味着您给该器件通电后、您就会允许该器件直接运行 以下场景:它很可能执行 不正确的应用代码、从而再次导致嵌套异常、从而在您尝试访问 M0 内核本身时阻止您停止器件。

    要解决此问题、请批量擦除或 恢复出厂设置器件、然后正确加载应用程序、看看您是否能够连接。

    这是清楚的吗?

    谢谢

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

    您好 Henry:

    您是否说过、如果 Arm M0+内核由于闪存编程不当而执行一些非法指令、SWD 就无法依靠内核来检查寄存器、存储器等? 这会令人惊讶吗? 您在哪些情况下会发现 SWD 无法进行此类访问?


    此致、
    François μ s。

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

    它只是取决于在一天结束时所做的事情的严重性。

    对于 MSPM0 器件、我们提供 DSSM 命令使您能够在此类情况下重新访问器件。

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

    只是一般的不良做法、例如 取消引用 SP 上的空指针。  列表继续,但你可以得到一般的想法,如果用户要做的事情显然是不恰当的,这导致这样的场景。

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

    您好 Henry:

    谢谢你。 您能否列出相关的 DSSM 命令及其执行方法? 理想情况下、使用 IAR 和 J-Link、但 CCS+XDS110 也是可以接受的、因为这将只是为了恢复故障部件。


    此致、
    François μ s。

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

    https://www.ti.com/lit/an/slaaeo5/slaaeo5.pdf?ts = 1730209153718&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FMSPM0G3507

    请参阅我的应用手册

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

    谢谢您、Henry。