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.

[参考译文] TMS320F280048C-Q1:警告:复位后解锁器件(区域1)失败。

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1170058/tms320f280048c-q1-warning-failed-unlocking-device-zone-1-after-reset

器件型号:TMS320F280048C-Q1
主题中讨论的其他器件:UNIFLASHSysConfig

尊敬的专家:

我对 DCSM 非常陌生、我想锁定我的 MCU、以便其他人无法读取它的存储器。  

为了尝试此功能、我更改了密码中的一个位并按下"Program Password"(程序密码)。 我收到了一条成功消息。 然后、我按下"解锁"、再次得到一条成功消息。

 

现在,我无法将任何更多代码编程到我的 MCU。 我收到以下错误消息:

我可以使用 UniFlash 读取存储器。 我检查了 Z1_CSMKEYs、似乎密码没有更改!! 我在地址0x5F013中读取0x47FFFFFF、而不是0x46FFFFFF! (我是按"锁定"还是"解锁")

我不明白。 如果设备已锁定、为什么不更改密码? 如果没有、为什么我无法在器件上对任何代码进行编程?

问题是什么? 我缺少什么?

提前感谢、

米纳

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

    更新:在遇到很多困难(!)之后,我在 CCS 中找到了一个选项:properties->debug->FLASH settings (高级选项应启用),我可以设置我更改的 Zone1密码。

    我还是很困惑! 在此之前、我附加了 SysConfig 生成的.asm 和.cmd 文件。 但它们不起作用 。 确定问题是什么?

    此外、当我可以进入 Debug 时、0x5F013中的值是46FF、而不是47FF! 为什么 UniFlash 没有为我显示正确的值?

    P.S. 是否有针对 DCSM 的分步指南?

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

    您好、Mina、

    位置0x5F013是 DCSM 存储器映射寄存器。 密码实际上将被编程到一次性可编程(OTP)位置(0x78028)、并且其内容作为安全初始化的一部分安全地传输到 DCSM 存储器空间(0x5f000 - 0x5f400)。  


    至于 您现在面临的问题、在您使用0x46FF 对密码进行编程后、要解锁该区域、需要输入新密钥才能解锁该区域。 您可以从 CCS 存储器浏览器中将此值从0x47FF 修改为0x46FF、以查看 Zone 是否已解锁、从而实际确认新密码是否已生效。   

    如果确认了这一点、请注意、密码已更改、但 CCS 中提供的密钥仍保留在默认值中、这是问题的原因。 我怀疑 GEL 文件。 请检查您的 GEL 文件、在该文件 中、我认为馈入 DCSM 存储器空间(0x5F1013)的 CSMKEY 仍然是旧的默认密码。 这有望解决您的问题。

    请告诉我上述建议是否有助于解决您的问题。

    谢谢、此致
    Pramod

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

    您好 Pramod、

    感谢您的回复。

    在(properties->debug->flash settings)中更改密码后、我能够对 MCU 进行编程。 但我不熟悉您提到的 GEL 文件、因此我检查了它。 你是对的! 此文件中的 CSMKEY 为0x47FF。 我不确定如何将其更改为0x46FF? 我输入的密码(properties->debug->flash settings)是否可以替换 GEL 文件中的密码? 此外、如何 将密码更改为任何新值(例如0x44FF)?

    我有一个新问题。 对 OTP 进行编程后、是否有任何方法对其进行重新编程并将0更改为1? 我之所以提出这个问题、是因为我在我的项目文件中放置了一个.asm 文件(由 SysConfig 生成)、该文件没有为任何区域锁定分配闪存扇区(GRABSECT = 0xAAAAAAAA)、现在我要更改其值、我将收到一个错误。

    谢谢  

    米纳

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

    您好、Mina、

    这实际上取决于 CCS 中将发生的事件的顺序。 由于 CSMKEY 寄存器可在任何时间点修改、并且 GEL 文件的写入即将结束、因此将发生此问题。 您可以通过在必要时修改来删除 GEL 中发生的写入操作。 这样、写入闪存设置中的任何内容都将在不进行任何更改的情况下进行反射。

    [引用 userid="504782" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1170058/tms320f280048c-q1-warning-failed-unlocking-device-zone-1-after-reset/4407282 #4407282)]我有一个新问题。 对 OTP 进行编程后、是否有任何方法对其进行重新编程并将0更改为1?

    顾名思义、OTP 表示一次性可编程存储器、这意味着位0更改为1。 但是、您可以修改链接指针以指向新的 ZSB (区域选择块)、然后重新对安全配置进行编程。 为了修改 OTP、必须解锁这些区域。

    希望这将回答您的问题。

    P.S:如果您有不是原始问题后续的新问题,请您打开一个新主题。

    谢谢、此致
    Pramod

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

    谢谢 Pramod