NXP MCU 技术论坛
直播中

吴湛

10年用户 756经验值
擅长:可编程逻辑
私信 关注
[问答]

LPC5526上的ECRP代码保护仿真的疑问求解

现在我只使用具有单位或多位 ECRP 代码保护的 NXP 控制器。
LPC5526(非 S)似乎非常不同,目前对我来说有点混乱。
我只想通过 SWD 端口锁定(所有调试)选项并通过串行 UART 端口读取/更新。完全擦除(uart)会很好,但前提是它也擦除完全保护(这似乎不是真的,让设备变砖/无法编程)
该设备必须有一个选项可以在保护后通过串行端口 (ISP) 进行更新,所以我想取消保护
现在的想法是在程序控制下测试后锁定设备(由我的内部固件完成)(EnableFlashProtect)并且可以选择在收到正确的挑战响应密钥(由我的内部固件完成)后解锁整个设备(由我的内部固件完成)(DisableFlashProtect)
这可以做到吗?(意思是保护不是 OTP)
NXP 有一个带有 DisableFlashProtect 和 EnableFlashProtect 部件的演示。
两者之间的区别是(禁用):

        /* Clean-up CMPA area */
        g_CMPAData[4] = 0; // 4 and 5 must clean same time
        g_CMPAData[5] = 0;
和(启用)(评论是来源似乎与实际价值不同!):

        //                                    Erase Dis  - ISP Dis - JTAG Dis - DGBEN Dis - NIDEN
        uint16_t CMPAData        = 0x0000; // (0 << 8  | (1 << 6) | (1 << 4) | (1 << 1) | (1 << 0);
        uint16_t CMPADataReverse = ~CMPAData;

        uint32_t CMPALockData = (CMPADataReverse<<16)|(CMPAData);
        g_CMPAData[4] = CMPALockData;  // 4 and 5 must set as same value
        g_CMPAData[5] = CMPALockData;
这是我们必须设置和重置的全部吗?
查看上面的值是没有意义的,在未保护版本中,低值为 0,反转高部分也是 0。保护版本也写入(低)0 并执行反转高部分。
其次在另一篇文章中我发现以上仅适用于社署?并且不通过 UART ISP 方法阻止访问(在启动时将 p0.5 保持在低电平),这意味着它“无用”。为此,我应该更改启动选项吗?
只需要 ECRP 兼容设置。
如果我以这种方式正确操作,我将处于允许更改的“Tier1”开发模式。
我似乎还缺少 UM11126.pdf 手册中的位定义。

更多回帖

发帖
×
20
完善资料,
赚取积分