有时设备可能会意外锁定。 本常见问题解答解决了一些常见的原因。
C2000培训小程序码
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.
有时设备可能会意外锁定。 本常见问题解答解决了一些常见的原因。
C2000培训小程序码
代码安全模块(CSM)简介
CSM 记录在特定器件的系统控制和中断指南中。 本页是指以下 C2000器件系列上提供的代码安全模块:
命名规则
CSM 出现安全性的原因
在5种不同的情况下、CSM 要么是安全的、要么是安全的:
上述条件的解决方案如下:
在任何这些情况下、如果 CSM 是安全的并且密码未知、则无法解锁以重新编程。
停止擦除操作
如果擦除操作被中断且不允许完成、闪存可能会被耗尽。 发生这种情况时、器件可能会开始无法擦除。 擦除算法不应被停止、这也会影响 CSM 密码。 如果密码处于未知状态、则无法恢复设备。 这也会使 CSM 中的所有零产生永久锁定。 TMS320F28xxx DSC 的闪存编程解决方案(SPRAAL3)应用手册中对此进行了进一步讨论。
CSM 常见问题
问:CSM 自动锁定的情况是什么? 它是确定性的吗?
问:为什么所有0xFFFF 都不安全?
当器件出厂时、闪存处于擦除状态。 在此状态下、包括密码在内的所有位置都为1 (即0xFFFF)。
问:有多少个密码?
有一个128位密码。 它占用闪存中的8个连续字。
问:在所有零都被写入密码位置后、如何解锁 CSM?
当所有零写入密码地址时、这是一个永久锁定、没有方法可以擦除此密码。 这在针对所使用的特定器件的系统控制和中断参考指南的 CSM 部分中进行了记录。 本节提供以下说明:
不要将128位全为零的密码用作密码。 这会自动保护器件、而不管 KEY 寄存器的内容如何。 该器件既不可调试、也不可重新编程。
问:是否有任何方法可以删除密码?
如果您知道密码、则可以通过擦除扇区 A 来解锁闪存并擦除密码
问:是否有任何方法可以在不擦除所有扇区 A 的情况下擦除密码?
否 可被擦除的最小内存量是一个扇区。
问:在非安全存储器中运行的代码无法读取/写入安全存储器或闪存-为什么?
如果 CSM 被锁定、那么在安全区域之外运行的代码将无法读取或写入任何安全位置。 CSM 必须被解锁或者代码必须被重新定位至其中一个安全区域。
问:CSM 是否会阻止在引导 ROM 中运行的引导加载程序?
引导 ROM 本身不安全、引导 ROM 执行 CSM 密码位置的虚拟读取。
Q:代码在 CSM 受保护区域之外运行、CSM 被锁定。 它能否分支到 CSM 受保护存储器内的代码?
是的、您可以分支到受保护的存储器中并开始执行、而无需任何额外的设置。
注意:这与尝试通过数据或程序空间从闪存读取值不同-这将被阻止。 例如、即使 CSM 已锁定、在 M0 SRAM (不安全)中运行的代码也可以分支到闪存中的代码。 如果 CSM 被锁定、从 M0 SRAM 运行的代码将不能从闪存中读取任何值。
问:如何判断哪些存储器受 CSM 保护?
请参阅特定器件的数据手册。 受 CSM 保护的存储器将在存储器映射部分中指示。 例如、如果 L0显示"安全区域"、则它受 CSM 保护。
问:每次我通过 Code Composer 复位器件时 CSM 都会锁定。 这是预期行为吗? 是否有解决方法?
是的、这是预期行为。 在开发过程中很容易解决这个问题。 您可以执行以下两项操作之一。
1
2.
3.
4.
|
OnReset( int nErrorCode) { Unlock_CSM(); } |
问:要解锁 CSM、虚拟读取是首先进行的还是首先加载密钥寄存器?
任何一个订单都可以正常工作。 参考指南说明先执行 PWL 虚拟读取、然后将密码写入密钥位置。 其他一些示例可能以相反的顺序执行它(即加载 KEY 寄存器、然后对 PWL 进行虚拟读取)。
问:如果器件受密码保护、是否可以使用 SDFlash 通过串行端口对其进行编程?
是的。 需要构建 SDFlash 算法、使其知道器件的密码并可以解锁。 这很容易实现、并在串行算法的自述文件中进行了说明: http://emulators.spectrumdigital.com/utilities/sdflash/c2000/SDFlash_Serial_RefGuide_v3_3.pdf
ECSL 常见问题解答
问:当我尝试连接到锁定的器件时、为什么 Code Composer Studio 会给我一个仿真器错误?
在具有 ECSL 保护且不支持硬件复位等待模式的器件(例如 Piccolo 器件)上、如果器件被锁定:
器件上电后、CPU 将开始运行、并可能执行访问 ECSL 受保护区域的指令。 如果发生这种情况、ECSL 将跳闸并导致仿真器连接断开。 要解决此问题:
此时、您应该能够继续并解锁设备。