NXP

详解 NXP Cortex-M3 加密设置

2019-07-12 11:14发布

 NXP Cortex-M3 加密设置
——嵌入式软硬件同盟协会 相信最近手上有 NXP Cortex-M3 的 LPC13XX  LPC17XX 类的器件或者开发板的不少
但是新手对 NXP 密方式往往比较费解和别的如 51AVR 的加密方式不太一样了, 通常 51AVR 的加密往通过编程器在写入 FLASH 程中对其 IC 的配置字或加密位 进行修改但是NXP Cortex-M3 加密在下载软件中却没有选项或说明那么到底如何对我们的器件进行加密呢?这将是我们的话题。


其实通过 NXP 的“AN10851”的阅,我们即可以了解应该如何设置了,http://tiyubisai.com/video_news/news_135631.html 但如何在我 们自己的工程项目中进行设置呢,往往我们拿到的工程项目中没有该设置项,如图:
如此,打开 startup_LPC13xx.s  CP所对应的的汇编文件,找到有这么一段:
 
IF
:LNOT::DEF:NO_CRP
AREA
|.ARM.__at_0x02FC|, CODE, READONLY
CRP_Key
DCD
0xFFFFFFFF  
ENDIF  
我们可以看到这有几个关键的地NO_CRP 0x02FC  0xFFFFFFFF如果
我们在前面定义有“NO_CRP么我们后面的代码也就不起作用了,所以在需要加的时候前面就一定不能再定义了,除了文件里的定义我们还要注意这里:
 ASM 的汇编定义项里,我们需要删除此定义,0x02FC 是在启用加密后,其加密值
所在的地址,0xFFFFFFFF 和定义NO_CRP”的效果一样,但是代码不一样,大家可以自 己通过修改来看效果,0xFFFFFFFF 是无加密,手动修改前面的代码为如下:

;//     <h> Code Read Protection level (CRP)
;//
;//
;//
;//
<o>
CRP_Level:
<0xFFFFFFFF=> Disabled
<0x12345678=> CRP1
<0x87654321=> CRP2
;//  
<0x43218765=> CRP3 (OTP 模式,你确认?)
;//
</h>  
CRP_Level
EQU
0xFFFFFFFF  

IF

:LNOT::DEF:NO_CRP  
AREA
|.ARM.__at_0x02FC|, CODE, READONLY
CRP_Key
DCD
CRP_Level  
ENDIF  

打开右边的“Configuration Wizard项,这是“Option”中多出一个选项,此时
的加密级别为默认的“Disabled代码中所定义的 CRP_Level EQU     0xFFFFFFFF,




设置加密级别为“CRP2,保存并译。


得到的文件中我们可以看到在 0x2FC 的位置我们的加密值了,





例如将文件烧写到 LPC1343 器件,按“BOOT”键进入 U  BOOT ,打开 文件可以看到所有数据“00”了说明加密成功。如图:



CRP3  OTP 模式,一般作为不再修改的产品或有写好的 IAP 做升级使用,否则请 设置为低的加密模式。 http://blog.csdn.net/chengfeng135/article/details/49638435
http://blog.csdn.net/chengfeng135/