LPC2100系列ARM7微控制器加密ARM芯片

1. 加密原理说明
lpc2100系列arm7微控制器是世界首款可加密的arm芯片,对其加密的方法是通过用户程序在指定地址上设置规定的数据。philips公司规定,对于lpc2100芯片(除lpc2106/2105/2104外),当片内flash地址0x000001fc处的数据为0x87654321时,芯片即被加密。在加密设置后,jtag调试接口无效,isp功能只提供读id及全片擦除功能。注意:将带有加密设置的程序下载到芯片内部flash,在下一次系统复位后加密生效。
2. 加密程序实现
为了实现加密设置,用户必须保证在0x000001fc处定义数据0x87654321。我们先来分析一下带有加密设置的程序结构,如图1所示,地址0x000000~0x00000020为异常向量表,若向量表中使用l dr指令跳转,可以在0x00000020~0x00000040之间定义各个异常服务入口地址;在异常向量表之后,0x000001fc地址之前,这一小块空间可以编写部分初始化代码或fiq中断处理程序;然后使用nop指令填充,直到0x000001fc地址,在该地址上定义数据0x87654321即可,用户的其它程序代码紧跟其后。
异常向量表
部分初始化代码

fiq中断处理
nop
nop

dcd 0x87654321
用户代码
加密程序的实现部分在lpc2100的起动代码startup.s文件中,如程序清单1所示。程序首先使用if伪指令判断是否已定义en_crp全局变量,若已声明,则编译程序清单1(2)~(8)的代码,进行加密设置。说明:en_crp全局变量可以在汇编器中预定义或在该文件开头用gbla/gbll声明。
程序清单1(2)是用来判断当前代码地址是否已超过0x000001fc,若超过则使用info伪指令显示出错信息,见程序清单1(3)。程序清单1(5)~(7)用于填充nop指令,直到0x000001fc为此。程序清单1(8)即是在0x000001fc地址上定义数据0x87654321,以实现加密设置。
0x00000000
0x00000020
0x000001fc
程序清单1 lpc2100加密程序实现代码 ;
异常向量表


if ef: en_crp (1)
if . >= 0x1fc (2)
info 1,\nthe data at 0x000001fc must be 0x87654321.\nplease delete some source before this line. (3)
endif (4)
crpdata while . < 0x1fc (5)
nop (6)
wend (7)
crpdata1 dcd 0x87654321 (8)
endif (9)
3. 工程模板中可加密的目标
使用lpc2100专用工程模板建立的工程,当选用relinflash目标时,将会生成带有加密设置的程序。
对于thumb executable image for ucosii(for lpc21xx) 工程模板,当选用thumbrelinflash目标时,将会生成带有加密设置的程序。

6种图像格式着重介绍
音圈马达无人机灯光秀展示“中华诗城”魅力
360儿童手表9X拆解,国产芯片占比达到百分百
小米明天发布Aqara年度新品:重新定义全自动 智能门锁
多参数气象监测系统
LPC2100系列ARM7微控制器加密ARM芯片
隆基Hi-MO 7最新组件为荒漠戈壁赋能
至为芯科技TWS耳机充电盒方案芯片IP5528,极速快充实现智能充电
如何处理跨时钟域信号?
需要学习的linux驱动模块编写
海能达夯实转型基础,推进管理变革
温湿度控制器的原理及分类
解析西门子医疗引领数字化医疗
运放参数的详细说明和分析
图文详解NumPy看这一篇就够了
3d打印技术应用广泛,从汽车零件走向飞机零件商用不是问题
FCI开发19针微型高清多媒体接口连接器
基于微流控的相变材料封装技术研究进展
铂纳特斯推出其最新研发的动力电池精密供液系统
苹果13一共有多少款型号