主题中讨论的其他器件: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?
再次感谢。