主题中讨论的其他器件:UNIFLASH、controlSUITE
工具/软件:Code Composer Studio
你(们)好
我在链接器输出文件中提供了一些具有 DCSM Z1设置的 FW。 这对于首次闪烁是正常的。 如果第二次编程尝试没有取消保护、也是很好的、只是失败了、但设备继续使用旧的固件。 但我必须取消保护、调试和刷新新版本。
我拉动了其中一个引导引脚来选择等待模式、我编辑了 GEL 文件、在 IDE 中单击 CPU 复位按钮时使用已知的 Z1密码使 Z1不受保护。我在 RAM 中进行了一些调试(不更改 OTP 中的任何位)、 然后,我将新代码刷新为我的失败*在链接器输出文件*中使用相同的旧 OTP 区域配置时,该代码失败。 然后、我在没有内置 Out 文件区域配置设置的情况下刷写代码。 它成功了,但代码未启动(当然,两个引导引脚都拉高)! 如果用空密码将区域链接指针更改为下一个区域、则会启动该操作。 为什么? OTP ECC 是否损坏? 如何以及在哪里可以在寄存器中看到这方面的证据? 我从 ROM out 文件加载了符号、每次单击"CPU reset"并继续时、 它都会在 Estop 指令的 WaitBoot 例程中停止。 我尝试调试 ROM 是因为它 为什么会在那里结束、但使用大量不同的 OTP 设置很难理解。 如果在单击"CPU Reset"(CPU 重置)后、我编辑指向 FW 入口点的 PC 指针、它将按预期工作。 我确信、引导 ROM 不会尝试调用闪存中的任何内容。
有人可以帮您解决这个问题吗? 为什么它不再运行? 如果是由于 OTP ECC,如何验证这一点? 在单击 CPU 复位后的那一刻、我在 ROM 的 WaitBoot()中的 Estop 上没有看到任何单一的闪存 ECC 寄存器变化。
此外、我还想知道为什么要使用 OTP 来实现安全性、以便单次故障很容易导致器件损坏、甚至生产出昂贵的器件? 为什么不闪存、即使没有已知解锁密码也可以擦除闪存? 也许对 TI 来说并不容易、好的、但为什么一切都被逆转了!?? Uniflash 会列出从第3个到第0个的密码。 CCS 闪存设置将它们从第0个到第3个列出。 按照区域配置中设置的地址顺序为 EXEONLYRAM-EXEONLYSECT-GRABRAM-GRABSECT。 为什么 CCS 会在闪存设置中将它们换为双模? 好的、它是原样的、但应该如何轻松处理它? CCS–否 Uniflash–否 首次在 ELF 文件中提供 DCSM 设置很容易。 如果需要一些维修、解锁、然后再次锁定、该怎么办? 如何在不麻烦的情况下做到这一点?
更新了:我在0x2C 上检查了引导 ROM 状态寄存器。 比较 CPU 复位-恢复序列、 不安全 与受保护的关系是0x0000F000与0x0000D000。 在安全位9中、闪存启动未设置。 错误位17.. 30在这两种情况下都很清楚。
Update2:尝试使用 Z2。 首先、CCS (V8)拒绝对 Z2的 PSWDLOCK=0进行编程。 看起来像 CCS 错误。
对于 Z2、它是相同的、启用的安全-不运行、禁用的安全-运行正常。
关于引导 ROM 状态。 结果,我对 EMUKEY 等的理解是错误的。 由于我在启动引脚设置为等待的情况下被固定在板上,难怪它已到达 WaitBoot()函数。 但是、将 EMUKEY 设置为0x0B5A (从闪存引导)、单击"CPU Reset"和"Resume"、与 CPU 的连接始终会丢失、如果没有电路板上电周期、则无法连接。
谢谢
Edward