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.

[参考译文] F28M35H52C:如何解锁闪存?

Guru**** 2546020 points
Other Parts Discussed in Thread: UNIFLASH, CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/627770/f28m35h52c-how-can-i-unlock-my-flash-memory

器件型号:F28M35H52C
主题中讨论的其他器件:UNIFLASH、controlSUITE

您好!

我可能在 M3闪存中的某个错误位置执行了愚蠢的写入操作。

现在、它看起来是锁定的、我不知道如何解锁它。

当我尝试擦除任何扇区时,会收到以下错误信息:

从 CCS 6.2:

"Cortex_M3_0:闪存编程器:擦除扇区 N 时出错。操作已取消。
Cortex_M3_0:文件加载程序:存储器写入失败:未知错误"

从 Uniflash 4.2中:

"[9/25/2017、3:36:39 PM] [错误] Cortex_M3_0:闪存编程器:擦除扇区 N 时出错。操作已取消。

[2017年9月25日、下午3:36:39 ] [错误] Cortex_M3_0:闪存编程器:擦除闪存时出错。 请检查设备是否已锁定。"

这里显示了扇区 N、但我与其他扇区具有相同的误差。

我已经了解到、这可能是由 CSM PSWD/密钥寄存器中的新值引起的。 当我在0x200000、0x200004 、0x200008和0x20000C 处使用 Uniflash 读取这些值时、我读取0x00000000。  对于位于0x27FFF0、0x27FFF4、0x27FFF8和0x27FFFC 的 PSWD/键也是如此。

 有人能告诉我如何解锁设备吗? 也许我在不知道密码的情况下写了密码、但现在我不知道如何恢复密码。

请告诉我我我的设备没有损坏!

感谢你的帮助。

RIL

编辑:

我刚刚在技术参考手册中阅读了:

""

如果某个区域的密码位置将所有128位都设置为1、则该区域被标记为不安全。 自新推出以来
闪存器件已擦除闪存(全为1)、只需读取密码位置即可引入任何闪存
进入不安全模式。 如果一个区域的密码位置将所有128位都设为零、则该区域为
无论 CMKEY 寄存器的内容如何、都是安全的。 用户不应将所有零用作 A
密码或在擦除闪存期间复位器件。 在擦除例程期间复位器件
可能导致全零或未知密码。 如果在密码位置时复位器件
所有零、器件不能通过第1.10.3.2节中描述的密码匹配流程解锁。 使用
全为零的密码将严重限制用户调试安全代码或对闪存重新编程的能力。

注:如果在某个区域的密码地址全为0或未知值时复位器件、
除非有方法运行闪存擦除例程、否则该区域将被永久锁定
安全 SARAM 嵌入到闪存或 OTP 中。 实施时必须小心谨慎
此过程可避免引入安全漏洞。
""

这几乎让我心停了下来:/ 请告诉我有一种恢复设备的方法,而且不是很容易把设备弄乱!!!

编辑2:

还有几个问题...

实际上、我甚至不能确定我将所有零写入 CSM 密码。 之前、我说过我读取0x200000到0x20000C 的值、它在 uniflash 中显示零。 这应该是密码吗? 不可能像这样读取密码值?

2、两者之间的区别是什么

- 0x200000至0x20000C 区域

- 0x27FFF0至0x27FFFC 区域



3.是否知道 CSM 密码的实际值? 至少要确保它已永久锁定...

4.当您知道密码时,解锁设备的正确方法是什么? 使用 Uniflash?

再次感谢。

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

    如果您在闪存密码位置看到所有的0、那么器件将无法再解锁。
    有关更多详细信息、请参阅此帖子: e2e.ti.com/.../2117181

    您的问题答案:
    1) 1)是、它们是密码位置。 请注意、在对 OTP 中 M3 OTPSECLOCK 位置的 PSWDLOCK 域进行编程之前、您将能够在调试器窗口的闪存中看到编程的密码。 检查 zone1和 zone2的密码位置和 GRABSECT 位置。

    2) 2)有两个安全区。 您提到的地址是每个区域的密码位置。

    3) 3)如#1中所述、您可以打开 CCS 存储器窗口至密码位置、并检查其中编程的值。 如果它全为零、则它被永久锁定。 如果它是其他值、您将能够解锁它。

    4) 4)如果您知道非零密码、则可以使用 CCS 闪存插件或 UniFlash GUI 字段来解锁。 您可以在 GUI 中的密码字段中输入存储器窗口中显示的密码值、然后单击解锁按钮。

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

    尽管我犯了一个错误、但我认为永久锁定设备是如此容易、这是一种遗憾!

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

    还有一个问题,zone1和 zone2的确切地址是什么? 更一般而言、在哪里可以找到器件(F28M35H52C1)的存储器映射的详细说明? 即使在技术参考手册中、我也很难找到它。

    谢谢。

    RIL  

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

    我可以理解这种痛苦。 为了解决这个问题、在 F28004x、F2837xD、F2837xS 和 F2807x 器件等最新器件中、密码位置被移至 OTP 而不是闪存。

    我们在文档中强调了全零密码的后果。 此外、我们的示例和 controlSUITE 中提供的链接器命令文件确保使用映射到密码区域的专用段分别定义密码区域。 这些因素在很大上有助于消除此问题。 但是、用户在使用闪存 GUI 或 API 对这些位置进行编程时必须注意。

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

    关于存储器映射:请访问 www.ti.com/.../f28m35h52c.pdf 查看数据手册中的第6.1节"存储器映射"。

    关于 ZONE1与 ZONE2的存储器地址:对于主控子系统上的双区域安全、通过配置与每个区域相关的 GRABRAM 和 GRABSECT 寄存器、可以将不同的安全存储器(RAM 和闪存扇区)分配给不同的安全区域。 但是、请注意、闪存扇区 N 和闪存扇区 A 分别专用于 ZONE1和 ZONE2。 这些扇区不能通过配置这些寄存器分配给任何其他区域。 请从 www.ti.com/.../spruh22h.pdf 上的 TRM 阅读第1.10节代码安全模块(CSM)。

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

    Vamsi 您好、抱歉、您还有几个问题!

    因此、在 CCS 6.2存储器浏览器中、我只从扇区 A 读取零、即使我知道我没有只写入零。 设备锁定时是否会发生这种情况?
    此外、我可以确认 OTPSECLOCK 仍然为0xFFFFFFFF。

    此外、我知道我没有触摸0x200000至0x20000C (zone1)。 如果我只在 0x27FFF0中写入零到 0x27FFFC (zone2)、是否有可能被完全锁定?


    谢谢
    RIL

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

    RIL、

    是的、如果器件被锁定、您将得到全0。  如果密码为零、器件将被永久锁定 、与 OTPSECLOCK 无关。

    如果您将零写入所有 Zone2 CSM 位置(包括 GRABSECT 位置-读取值0的 GRABSECT 字段说明)、那么它可以锁定除扇区 N 之外的所有扇区(正如我前面提到的那样、扇区 N 专门用于区域1)。  如果您也在扇区 N Zone1密码位置看到零、则表示它们被编程为零。   

    谢谢、此致、

    Vamsi

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

    您好 RIL、

    正如 Vamsi 提到的、如果 CCS 存储器监视窗口将 Zone1和 Zone2的密码位置中的所有值显示 为零、并且 OTPSECLOCK 为0xFFFFF_FFFF、则表示是、这些值已编程(或损坏)为零、并且无法恢复器件。 您需要更换设备。

    您还可以在 CCS 存储器观察窗口中读取 Z1_CSMCR 和 Z2_CSMCR 寄存器、并检查位5 (CSM-ALLZERO)的状态、在本例中、该位应设置为"1"。

    此致、

    Vivek Singh