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.

[参考译文] MSPM0G3518-Q1:在 CSC 启用后使用 XDS110 连接电路板时出现问题

Guru**** 2860630 points

Other Parts Discussed in Thread: UNIFLASH, SYSCONFIG

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1619104/mspm0g3518-q1-issue-with-connecting-the-board-using-xds110-after-csc-enable

器件型号: MSPM0G3518-Q1
Thread 中讨论的其他器件: UNIFLASHSYSCONFIG

您好 TI、

在 ECU 上启用客户安全配置 (CSC) 时遇到问题。 通过 BOOTCFG5 启用 CSC 并启动硬件重置后、我无法与 ECU 建立连接。 调试器指示 ECU 处于低功耗模式并拒绝建立任何连接。

我已经尝试了以下步骤来重新获得调试访问权限但没有成功:

  1. 已拔下 LaunchPad。
  2. 长按 S1 (BSL) 按钮。
  3. 按住 S1 的同时插入 USB 电缆。
  4. 2 秒后释放 S1。

此外、我还尝试使用 UniFlash、BSL 和 CCS 工具进行批量擦除和恢复出厂设置;但是、无法建立连接。

请注意、 如文档中所述、我在 0x000 处配置了 CSC 矢量表、在 0x0004 处配置了其复位处理程序

您能否提供有关如何解决此问题并与 ECU 重新建立调试连接的指导?

这是尝试使用 IAR 进行连接时的确切错误

image.png

 

 

 请 在此处找到 uniflash 出厂重置操作中的日志文件

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

    尊敬的 Mohamed:

    我建议您检查引导诊断回读值、以确定在 NONMAIN 存储器上会发生什么情况:

    您可以参阅以下文档、查看读回表:MSPM0 NONMAIN 闪存配置指南

    请注意、如果回读为 0x0000.0036(表示 NONMAIN)、则为空并永久锁定。  

    有关读取诊断说明、请参阅以下内容: https://dev.ti.com/tirex/explore/node?isTheia=false&node=A__ANk2FOM4WUAtKZQLHOjtNw__MSPM0-SDK__a3PaaoK__LATEST&placeholder=true 

    以下是支持软件包链接:

     【常见问题解答】MSPM0-SDK:CCS 12.8.1 的 MSPM0 支持包版本  

    (CCS 20 直接支持它)

    B.R.

    Sal

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

    您好 Sal、

    CCS 不允许我 读取引导诊断、因为即使我多次按下它、它在尝试连接时也只显示“强制复位“选项。由于 DAP 无法再连接、因此仅显示该选项。

    这是我尝试通过 CCS 进行连接时出现的错误:

    这就是我尝试通过目标配置测试连接时出现的错误:

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

    您好 Sal、

    我只想澄清我所做的可能锁定 ECU 的步骤:

    1.我使用 Uniflash 工具执行了恢复出厂设置、从默认配置开始

    2.我为安全调试功能启用了 BCR 中的调试访问功能[bcr.debugAccess = BCR_CFG_DEBUG_ACCESS_EN_PW]

    然后、我在 BCR [BCR.CSCSCSCexists = BCR_CFG_CSC_EXSES_EN]中启用 CSC

    4.为了确保初始化完成设置顺序,我执行了以下代码:

    我的分析是,由于某种原因调试保持寄存器被启用,调试在 CSC 执行期间保持,我的代码片段保持在 CSC 中,因此调试不会被释放:

    如果这可能是根本原因、您能否提供反馈;如果是、什么可能会在不显式设置的情况下将 DebugHold 寄存器设置为 0xFFFF? 恢复出厂设置是否会将其设置为 0xFFFF 值?

    谢谢您、

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

    尊敬的 Mohamed:

    启用 CSC 后、会自动禁止进入 BSL。 因此、按 S1 键不起作用。

    若要测试 SWD 连接是否良好、您可以将 NRST 保持为低电平并尝试连接器件、则 引导诊断读回值应为 0x0000.0000。

    同时、我将查看如果强制 MCU 处于 CSC 状态并启用调试保持功能、SWD 连接会发生什么情况。

    恢复出厂设置是否可以将其设置为 0xFFFF 值?

    恢复出厂设置为 0xAABB。

    您是否可以尝试以下 UG 中提到的步骤:

    B.R.

    Sal

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

    您好 Sal、

    我尝试了您提到的顺序、但在出现“按下复位按钮“消息后释放 NRST 引脚时出现了这个错误  

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

    尊敬的 Mohamed:

    看起来很奇怪。 这个读取的诊断值如何:

    要测试 SWD 连接是否良好、您可以将 NRST 保持在低电平并尝试连接器件、则 引导诊断回读值应为 0x0000.0000。

    明天我将对此进行测试:  

    我将了解如果强制 MCU 处于 CSC 状态并启用调试保持功能、SWD 连接会发生什么情况。

    B.R.

    Sal

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

    尊敬的 Sal:

    是、在将 NRST 保持为低电平时、诊断读取设置为 0x000

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

    尊敬的 Mohamed:

    是的、在保持 NRST 低电平时、诊断读取设置为 0x000

    好的、这确认 SWD 接口中没有硬件问题。

    与此同时、我将看一下如果强制 MCU 处于 CSC 状态并启用调试保持功能、SWD 连接会发生什么情况。

    我创建了一个简单的示例来测试调试保持功能:

        SYSCFG_DL_init();
    
        /* issue initdone */
        if(!DL_SYSCTL_isINITDONEIssued())
        {
            delay_cycles(80000000*10);  /* wait for 10s */
            /* End of Customer Secure Code */
            DL_SYSCTL_issueINITDONE();
        }

    然后、我发现连接失败、但诊断读取可以正常工作、以验证引导检查是否通过。

    此外、当 MCU 保持在 CSC 阶段时、恢复出厂设置将起作用:

    因此、我认为这不会影响调试保持功能。

    这是我尝试通过 CCS 连接时出现的错误:

    我看到这里报告了 DAP 错误、根据 UG 说明:

    我看到您提到要测试 LaunchPad、因此我假设没有外部 NRST 信号断开连接。

    ->请检查 VDD、Vcore 和 NRST 线路以确保一切正常。

    以下是我关于进一步调试问题的建议:

    您是否在 NVM 中禁用了 SWD 接口? 禁用 SWD 接口将不会导致包括诊断读取在内的 DAP 连接。

    是否存在任何软件复位? 例如 IWDT 或软件 POR/BOOTRST。 ->这可能会中断 SWD 连接并导致 DAP 错误。

    该板现在是否正常工作? 我认为可能存在一些软件行为、如果您复位 MCU、您能否观察 IO 中的任何信号来证明 MCU 工作正常?

    B.R.

    Sal

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

    尊敬的 Sal:

    我已经检查了连接、它们连接良好

     同样关于 SWD 禁用,我没有明确禁用它,我  不认为应用程序代码中有有意的软件重置 (IWDT 或 POR)。

    但是、我更新了非主区域以启用 CSC、因此我可以从头开始告诉您我执行的所有步骤、以便您查看 ECU 是否崩溃:

     CSC 在非主 存储器中启用我遵循的序列:

    首先、我执行了恢复出厂设置、以 BCR 的默认配置开始

    1.阅读非主区域

    2.使用 CSCEXIST 更新了 BCR [BCR.CSCSCSCexist=   BCR_CFG_CSC_EXS_EN]

    3.更新 BCR 时计算出的 CRC

    4.然后 通过取消保护写入非 MAIN ,擦除,然后按照“MSPM0 NONMAIN 闪存配置指南“文档步骤编写扇区:

    5.然后我执行了我之前提到的代码片段:

    那么、您能否对 ECU 可能发生的情况发表看法?

    谢谢你

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

    尊敬的 Mohamed:

    [quote userid=“686055" url="“ url="~“~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1619104/mspm0g3518-q1-issue-with-connecting-the-board-using-xds110-after-csc-enable/6254098 然后 通过取消保护写入 non main、擦除、然后按照“MSPM0 NONMAIN 闪存配置指南“文档步骤编写扇区:

    该流程看起来正确、唯一要关注的可能是 CRC 计算错误、或在 NONMAIN 编程期间、然后器件以某种方式复位(可能电源不稳定)、并导致 NONMAIN 数据损坏。

    但诊断读回应在这种情况下起作用。 让我在内部讨论这一部分。

    ->您能为我的调试分享一个示例工程吗?

    同时、我建议您临时使用以下流程:

    1.使用 SysConfig 设置 NVM 属性

    2.具有预设 NVM 属性的编译器项目

    3.将应用程序和非主十六进制文件下载到器件中(建议选择闪存擦除属性:只擦除主扇区和非主扇区)

    4.重置设备使非主配置生效

    5.开始调试。

    ->当我测试 CSC 调试保持功能时、这个功能在我这边工作。

    B.R.

    Sal