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.

[参考译文] TMS320F280021:重新编程受 DCSM (和 ECSL)保护的 TMS320F28002x

Guru**** 2535150 points
Other Parts Discussed in Thread: UNIFLASH, TMS320F280021

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1223117/tms320f280021-re-program-a-dcsm-and-ecsl-protected-tms320f28002x

器件型号:TMS320F280021
主题中讨论的其他器件:UNIFLASH

尊敬的所有人:

我有一些问题 DCSM ECSL 上述的安全特性 DSP

所有问题均与相关 ISP (在系统编程中)、TMS320的非易失性数据均在中编程 代码 用户 OTP 区域。

目前、我将使用 Uniflash 进行一些测试、我想知道如何理解 DCSM 和 ECSL 安全功能对仿真器连接的影响。

我可以说、在对出厂的器件进行编程后、已写入一些用户 OTP。

具体而言:

- Z1OTP_EXEONLYRAM

- B0_Z1OTP_EXEONLYSECT

- Z1OTP_GRABRAM

- B0_Z1OTP_GRABSECT

- Z1OTP_CSMPSWD0

- Z1OTP_CSMPSWD1

- Z1OTP_CSMPWD2

- Z1OTP_CSMPWD3

CSM 密码与 TI 预编程的密码完全不同、且 LINKPOINTERS 是默认密码、因此它位于地址 0x78028 。  

1) 1) CSM 密码的所有组成部分与默认密码不同、如果我完全了解 TRM、 DCSM 和 ECSL 都已启用 不是吗?

2)我可以看到、因为在关闭/开启器件电源后、除非我使用、否则不可能再将 XDS100v2连接到目标 GPIO24. 引导插件 等待引导模式 不是吗?

在这种情况下、如果我尝试通过提供正确的密码将 XDS100v2连接到目标、我可以连接仿真器并再次擦除、Blankcheck、读取和编程闪存内容。

因为 Uniflash 执行了 ECSL 密码匹配流程

此外、如果我读取用户 OTP 区域的内容、则所有数据都是 0x0000 (见下文)除了 CSMPWD、我认为是因为我的测试中 Z1OTP_PSWDLOCK 未更改。

4)造成这种情况的原因, DCSM 保护

5) 5)是否有读取"受保护"值的方法?

可能是下载和执行  内存 小巧 基于 JTAG 的定制引导加载程序

我之所以提出这些问题、是因为有人要求我使用 JTAG 接口通过工业编程工具重新编程 DCSM 和 ECSL 受保护的器件。

因为我将不得不添加一些代码编程算法来管理这一点,我需要完全理解系统..   

此致、

Federico.

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

    尊敬的 Federico:

    Unknown 说:
    1)是 CSM 密码的所有组件,与默认密码不同,如果我完全理解 TRM, DCSM 和 ECSL 都已启用 ,不是吗?

    是的、两者都被使用、但你仍然可以启用 DCSM 并通过向 CSMKEY 寄存器提供低64位密码来禁用 ECSL。

    Unknown 说:
    2)我可以看到,因为在关闭/开启设备电源后,除非我使用,否则再也无法将 XDS100v2连接到目标 GPIO24. 引导插件 等待引导模式 不是吗?

    在器件上/关闭初始电源期间、仿真器需要一些时间来控制 CPU。 与此同时、CPU 将开始运行、并可能执行一条指令来访问受保护的 ECSL 区域、如果 CPU 在 PC 指向一个安全位置时被暂停、这将触发 ECSL。 但是、您可以使用等待引导模式选项 来克服此问题。

    因为 Uniflash 执行了 ECSL 密码匹配流程

    [/报价]

    我将从专家的意见中得到这方面的答复

    Unknown 说:
    4)造成这种情况的原因是什么, DCSM 保护 ?[/报价]

    如果某个区域是安全的、则只有使用密码匹配流程解锁了该区域时、才能读取其用户 OTP 内容(包括 CSM 密码)。

    Unknown 说:
    5)是否可以读取"受保护"的值?
    [/quote]

    我会在专家意见后回来。

    谢谢

    Aswin

    [/quote][/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是两者都使用,但您仍然可以启用 DCSM 并通过向 CSMKEY 寄存器提供低64位密码来禁用 ECSL。

    好的、明白了。 如果我只执行 CSM 密码匹配流程 ECSL 密码匹配流程 还是它们是两个完全分离的流?  

    在初始电源关闭/开启设备期间,仿真器需要一些时间来控制 CPU。 与此同时、CPU 将开始运行、并可能执行一条指令来访问受保护的 ECSL 区域、如果 CPU 在 PC 指向一个安全位置时被暂停、这将触发 ECSL。 但是,您可以使用等待引导模式选项 来解决此问题。

    好的、明白了。

    两者可兼得 GPIO24. GPIO32. 必须可用(当然也有 nXRS )以进入此特定等待引导模式。

    如果区域是安全的,则只有使用密码匹配流程解锁区域时才能读取其用户 OTP 内容(包括 CSM 密码)。

    我可以确认(仅使用 Uniflash 尝试) CSM 密码也是隐藏的、即0x0000、仅用于下方  Z1OTP_PSWDLOCK[3]  除0b1111、之前已全部进行编程。 如果不改动这些密码、可读取 CSM 密码(本文开头附上的图片确认了这一点)。

    上图是从 Uniflash 解锁器件后拍摄的。 如果我尝试再次阅读、比如 sector0  根据  B0_Z1OTP_GRABSECT ,属于 Zone1,我仍然阅读 0x0000 。 这使我认为 Uniflash 仅执行 ECSL 密码匹配流程、否则、如 TRM 所述:

    我还添加了以下信息、这些信息可以为您提供帮助。 的编程值  B0_Z1OTP_EXEONLYSECT 位置 0x0000FFFF

    那么、为什么 Uniflash 仍读取0x0000 (见下文)?

    我认为,对这一额外问题的答复可能会对问题作出答复 3) 5)

     再次感谢您的友好回复。

    此致、

    Federico.

     

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

    您好!

    Unknown 说:
    3)是因为 Uniflash 执行 ECSL 密码匹配流程 ?[/报价]

    是的、它执行 CSM 匹配流程(包括 ECSL 密码匹配流程)。 因此、您能够连接并执行闪存操作。

    Unknown 说:
    5)是否可以读取"受保护"的值?

    如果您提供了正确的128位密码、那么您应该能够看到所有受保护的值。 "那你怎么了? 还是仅提供64位密码(ECSL 密码)?

    此致、

    Vivek Singh

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

    尊敬的 Vivek:

    是的,它执行 CSM 匹配流程(其中包括 ECSL 密码匹配流程)。 因此,您可以连接并执行闪存操作。

    明白了。

    如果您提供了正确的128位密码,那么您应该能够看到所有受保护的值。 "那你怎么了? 或仅提供64位密码(ECSL 密码)?

    是的、我确实按下了按钮 取消锁定 按钮 Uniflash GUI 中 以及提供的整个密码。 但我仍然看到 0x0000 对于所有受保护的数据、请参见 B0_Z1OTP_GRABSECT

    这很奇怪、因为它与什么相违背  TRM 简易开关语句。

    您想让我通过尝试使用另一家出厂预装的 DSP 来对此进行仔细检查吗?

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

    您能否为闪存扇区提供 Zone1/Zone2的 GRABSECT 设置?

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

    是的、当然可以。

    B0_Z1OTP_EXEONLYSECT  位置  0x0000FFFF

    B0_Z1OTP_GRABSECT 位置 0xAAAAAA65

    区域2 电压保持不变。

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

    如果 ZONE2保持不变、请确保 ZONE2也已解锁、否则将无法访问这些扇区。

    Vivek Singh

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

    尊敬的 Vivek:

    我确定我没有解锁 Zone2。 明天我会试着让你知道。  

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

    尊敬的 Vivek:

    我已经试着按压了 取消锁定 按钮进行启动 ZONE1. ZONE2. 但我仍然看到 0x0000 (适用于两者均受保护 代码 OTP )。

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

    这意味着区段未解锁。 您能否在寄存器视图中查看 Z1_CR/Z2_CR 的值并告诉我。

    我还建议通过 CCS 闪存插件 GUI 来尝试。  

    此致、

    Vivek Singh

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

    尊敬的 Vivek:

    我试着去读其价值 Z1_CR 在地址注册 0x5F019  将我的 XDS100v2连接到我的后 CSL (没有 ECSL )锁定的设备。

    寄存器值为:

    这就是我预期看到的结果。

    然后我按下 取消锁定 按钮 ZONE1.  我获得了:

    如果我再读一次的话 Z1_CR  寄存器值 i fonud 与之前的值相同 0x0040 )。

    问题可能是 Uniflash 再次出现 DCSM 初始化开始...  提供的默认密码 ZONE1. 这个不匹配的位。  

    此外、我已经查看了 f280021.gel 和函数之间的关系  SetupDCSM()  使用的默认密码值 取消锁定

    这将是 再次锁定  器件受保护的资源。

    有道理、不是吗?

    此致、

    Federico.

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

    Federico,

    这不应该发生。  

     

    我也建议通过 CCS 闪存插件 GUI 试用此版本。  [/报价]

    你能否在 CCS 上尝试一下、看看它是否起作用?

    此致、

    Vivek Singh

     

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

    Federico,

    这不应该发生。  

    [/报价]

    我同意、我刚刚尝试在中输入正确的密码 TMS320F280021.gel 以及第一次尝试对其执行操作时 代码 OTP  脚本会执行  SetupDCSM() 功能并提供我的密码(不同于默认密码) 解锁 然后我就可以了 阅读 全新的 受安全保护  试验。

    它完全匹配 TRM

    我建议修改 Uniflash GUI 中 这样、当用户按下时 取消锁定 按钮通过提供正确的密码、在后续操作中将使用新密码、而不是.gel 文件中硬编码的密码。 否则会有点混乱。

    此致、

    Federico.

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

    Federico,

    很高兴它能正常工作。  在解锁操作后不应调用 SetupDCSM()函数。 解锁后,你是否做一些其他的操作,使它安全?  

    此致、

    Vivek Singh

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

    尊敬的 Vivek:

    更新 取消锁定 我转到"读取"菜单、然后阅读 OTP 代码  内容、但我看到了 Uniflash GUI 中 静止呼叫 SetupDCSM() 因为我看到了 GEL_TextOut () 端子上输出。

    sinc 1  SetupDCSM()  每个区域都有默认密码、我认为这是导致的 0x0000 以供再次读取。

    除非 Uniflash 在内部用提供的正确密码替换默认密码、但我不知道是否会这样做。

    我所做的就是解锁(Successful)+读取(闪存、OTP、...)。   

    我没有尝试使用 CCS、因为我没有使用闪存插件 GUI。

    此致、

    Federico.

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

    好的、谢谢。 我已将此查询发送给我们的 Uniflash 团队。 就会更新我们的结果。

    Vivek Singh

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

    Federico,

    您能否确保"操作后保持连接"选项处于开启状态? 此选项可在右上角的内核名称下找到、它可确保内核在解锁操作后保持连接状态。 如果它在存储器读取之间再次断开连接、器件将再次锁定。

    请告诉我此设置是否适用于您的情况。

    谢谢。

    Ricky