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.
工具与软件:
我正在开发一个用于 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 不会在正常阶段运行。 它在引导阶段出现故障。
以下 主题中的幻灯片可能会为您提供一些指导:
B.R.
SAL
尊敬的 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]