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.

[参考译文] C2000WARE:F28002x 芯片电路内调试配置:如何在不擦除闪存的情况下进行配置。

Guru**** 2903660 points

Other Parts Discussed in Thread: TMS320F280025C

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1645854/c2000ware-f28002x-chip-in-circuit-debugging-configuration-how-to-configure-without-erasing-flash

器件型号: C2000WARE
主题: TMS320F280025C 中讨论的其他器件

问题:当客户使用 28002x 产品时、他们会遇到程序失控问题。 使用我们公司的主机计算机软件、确认芯片中仅存在引导加载程序(地址 0x80000 之后写入的专用引导加载程序)。 使用专用引导加载程序重写应用部分可以使其再次正常工作。 目前尚不清楚问题是由专用引导加载程序、应用程序部分还是芯片本身造成的。

现在、设备出现故障。 我只想通过仿真(调试探针)连接到电路板、以检查闪存中代码的哪一部分出现问题。 以前、我尝试按照配置教程进行操作、但每次通过仿真连接时、闪存要么被擦除、要么在未擦除的情况下连接、我就无法查看闪存中的数据。 您是否有这方面的标准操作说明? P.S.工程配置了 DCSM 密码、但正常的仿真擦除/写入操作可以成功对芯片进行编程、因此不会出现干扰。

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

    您好:

    您使用 GRABRAM/GRABSECT 寄存器保护了 DCSM 哪些存储器? 如果您没有对这些寄存器进行编程并保留为默认值(全 0xFF)、则在区域锁定时将无法访问闪存/RAM。 如果是这种情况、请执行 CSM 密码匹配流。

    如 TRM 所述:

    此致、

    马特

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

    您好 Matt、

    感谢你的帮助。 DCSM 加密模块已在 CCS 中配置;否则、我将无法执行正常的仿真。 我根据手册配置了 CCS(根据我的理解,当不对闪存进行编程时,CCS 还应从 TMS320F280025C.ccxml 配置中读取我的密码、因为一旦对闪存进行了 OTP 编程,闪存就会进行加密,并且在不解密的情况下无法处理)。 但是、当我运行仿真(仅加载符号)时、闪存中的数据仍显示为 0。 以下是我的配置屏幕截图。 您能否帮助回顾一下是否还有其他需要调整的内容? 谢谢你。

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

       抱歉、我之前忘了附上屏幕截图。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我根据手册配置了 CCS(根据我的理解,在不对闪存进行编程时,CCS 还应从 TMS320F280025C.ccxml 配置
    中读取密码

    您是说您更改了 CCS GEL 文件中的 CSMPSWD 吗?  

    这个问题很可能是由于 CCS GEL 文件 在仿真器连接时向 DSP 发出复位命令。 我建议:

    此致、
    马特

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

    谢谢您、Matt。 我已根据您的步骤使用 GEL 文件进行配置、CSM 信息也已输入到 GEL 文件中。 当前情况如下:每次我仿真代码并将其编程到闪存中、然后断开仿真器并立即执行非侵入式调试时、我都可以读取在上一个仿真期间编程的代码(整个过程无需下电上电即可完成)。 但是、在我完全断电然后再次上电后、当我尝试非侵入式调试时、闪存中的所有数据都会再次显示为 0。

    我的假设是、当代码最初通过仿真进行编程时、CSM 已解锁。 因此、之后立即执行非侵入式调试成功。 但在下电上电和后续非侵入式调试后、由于 CSM 不再解锁、它会失败。 这是我的猜想。 你有什么更好的建议吗? 以下是我的配置代码:

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

    您好:

    问题如下:

    每次复位时、如果 CSMPSWD 不是默认值、引导 ROM 都会执行安全初始化例程、从而重新锁定 DCSM。 GEL 文件还实现了一个可以在 OnTargetConnect () 中调用的冗余安全 init 函数。 但是、一旦 OnReset () 被注释掉、SetupDCSM () 就不再在 GEL 文件中执行。  

    您可以 尝试以下操作:

    1. 取消注释 OnTargetConnect() 中的 OnReset() 函数。 当调试探针连接(侵入式连接)时、器件将发出复位命令、但这允许在 SetupDCSM () 中执行 DCSM 密码匹配流程。  
    2. 执行写入 OnTargetConnect () 函数中 CSMKEY 寄存器的 DCSM 密码匹配流程。

    此致、

    马特

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

    您好 Matt、

    添加 OnReset() 函数后、我现在能够执行非侵入式调试、并且闪存没有被擦除。 非常感谢您在过去几天的帮助。