使用debug authentication功能实现调试接口的禁用保护

网友投稿 424 2022-11-20

使用debug authentication功能实现调试接口的禁用保护

在LPC早期发布的一些产品中,如LPC11xx、LPC17xx、LPC18xx、LPC40xx、LPC43xx、LPC8xx等,使用 CRP 实现代码保护,CRP有三种不同的安全级别:CRP1、CRP2和CRP3,各自的安全级别大体如图1所示。

在CRP的三个安全等级中,CRP2最为常用。在使用CRP2时,SWD的访问将被阻止,所以SWD没有办法对Flash进行读写或者擦除操作,ISP也无法对Flash内容进行读取。此外,未经授权的用户并不能通过擦除部分Flash方式修改现有代码,一旦设置为CRP2, 只有Mass Erase Flash后才能继续正常使用,这样便有效地阻止了他人读取和修改代码。

遗憾的是LPC55系列(LPC55(S)0x, 1x,2x,6x) 没有和CRP2完全一样的功能机制,这也是很多初识LPC55的用户感到不适应的地方。不过,若想实现与CRP2相似的功能我们可以通过配置CMPA实现,即禁用ISP和关闭SWD调试口。

1.禁用ISP

2. 关闭SWD调试接口

图2

两寄存器低8位的每一位都代表某一子域,将两寄存器的低8位全部置1,即可关闭全部子域的SWD访问权限。

3.代码中实现关闭/开启ISP和SWD

以LPC5506为例,配置CMPA字段:

关闭ISP和SWD:

除上图被标红的三处外,其余皆保持CMPA默认值。

设置BOOT_CFG为0x70,禁用通过ISP 引脚进入ISP 模式功能。

其余两处0xFF分别为寄存器CC_SOCU_PIN和CC_SOCU_DFLT所在地址,即将调试访问的子域全部关闭。

设置BOOT_CFG为0x00,开启自动ISP模式。

其余两处0x00分别为寄存器CC_SOCU_PIN和CC_SOCU_DFLT所在地址,对调试访问的子域不做修改。

通过串口命令(1或0)开启或关闭SWD及ISP功能:

注意

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Hadoop之——通过distcp并行复制
下一篇:SpringBoot整合MQTT并实现异步线程调用的问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~