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.

[参考译文] TMS320F28388D:运行 dcsm_ex1_secure_memory_partition 示例需要进行哪些修改?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1508937/tms320f28388d-what-modifications-are-required-to-run-dcsm_ex1_secure_memory_partition-example

器件型号:TMS320F28388D
Thread 中讨论的其他器件:UNIFLASH

工具/软件:

我想大致演示 CSM 锁定/解锁特性、因此我首先尝试 在未修改的 情况下运行 dcsm_ex1_secure_memory_partition 示例、但它在调用 dcsm_secureZone1时达到 ESTOPS。 读取 TRM 和 C/ASM/cmd 文件的顶部时、似乎必须修改 asm 和 cmd 文件才能运行示例。 这是真的吗?

因此我做了以下修改:

在 asm 文件中、取消注释密码位置;我对其进行对齐是因为当我分配自己的密码时、OTP 位可以更改为0。  

Z1:

.long 0xFFFFFFFF;Z1OTP_CSMPSWD0 (128位密码的 LSW)
.long 0x4D7FFFFF;Z1OTP_CSMPSWD1
.long 0xFFFFFFFF;Z1OTP_CSMPSWD2
.long 0xFFFFFFFF;Z1OTP_CSMPSWD3 (128位密码的 MSW)

Z2:

.long 0xFFFFFFFF;Z2OTP_CSMPSWD0 (128位密码的 LSW)
.long 0x1f7fff;Z2OTP_CSMPSWD1
.long 0xFFFFFFFF;Z2OTP_CSMPSWD2
.long 0xFFFFFFFF;Z2OTP_CSMPSWD3 (128位密码的 MSW)

在这两个 asm 文件中、取消注释 Z1OTP_GRABRAM1的位置、我认为将示例存储器分配到区域1/2时需要这个位置。

在 cmd-file 中、删除虚拟扇区分配、以便:

dcsm_zsel_z1:> dcsm_ZSEL_Z1_P0
dcsm_zsel_z2:> dcsm_ZSEL_Z2_P0
dcsm_z1otp_link_pointer:> dcsm_OTP_Z1_link
dcsm_z2otp_link_pointer:> dcsm_OTP_Z2_link

运行上述更改似乎会阻止我的器件访问 JTAG (我现在收到永久的"无法阻止目标 CPU"错误)、即使我留下了示例 JLNENABLE 和 JTAGPSWD 位置的注释。  

我有几个问题:

1.dcsm_ex1_secure_memory_partition 示例是否应该不经修改运行? 如果没有、则需要进行哪些最小的更改。

2.我是需要使用默认的 TI 密码配置 CCS 才能恢复到器件中、还是将其砖化?

谢谢、

Jim

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

    您好、Jim、

    您是否熟悉 ECSL 保护的概念? TRM 中讨论了这一点。 基本上、如果 DCSM 区域被锁定、并且程序计数器位于安全存储器区域、则无法进行调试访问。

    我不确定是什么导致了 Estop、但似乎您没有修改 DCSM 密码的默认值。 为了能够再次连接到器件、您只需复位器件。

    请告诉我这是否对您有用、如果是这样、我们可以调查 Estop 的原因。

    谢谢您、

    Luke

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

    Luke、

    感谢您的快速答复。 我不熟悉 DCSM 和 ECSL、但今天恢复了调试器访问。 我必须遇到一些间歇性调试器连接问题、这个问题将会与这个特定的开发有关。  

    另一个问题-- 这个部分上的 OTP 有一些编程的零、可能是我的一次坏尝试。 我可以将各个位翻转为零吗? 我的 GRABRAM 位置全部为1、在 JTAG 加载过程中收到以下 OTP 写入错误:

    C28xx_CPU1:闪存编程期间出现错误。 地址0x00078000、FMSTAT (某些器件上为 STATCMD) 0x00000030
    C28xx_CPU1:请确保正在编程的存储器位置尚未编程。
    C28xx_CPU1:闪存编程期间出现错误。 地址0x00078028、FMSTAT (某些器件上为 STATCMD) 0x00000030
    C28xx_CPU1:请确保正在编程的存储器位置尚未编程。

    谢谢、

    Jim

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

    您好、Jim、

    这些是导致抛出错误的常见地址位置。 原因是 DCSM 锁定后、用户 OTP 将变为可写状态、因此第一个用户 OTP 位置将引发错误。

    如果在 On-Chip Flash 工具或 Uniflash GUI 中选择了"Verify"选项、地址0x78028将抛出错误、因为这是 CSMPSWD 值之后的第一个地址。

    要解决此问题、您应使用 uniflash/CCS 片上闪存工具 GUI 解锁 DCSM、方法是提供定制的 CSM 密码、然后再次尝试编程。

    谢谢您、

    Luke