0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

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

3天内不再提示

LPC546xx加密配置-ECRP详解

jf_pJlTbmA9 来源:恩智浦MCU加油站 作者:恩智浦MCU加油站 2023-09-27 16:24 次阅读

有客户开发LPC54608做产品,已经到量产阶段,最后想把固件配置为禁止ISP boot功能,禁止SWD功能。

客户看了手册(UM10912)中有关配置加密的章节: Chapter 43: LPC546xx Enhanced Code Read Protection(ECRP),看完之后还是有一些疑问。现场工程师让我帮忙看看,感觉手册里确实写的有点雾里看花,不容易参透。

LPC546xx出了好多年了,网上一搜竟然没有把ECRP写的特别细,特别明白的文章。

好在有大神同事的指点和PPT支持,今天这篇文章就将ECRP扒个底朝天!

ECRP是啥?

ECRP全称为Enhanced Code Read Protection。 直译过来就是”高级代码保护机制”。

这个高级对应之前的CRP(用在LPC546xx之前的LPC产品上)。 所以ECRP就算是CRP的升级,功能更强大。作用嘛:就是给代码提供保护啦,比如设置为Flash不可读,禁止ROM bootloader、禁止调试口之类的。

每个厂家的MCU都会有类似的配置,大同小异。没啥新鲜的,相信大家都接触过类似的机制。

ECRP可以实现:

Protect FLASH from ISP Erase/Write(禁止/使能ISP擦写Flash)

Protect FLASH from IAP Erase/Write(禁止/使能IAP擦写Flash)

ISP Entry from bootloader(禁止/使能 进入ROM bootloader)

ISP Entry from IAP call(禁止/使能 在程序中调用ROM API )

SWD Enable/Disable(禁止/使能 调试接口)

ECRP本身在手册中的描述还好,比较清晰,但主要是ECRP的这些功能还和OTP模块耦合。两者共同作用来决定最终的芯片保护行为,这块内容手册写的不多,总有一种”我似乎懂了但是有些地方好像又没有懂”的尴尬。

FLASH ECRP的位置

ECRP的位置在中断向量表的0x20位置,就是一个uint32_t,类似一个特殊寄存器,往里面写不同值来决定保护行为(直接修改.s文件中的中断向量表0x20位置数据就可以)。

FLASH_ECRP有定义的部分只占0-17位,其他位保留。默认出厂时,其值为0xFFFF_FFFF(Flash全擦就是1嘛)。

具体的位段定义请参考手册。这块手册写的挺清楚的。

wKgaomUD8vaAcCfmAAHTCwxwM-g824.png

OTP ECRP的位置

OTP是一段特殊的非易失存储器,只能被编程1次。默认为全0.位置如下图:

wKgaomUD8viAFnefAAFvXOCfb2g505.png

OTP不是Flash,也不和Flash统一编址,只能由IAP函数来写入,且只能写一次。

可以看到它由3个Bank组成,我们只关心Bank3。Bank3又由3个word组成,word0也叫做ECRP。

我们姑且叫他OTP_ECRP。于是,我们把Flash地址0x20那个ECRP重命名叫做FLASH_ECRP。

OTP_ECRP和FLASH_ECRP的值,共同决定芯片代码保护行为

FLASH_ECRP 和OTP_ECRP都具有一些相同的行为控制功能,但是!但是!他们的位定义却不一样(需要特别留意),如下表所示:

wKgZomUD8vmATGpSAAMgEpmVKJs305.png

另外,芯片最终的代码保护行为是到底是听OTP_ECRP还是FLASH_ECRP呢? 答案是优先OTP_ECRP的设定,并且优先采取更严格的设定,举个例子:比如ISP ENTRY from bootloader这个功能,结果如下表:

wKgZomUD8vuAOSGwAAAjrQKUEj4971.png

(E代表使能功能,D代表禁止功能)

最后,FLASH_ECRP还有2个特殊值,被定义如下:

wKgaomUD8v-ACEaiAABbYFrEIzw180.jpg

所以FLASH_ECRP默认的值0xFFFF_FFFF才能被识别为最低限制(使能所有功能,不进行任何保护)。

来源:恩智浦MCU加油站

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16018

    浏览量

    343639
  • 寄存器
    +关注

    关注

    30

    文章

    5031

    浏览量

    117734
  • ISP
    ISP
    +关注

    关注

    6

    文章

    457

    浏览量

    50846
收藏 人收藏

    评论

    相关推荐

    【秀秀资源】LPC546系列经典资料合集

    本帖最后由 wujianwei3980 于 2017-3-17 14:52 编辑 喜欢请在原帖右下角点赞支持,谢谢!有关LPC546系列的资料合集1. LPC54608原理图https
    发表于 03-17 09:23

    LPC546xx快速应用手册

    LPC546xx外部总线接口支持SDRAM的应用手册
    发表于 12-07 07:10

    带FATFS的LPC546xx SD卡应用手册

    LPC546xx 带有FATFS文件系统的SD卡接口应用手册
    发表于 12-07 07:08

    LPC546xx MCU相关资料分享

    LPC546xx MCU系列 - 概况介绍
    发表于 12-07 07:11

    LPC546xx勘误表资料分享

    LPC546xx勘误表
    发表于 12-07 06:20

    LPC546xx产品数据手册

    LPC546xx数据手册
    发表于 12-09 07:12

    有人有LPC55xx处理器的OpenOCD目标配置吗?

    有人有 LPC55xx 处理器的 OpenOCD 目标配置吗?OpenOCD 是否有任何计划支持 LPC55xx 系列处理器?设置生产编程站。当我发现没有 LPC55xx 的任何目标
    发表于 04-18 10:20

    LPC546xx外部RAM/Flash内部 AM/Flash、链接脚本和MCUXpresso项目设置问题求解

    。 不应使用函数 __RAMFUNC() 或 __TEXT()。 MCUXpresso 项目是否可以配置为 startup_lpc54628.c、SystemInit()、所有中断(ADC、定时器
    发表于 05-06 08:47

    ARM处理器lpc21xx_lpc22xx用户手册

    NXP ARM处理器lpc21xx_lpc22xx用户手册
    发表于 12-30 15:41 16次下载

    SDK v.2.0 for LPC546xx

    LPC546xx SDK2.0用户手册,有需要的下载看看
    发表于 03-17 09:14 36次下载

    SDK API Reference Manual LPC546x

    SDK API Reference Manual LPC546xx,用户手册
    发表于 03-17 08:29 33次下载

    Release Notes for LPC546xx

    SDK v.2.0.0 Release Notes for LPC546xx Derivatives
    发表于 03-17 08:25 39次下载

    LPC546xx勘误表

    发表于 12-09 18:49 0次下载
    <b class='flag-5'>LPC546xx</b>勘误表

    LPC546xx数据手册

    发表于 12-12 18:55 0次下载
    <b class='flag-5'>LPC546xx</b>数据手册

    LPC546xx勘误表

    发表于 12-13 07:37 0次下载
    <b class='flag-5'>LPC546xx</b>勘误表