完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
在一些早期的LPC产品中,如LPC11xx、LPC17xx、LPC18xx、LPC40xx、LPC43xx、LPC8xx等,都使用CRP来利用代码保护。CRP 具有三个不同的安全级别: 图 1 显示了 CRP1、CRP2 和 CRP3 的安全级别。
图1 LPC55 系列(LPC55(S)0x、1x、2x 和 6x)使用安全启动和受保护闪存区域 (PFR) 配置代替 CRP 进行安全保护。带S的型号(例如LPC55S)支持安全启动,例如LPC55S28和LPC55S06。但非S系列产品,如LPC5506、LPC5528,只能通过配置FPR相关字段来实现代码保护。 CRP2 是最常用的保护级别。使用 CRP2,SWD 访问被阻止,因此用户无法通过 SWD 或 ISP 读取、写入或擦除 Flash。此外,用户不能通过擦除部分 Flash 来修改现有代码。一旦进入CRP2模式,Flash只能通过Mass Erase Flash进行恢复,有效防止攻击者读取和修改Flash代码。 不幸的是,LPC55(S)0x、1x、2x、6x 等 LPC5500 器件没有与 CRP2 完全相同的功能机制,这受到许多用户的质疑。但是,如果我们需要实现与 CRP2 相同的功能,我们可以配置 CMPA 以禁用 ISP 和 SWD 调试端口。 1. 禁用ISP Customer Manufacturing/Factory Configuration Area (CMPA)是PFR的一部分,Configure BOOT_CFG选择是否启用ISP模式。表 1 显示了 CMPA 中以 9E40 字地址开头的字段表。ISP 控制域已标记为红色(如表 1 所示)。ISP域的模式选择如表2所示,111为ISP disabled。如果禁用 ISP 模式,将 BOOT_CFG 设置为 0b1110000。
表格1
表 2 2. 禁用SWD DCFG_CC_SOCU 是一种配置,用于指定每个调试域的调试访问限制。这些访问限制在本节中也称为约束属性。调试子系统被细分为多个调试域,以实现更精细的访问控制。图 2 显示了调试域及其在 DCFG_CC_SOCU 中相应的控制位位置。从逻辑上讲,DCFG_CC_SOCU 有两个组成部分:SOCU_PIN 和 SOCU_DFLT。SOCU_PIN 和 SOCU_DFLT 寄存器一起用于定义模块的 SWD 调试访问。它在逻辑上由两个部分组成:
即同时设置SOCU_PIN和SOCU_DFLT寄存器的相应位为1,使能模块。该模块通过将 SOCU_PIN 和 SOCU_DFLT 寄存器的相应位同时设置为 0 来禁用。参见图 2。 图 2 注意LPC55 PFR中CC_SOCU_PIN和CC_SOCU_DFLT的默认值都是0。因此,在这种情况下,虽然SOCU_PIN和SOCU_DFLT都为0,但不符合位反转规则(下图3)。因此,当CC_SOCU_PIN和CC_SOCU_DFLT都为0时,默认开启所有调试权限。 图 3 注意:CC_SOCU_PIN(CC_SOCU_DFLT)和SOCU_PIN(SOCU_DFLT)的区别。带有 CC_ 的前者包括后者的反向位。 例如,如果 SOCU_PIN 和 SOCU_DFLT 设置为全零且反向位设置为 1,则禁用所有 SWD 模块。 图 4 3. 通过代码禁用/启用ISP和SWD 下面以LPC5506为例配置CMPA字段: 3.1 禁用 ISP 和 SWD 图 5 保留默认 CMPA 值,但图 5 中以红色突出显示的两个值除外。 1) 将 BOOT_CFG 设置为 0x70 以禁用 ISP。 2) 将SOCU_PIN和SOCU_DFLT全部设置为0,将所有反向位设置为1,即禁止所有调试访问子域。 3.2 启用 ISP 和 SWD 图 6 保留默认 CMPA 值,但图 6 中以红色突出显示的两个值除外。 1) 将 BOOT_CFG 设置为 0x00 以启用自动 ISP。 2) 恢复DCFG_CC_SOCU的默认值,即CC_SOCU_PIN和CC_SOCU_DFLT全零。在这种情况下,所有调试权限都将恢复(打开),因为不符合位反转规则(请参阅本文的第 2 部分)。 3.3 代码实现 通过串行命令(1 或 0)启用或禁用 SWD 和 ISP 功能。 图 7 附上演示代码。本例程已在LPCXpresso55S06开发板上进行测试。 笔记: 随着系统安全要求和攻击面的演变,客户必须了解恩智浦未声称可以防御或强烈缓解的攻击类型(尤其是高级物理攻击),以便客户可以采取适当的缓解措施如有必要,在系统级别。 |
|||||||||
相关推荐
|
|||||||||
只有小组成员才能发言,加入小组>>
2135个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
37376 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
6775 浏览 1 评论
7793 浏览 1 评论
7642 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
5071 浏览 0 评论
1556浏览 2评论
关于NINA-W132 Wi-Fi模块SPI通信遇到的疑问求解
1208浏览 2评论
如何在MPC PowerPC MCU上首次刷写后禁用BDM?
749浏览 1评论
将HFREFR和LFREFR寄存器值设置为错误的值来将故障注入CMU,但CMU_ISR值始终为零,为什么?
735浏览 1评论
将SPSDK for FRDM-MCX-W71 SDK与VS一起安装时出现hidapi构建错误怎么解决?
678浏览 1评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 02:48 , Processed in 0.786440 second(s), Total 70, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
679