24小时热门版块排行榜    

查看: 351  |  回复: 0
当前主题已经存档。

sdlj8051

金虫 (著名写手)

[交流] [转贴]LPC2100系列ARM7微控制器的加密方法

1.  加密原理说明
    LPC2100系列ARM7微控制器是世界首款可加密的ARM芯片,对其加密的方法是通过用户程序在指定地址上设置规定的数据。PHILIPS公司规定,对于LPC2100芯片(除LPC2106/2105/2104外),当片内FLASH地址0x000001FC处的数据为0x87654321时,芯片即被加密。在加密设置后,JTAG调试接口无效,ISP功能只提供读ID及全片擦除功能。注意:将带有加密设置的程序下载到芯片内部FLASH,在下一次系统复位后加密生效。

2.  加密程序实现
   为了实现加密设置,用户必须保证在0x000001FC处定义数据0x87654321。我们先来分析一下带有加密设置的程序结构,如图1所示,地址0x000000~0x00000020为异常向量表,若向量表中使用LDR指令跳转,可以在0x00000020~0x00000040之间定义各个异常服务入口地址;在异常向量表之后,0x000001FC地址之前,这一小块空间可以编写部分初始化代码或FIQ中断处理程序;然后使用NOP指令填充,直到0x000001FC地址,在该地址上定义数据0x87654321即可,用户的其它程序代码紧跟其后。

    异常向量表
    部分初始化代码或FIQ中断处理
    NOPNOP...
    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,以实现加密设置。

    程序清单1    LPC2100加密程序实现代码

    ; 异常向量表
    ...
    ...
    IF  EF: EN_CRP                                                (1)
           IF  . >= 0x1fc                                                (2)
           INFO  1,"\nThe data at 0x000001fc must be 87654321.\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目标时,将会生成带有加密设置的程序。

[ Last edited by sdlj8051 on 2006-10-5 at 19:14 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 sdlj8051 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 jCd0dEvKHShX 2026-08-29 4/200 2026-08-30 13:54 by GkCVyODlx4mR
[基金申请] 有没有仍没收到信息的 +6 德尚中行 2026-08-27 7/350 2026-08-30 12:53 by Bxndjjd
[公派出国] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +5 gy1nBQXYQJqL 2026-08-29 8/400 2026-08-30 12:02 by l0VvVHGBGRLv
[考研] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 gy1nBQXYQJqL 2026-08-29 5/250 2026-08-30 11:52 by l0VvVHGBGRLv
[论文投稿] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +5 gy1nBQXYQJqL 2026-08-29 7/350 2026-08-30 11:51 by l0VvVHGBGRLv
[公派出国] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +5 ASdOkHsho7FD 2026-08-28 6/300 2026-08-30 11:18 by l0VvVHGBGRLv
[基金申请] 面上意见出来了 +9 黄鸟于飞Chao 2026-08-29 17/850 2026-08-30 10:28 by 孤独的英雄6
[考博] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 gy1nBQXYQJqL 2026-08-29 5/250 2026-08-30 07:05 by ZPa0EcMwuECS
[硕博家园] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +4 gy1nBQXYQJqL 2026-08-29 5/250 2026-08-30 06:55 by ZPa0EcMwuECS
[考博] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +6 ASdOkHsho7FD 2026-08-28 10/500 2026-08-30 06:11 by ZPa0EcMwuECS
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +6 ASdOkHsho7FD 2026-08-28 13/650 2026-08-30 05:38 by ZPa0EcMwuECS
[基金申请] 国社科申报系统有变化 +3 kynobel 2026-08-23 3/150 2026-08-29 21:57 by 余韵清
[基金申请] 为什么到现在没收到通知? +4 tannykie 2026-08-29 4/200 2026-08-29 17:14 by lmz0216
[基金申请] 系统查不到 +11 董八千 2026-08-26 11/550 2026-08-28 18:06 by Leogzhya
[基金申请] 面上合作单位盖章 +5 ssyjh 2026-08-27 5/250 2026-08-27 20:50 by gdfollow
[基金申请] 看板上这么多中的,有点像50人群里49个人都是骗子的那种感觉…… +5 a089 2026-08-26 6/300 2026-08-27 14:05 by jonewore
[基金申请] 能否退出参与的面上项目解除限项 +23 koalala 2026-08-24 26/1300 2026-08-26 14:29 by 宝贝虫子
[基金申请] 国合里面能看到了 +7 一怀馨秋 2026-08-26 7/350 2026-08-26 11:23 by zhaosm1982
[基金申请] 国际合作可查了,中了面上 (EPI+1)(金币+50) +18 Ldrop2023 2026-08-26 18/900 2026-08-26 11:15 by cmrandy
[基金申请] 项目信息和经费信息在系统里都可以看到了 +6 wittyboy 2026-08-26 14/700 2026-08-26 10:55 by wittyboy
信息提示
请填处理意见