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:MSPM0G1507

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1385831/mspm0g1507-mspm0g1507

器件型号:MSPM0G1507

工具与软件:

我正在开发一个用于 MSPM0的闪存编程器、该编程器在通过 SWD 运行的 Teradyne 内电路测试仪上运行。

我已成功为 MSPM0G1507开发了该闪存编程器。 它适用于我拥有的3个固件样本中的2个。 引导后、第3个固件样例似乎会关闭我通过 SWD 对内核的访问。

我想确定我处于 SWD 安全级别1还是级别2。 如果仅为级别1、我需要知道是否有详尽文档的程序可以批量擦除器件或使器件恢复出厂设置?

这是此时 SWD 的状况。 我可以读取 IDCODE、但任何读取 IDR 寄存器或内核中的任何寄存器的尝试都会在 SWD 上产生一个 ACK=001b 故障。 如果我将 NRST 引脚保持为低电平、我会得到正确的 ACK=100b、但任何寄存器 I 访问的内容始终读取0x00000000、包括 IDR。 通过这种行为、您能告诉我我所处的安全级别是什么吗?

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

    尊敬的 Dudley:

    [quote userid="131532" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1385831/mspm0g1507-mspm0g1507我想找出我是处于 SWD 安全级别1还是级别2。 如果仅为级别1、我需要了解是否有详尽文档的过程可以批量擦除或恢复出厂设置器件?[/QUOT]

    SWD 安全不会影响恢复出厂设置。 所以、我认为恢复出厂设置可以将器件重置为初始级。 恢复出厂设置有自己的安全级别。

    [报价用户 id="131532" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1385831/mspm0g1507-mspm0g1507 "]如果我将 NRST 引脚保持为低电平、[/QUOT]

    目前、引导代码卡在 NRST 低电平、因此 MCU 不会在正常阶段运行。 它在引导阶段出现故障。

    以下 主题中的幻灯片可能会为您提供一些指导:

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1383220/mspm0l1306-mspm0-low-power-handling-with-pwr-ap/5291037#5291037 

    B.R.

    SAL

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

    SAL

    我开始觉得我的问题与社署的保安无关。 我怀疑这与加载的固件损坏有关、实际上是复位矢量提供了一个无处可去的桥梁。 导致此问题的固件是.bin 文件大小不完整(不是预期的131072字节)

    您认为这是可能的吗?

    但我仍然想知道、如果 SWD 无法访问内核地址空间、是否有办法恢复未编程的部分。

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

    尊敬的 Dudley:

    实际上、我认为不完整的固件可能会导致 MCU 异常运行结束、从而可能导致 MCU 无响应。 因此缺少 SWD 连接或命令。

    大多数情况下、恢复出厂设置可以缓解问题。 它将擦除所有 MAIN 闪存固件、并将默认 NONMAIN 固件重新存储到器件中、以便可以访问器件。

    B.R.

    SAL

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

    SAL

    是第22章

    从 slau846手册:

    NONMAIN 闪存区域中的配置数据不受批量擦除命令的影响、但经由调试子系统邮箱(DSSM)通过 SWD 发送给 BCR 的出厂复位命令将其擦除并重新编程为出厂默认值。

    如果我的 SWD 无法正常工作、应如何执行此操作?

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

    尊敬的 Dudley:

    为了通过 DSSM 恢复出厂设置、在 CCS with XDS110 (TI 的调试器)中会自动复位器件、然后发送一些命令让器件保持 SWD 控制。

    如您所知、始终需要时间让器件运行启动代码、然后输入应用代码。 因此、调试器仍有时间通过某个命令来控制器件。

    我不确定您是否能够通过 SWD 成功实现 DSSM? 它与  SWD 安全级别无关。 您是否要求获得有关如何实施这些建议的指导?

    B.R.

    SAL

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

    SAL

     XDS110 (TI 的调试器)是否在保持 NRST 为低电平时恢复出厂设置?

    当我保持 NRST 为低电平时、SWD 为我提供所有正确的 ACK 模式。 它只是将我尝试读取的每个地址清零。

     

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

    SAL

    别介意我最后一个问题。

    周一、我将尝试使用 slau887中所述的 UART 引导加载程序来恢复损坏的器件。

    我有关于 CMD 解锁引导加载程序的问题。 此命令的32字节密码是否存储在 NONMAIN 存储器中? 如果是、在哪里? 我在参考手册的 NONMAIN 存储器映射中找不到此文档。 我假设所有 FFs 都是正确的出厂默认设置?

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

    尊敬的 Dudley:

    是、默认值全部为0xFF。 您可以在此处找到说明:

    B.R.

    SAL

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

    我很高兴地说、使用 UART 引导加载程序执行批量擦除已恢复 SWD 的功能。 因此、这强化了我的理论、即 SWD 不工作是由使用模糊的复位矢量编程的主闪存引起的。

    现在、我想对 SWD 执行恢复出厂设置。 但我似乎不能连接参考手册中的点。 手册告诉我它如何在 NONMAIN 寄存器中被禁用或受密码保护。 但手册留下了太多的想象力如何实际做到这一点。 我的理解是、SWD 恢复出厂设置会擦除 NONMAIN 并自动将其重新编程为出厂默认值、是这样吗? 我是否只需将恢复出厂设置命令加载到 DEBUGSS 中。 TXD 寄存器? 是否有相应的书面过程。

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

    尊敬的 Dudley:

    我很高兴地说、使用 UART 引导加载程序执行批量擦除已恢复了 SWD 的功能。 因此、这强化了我的理论、即 SWD 不起作用是由使用模糊的复位矢量编程的主闪存引起的。[/QUOT]

    批量擦除不能恢复 SWD 功能。 您可以读取 NONMAIN 中的固件并检查它是否更改 NONMAIN。 此时会出现其他情况。 您可能 无法成功修改 NONMAIN、否则会阻止您连接 SWD。例如、损坏的器件映像可能会使 CPU 失控、然后在 CPU 失控时无法连接 SWD。

    我认为 SWD 恢复出厂设置将擦除 NONMAIN 并自动将其重新编程为出厂默认值是正确的吗? 我是否只需将恢复出厂设置命令加载到 DEBUGSS 中。 TXD 寄存器? 是否有相应的书面过程。

    是的、通过 SWD 恢复出厂设置将自动恢复默认 NONMAIN 数据。

    但我不知道如何在恢复出厂设置时实现 DSSM 命令的详细步骤。

    实际上、我们在 CCS 中提供了一个脚本来帮助客户使用 SWD 恢复出厂设置。 您可以在下面找到它、或许它可以帮助您:

    GEL_DAPInit_remoteFactoryReset

    如果您需要其他说明、请告知我。 我可以转发给调试器专家 以及您是否可以参考其他文档。

    B.R.

    SAL

    [/quote]