1 使用debug authentication功能实现调试接口的禁用保护-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

恩智浦MCU加油站 来源:恩智浦MCU加油站 作者:恩智浦MCU加油站 2022-09-29 08:59 次阅读

说在前面:站长在恩智浦技术社区看到了这篇文章,特分享给大家,但有些话还是要说在前面,本文介绍的方法也许适合在LPC55系列不带S的产品中,但对于型号中具有S的产品,强烈建议使用debug authentication功能实现调试接口的禁用保护。
本文介绍的方法,不能防止通过其他手段(例如通信接口注入)借助代码从内部再次打开调试接口,只有debug authentication功能才能阻止这种情况。

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

de4b24c2-3f8e-11ed-9e49-dac502259ad0.png 图1

LPC55系列 (LPC55(S)0x, 1x,2x,6x) 不再使用CRP机制进行安全保护,而是用Secure boot,配置PFR(Protected Flash Region)等方式实现。其中,所有带S (LPC55S) 的芯片支持Secure boot,如LPC55S28,LPC55S06等等。而非S系列产品,如LPC5506,LPC5528等等,只能通过配置FPR相关字段来实现代码保护。

在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

客户制造编程区域 (CMPA) 属于PFR的一部分,通过配置BOOT_CFG来选择ISP模式的启用情况。 表1为CMPA中9E40字地址开始的字段表,ISP控制域已用红色标识(如表1),表2为ISP域的模式选择,111为ISP禁用。若禁用ISP模式,设置BOOT_CFG=0b1110000。 de7756a0-3f8e-11ed-9e49-dac502259ad0.png 表1 df0343ae-3f8e-11ed-9e49-dac502259ad0.png 表2  

2. 关闭SWD调试接口

搭配使用 CC_SOCU_PIN 以及 CC_SOCU_DFLT 寄存器,用于定义模块的SWD调试访问权限。其中,CC_SOCU_PIN寄存器将调试域细分,不同位代表不同的调试域,对该位置1表示可操作。CC_SOCU_DFLT 寄存器设置可操作调试域的最终访问级别,置1表示禁用。也就是说,将CC_SOCU_PIN及CC_SOCU_DFLT寄存器相对应的位同时置1,便能禁用该模块。如图2。

df2a9f12-3f8e-11ed-9e49-dac502259ad0.png

图2

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

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

以LPC5506为例,配置CMPA字段:

关闭ISP和SWD:

df7ea18e-3f8e-11ed-9e49-dac502259ad0.png

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

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

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

开启ISP及SWD: dfbfc1f0-3f8e-11ed-9e49-dac502259ad0.png 除上图被标红的三处外,其余皆保持CMPA默认值。

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

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

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

e11591a6-3f8e-11ed-9e49-dac502259ad0.png

注意

1. CMPA的设置在Reset或重启生效,一旦在CMPA里关闭了ISP和SWD, 在断电前不要擦除或下载其他程序!否则开发板的ISP和SWD口将永远锁死无法使用。
2. 从系统安全的角度考虑,客户必须了解NXP不承诺可以防范所有的攻击,客户需对产品的安全性在系统级别进行详细评估并采取相应安全措施。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    8575

    浏览量

    151014
  • 代码
    +关注

    关注

    30

    文章

    4779

    浏览量

    68518
  • CMPA
    +关注

    关注

    0

    文章

    1

    浏览量

    1289

原文标题:禁用ISP和SWD实现代码保护

文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问TC1782的调试接口可以禁用吗?如果禁用了怎么开启?

    如题,TC1782的调试接口可以禁用吗?如果禁用了怎么开启?
    发表于 02-20 06:20

    如何使用OPT_FLM文件实现解除读保护功能

    MDK工程里debug选项选择烧录的FLM文件就可以下载调试代码,那OPT_FLM文件该怎么在工程里使用实现解除读保护功能呢?直接在
    发表于 03-28 07:11

    请问ESP-prog是否可以和ESP32-s3适配,实现调试debug功能

    请问ESP-prog 是否可以和ESP32-s3适配,实现调试debug功能
    发表于 06-05 06:34

    调试选项已禁用

    我创建了一个基于CG3加密狗项目的项目,然后我不能开始调试。有人说我需要禁用BooTooLable,我试图禁用它,然后我得到以下建筑错误错误:CDF.M005:CyDSFIT因错误而中止,请处理所有
    发表于 10-26 15:59

    如何解决STM32禁用SWD调试接口后不能下载程序的问题?

    如何解决STM32禁用SWD调试接口后不能下载程序的问题?
    发表于 01-27 07:53

    保护设备的调试接口介绍

    。如果TrustZone安全技术实现,有时,存储在设备中的程序代码。没有适当的保护调试接口的适当位置,第三方可能会执行各种攻击,如: •复制固件并窃取有价值的软件评估,例如算法 •访
    发表于 08-02 08:21

    Vivado+FPGA:如何使用Debug Cores(ILA)在线调试

    在Vivado下在线调试是利用ILA进行的,Xilinx官方给出了一个视频,演示了如何使用Vivado的debug cores,下面我根据这个官方视频的截图的来演示一下: 官方的视频使用的软件版本为
    发表于 02-08 08:52 2628次阅读

    STM32F1系列DEBUG调试功能需要配置吗?

    STM32F1系列的DEBUG调试功能需要配置吗?
    的头像 发表于 03-01 13:57 3362次阅读

    浅谈STM32调试DEBUG相关知识

    说说STM32调试DEBUG相关知识
    的头像 发表于 03-06 15:23 4160次阅读

    配置VScode编译、调试STM32(二)Cortex-Debug插件

    配置VScode编译、调试STM32(二)Cortex-Debug插件
    发表于 12-01 12:21 17次下载
    配置VScode编译、<b class='flag-5'>调试</b>STM32(二)Cortex-<b class='flag-5'>Debug</b>插件

    调试STM32时能下载程序但调试模式(debug)无法进入main函数问题

    调试STM32时能下载程序但调试模式(debug)无法进入main函数问题 今天调试程序时,突然发现程序不正常,然后给板子插上JTAG调试
    发表于 12-01 13:36 17次下载
    <b class='flag-5'>调试</b>STM32时能下载程序但<b class='flag-5'>调试</b>模式(<b class='flag-5'>debug</b>)无法进入main函数问题

    STM32(Cortex-M)内核DEBUG调试接口知识

    学习STM32开发,肯定少不了debug调试这一步骤。那么,本文带你了解一下这个调试相关的知识。
    发表于 02-08 16:02 9次下载
    STM32(Cortex-M)内核<b class='flag-5'>DEBUG</b><b class='flag-5'>调试</b><b class='flag-5'>接口</b>知识

    Fusion Debug调试系统的各项技术、指标介绍

    昭晓Fusion Debug™是一款基于创新架构的全面调试系统,建立在芯华章全新的、自主开发的调试数据库之上,并由创新的设计推理引擎和高性能分析引擎提供动力,可轻松进行信号连接跟踪和根本原因分析
    的头像 发表于 05-23 17:06 1272次阅读

    这些Debug调试方法你知道多少?(上篇)

    在工作日里,如果你问验证工程师在干嘛,多半时间他/她会告诉你在Debug。换句话说,一般在验证周期内,工程师有超过一半的时间都消耗在了功能调试上,尽管这里面包含了验证工程师跟自己“作对”的时间,即验证环境或者测试用例本身存在bu
    的头像 发表于 01-21 17:18 1558次阅读
    这些<b class='flag-5'>Debug</b><b class='flag-5'>调试</b>方法你知道多少?(上篇)

    单片机Debug与仿真区别

    是指在软件或硬件开发过程中,通过特定的工具和技术来查找、诊断和修复错误的过程。在单片机开发中,Debug通常涉及到以下几个方面: 硬件调试 :检查单片机的硬件连接是否正确,包括电源、时钟、I/O接口等。 软件
    的头像 发表于 12-19 09:47 82次阅读