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.

[参考译文] MSPM0G1519:通过目标配置进行受密码保护的连接

Guru**** 2551110 points
Other Parts Discussed in Thread: SHA-256

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1565195/mspm0g1519-password-protected-connection-through-target-config

器件型号:MSPM0G1519
主题中讨论的其他部件:SHA-256

工具/软件:

香榭丽舍大街

我一直在测试 Launchpad 上受密码保护的 SWD 连接、发现在处理 CCS 中的项目时似乎能正常工作:我可以在配置了 SWD 密码的情况下刷写项目并且可以正常工作。我也可以更改密码并在不刷写的情况下尝试调试、但会拒绝连接。 对我来说、它似乎在按预期运行。

我还想做的是在目标配置文件中配置密码并测试连接 — 此部分似乎不起作用。 在目标配置中、我只看到 128 位密码字段、因此我认为这仅适用于直接存储 128 位密码(与 256 位哈希值相比)的旧器件。 是这种情况、还是我在做什么?

如果这种支持还没有得到支持、我们何时才期望这种支持得到落实?

谢谢你

Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我还想做的是在目标配置文件中配置密码并测试连接 — 此部分似乎不起作用。 在目标配置中、我只看到 128 位密码字段、因此我认为这仅适用于直接存储 128 位密码(与 256 位哈希值相比)的旧器件。 是这种情况、还是我出错了?

    ccxml 中的 128 位 SWD 密码是明文密码。

    syscfg 中的 256 位 SWD 密码是该 128 位明文 PW 的 256 位哈希结果。

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

    您好、Helic、

    谢谢 、我能够在.ccxml 中设置 128 位明文密码、然后使用该计算器 (https://emn178.github.io/online-tools/sha256.html) 计算其哈希值 并将其放入.syscfg 中。 我可以刷写工程并开始调试、而不会出现任何问题。 我还尝试在没有安全设置的情况下开始调试另一个项目、但未能按预期连接。 到目前为止一切顺利。 现在、为了进一步测试、我创建了一个未连接到任何工程的独立.ccxml。 使用这个.ccxml 我可以启动无工程调试、但当我在调试视图中尝试“连接目标“时、尽管.ccxml 包含正确的密码、但仍然收到连接错误。

    您能帮助我了解密码验证的机制、以及为什么我无法与独立的.ccxml 连接吗?

    作为参考:我使用了纯文本密码 0x00000000000000000000deadbele。  

    计算出的哈希值为 0x9590b8e30aa535718b065de411d651122418d2d714bdb852d1e340c95d3971  

    谢谢你

    Michael

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

    当进一步测试添加问题出现时:当 SWD 密码保护启用时、调试连接仅在下电上电前有效。 即

    恢复出厂设置>具有 SWD 密码保护的闪存项目->启动调试会话成功

    之后、停止调试->断开/连接 USB 对电路板进行下电上电->启动调试会话失败  

    Texas Instruments XDS110 USB 调试探针/Cortex-M0P 连接到目标时出错:与 MSPM0 内核的连接失败。 可能的根本原因:1) 使用密码禁用或启用了 NONMAIN 内的调试访问。 2) 外设配置错误(例如看门狗或时钟不正确)。 要查看问题的更详细诊断、请按下“读取引导诊断“按钮。

    读取诊断返回:

    CS_DAP_0:器件诊断读取= 0x00000007
    CS_DAP_0:
    诊断读数可能的根本原因:
    1) 嵌套异常(例如双硬故障或 NMI)可能由非法的 CPU 活动引起、例如无效的地址修改
    2) 调试访问已禁用

    感谢您的指导

    Michael

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

    好的~得到了~
    我会尝试我这边的一些测试。

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

    请参阅以下指南:

    您可以通过 syscfg — 配置 NVM — 引导配置例程 (BCR) 配置 — 调试安全策略配置 - 启用应用程序调试访问【使用密码匹配启用】- SWD 密码 — ?打开此指导 配置

    使用此网页转换明文 — SHA256 的密码:十六进制格式

    https://emn178.github.io/online-tools/sha256.html

    将 SHA-256 密码输入到 BCR CONFIG 中。

    在.ccxml 文件中输入明文密码。

    对设备进行编程后、您可以关闭设备电源、密码将生效。

    使用 Mailbox_Debug Authentication_Auto  解锁密码。

    使用 MSPM0_RTOS Mailbox_Factory Reset_Auto 删除密码。

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

    您好、Helic、

    我现在能够使用 Mailbox_Debug Authentication_Auto 解锁器件 — 这是说明中缺少的步骤。  我还能够在将.out 重新编译到仅闪存 MAIN 和数据(保持 NONMAIN 不变)后加载该.out。 该.out 似乎可以运行、但不知何故丢失了它的符号、因此我能够执行启动/停止、但我无法进行分步调试。 分步操作中可能缺少哪些内容?

    谢谢你

    Michael

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

    不知道从你这边会发生什么。

    常见步骤是、解锁 SWD 密码后、您可以尝试退出当前的调试会话、然后根据您的工程直接启动调试会话。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对于常用步骤、在解锁 SWD 密码后、您可以尝试退出当前调试会话、然后根据您的项目直接启动调试会话。

    遗憾的是、这并不起作用。 如果我停止调试会话、调试再次被锁定。 当我从工程的 syscfg 中完全删除 NVM 配置时、我成功地进行了适当的调试、并将闪存属性更改为“仅擦除 MAIN 和 DATA “。 然后、使用 Mailbox_Debug Authentication_Auto  脚本解锁生成的.out 后、可以将其加载到 M0 中。

    我认为这是我们的配套资料中的一个主要缺口 — 上述流程需要正确记录或更好的,但 CCS 需要支持将解锁脚本集成到项目中,并自动调用它 。  

    感谢您对此提供反馈  

    Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但是它以某种方式丢失了它的符号
    、但它不幸地不起作用。 如果我停止调试会话、调试将再次锁定。

    在我这边、解锁 SWD、然后可以开始调试。

    对于任何未运行 ROM 引导代码 (BCR) 的复位级别、M0 不会再次锁定 SWD。

    TRM 表 2-12. 复位原因编码:调试 sysrst 不会运行 BCR 执行。

    ]当我从工程的 syscfg 中完全删除了 NVM 配置时、我成功地进行了正确的调试、并将“Flash properties“更改为“Erase main and data only“。 然后、使用 Mailbox_Debug Authentication_Auto  脚本解锁生成的.out 后、可以将其加载到 M0 中。

    这是正确的、非主区域程序一次就足够了。