RT1052 BootLoader总结_后续Bin合并(示例代码)

栏目: 技巧 · 发布时间: 2021-03-04

来源:cnblogs.com

简介  这篇文章主要介绍了RT1052 BootLoader总结_后续Bin合并(示例代码)以及相关的经验技巧,文章约8315字,浏览量111,点赞数7,值得参考!

RT1052 BootLoader总结2(Bin合并)

在上一篇博客中介绍了BootLoader的app的配置,那么生成Bin文件以后呢,怎么跟BootLoader合并?下面介绍

 

一. 两种BIN文件的产生

1.1生产用Bin文件

生产用Bin文件包括BootLoaderApp两部分合成

工程目录:

bootloaderootloadermdk----产生bootloader.bin文件。

App   projectmdk--------产生UpgradeV001.bin文件(采用升级功能配置)。

生成文件需要在工程改动的地方:appmain.c中修改版本号

static const char   pcbWareVersion[DEVINFOLENGTHMAX] = "MB_P003     ";          ///<硬件版本号数组

static const char   progVersion[DEVINFOLENGTHMAX]        = "PROGV001";     ///<软件版本号数组

static const char   bootVersion[DEVINFOLENGTHMAX]        = "BOOTV001";     ///<boot版本号数组

DCD.bin文件产生:

首先从bootloader.bin提取DCD.bin (offset 0x1030 - 0x1443)文件保存到电脑。

合成供加密生产用bin文件步骤:

bootloader.bin和Upgrade.bin两个文件使用16进制编辑工具(HxDx64.exe)合到一起。

 

注意_bootloader.bin若不足0x7FFF则填充0XFF0x7FFF;后面紧跟Upgrade.bin 然后,将前0x1FFF数据删除,保存,

此时的Bin文件才能提供给NXP-MCUBootUtility.exe加密,烧录。

本方法适用于生产。  

加密后和加密前,img的组成分别如下图:

技术图片技术图片

 

升级用BIN文件

 

Upgrade.bin,采用升级功能配置的工程产生,不需要额外修改,可以直接当做升级文件。启动地址是0x60008000

 

加密升级文件binV001步骤

bootloader只能接收事先加密好的Upgrade,因此你需要事先将Upgrade做一次加密,可利用NXP-MCUBootUtility oolsimage_encwinimage_enc.exe这个命令行工具,也可以直接用NXP-MCUBootUtility,菜单栏进入Tools/Option,选择Master mode。

然后选择你的Upgrade.bin(注意是裸binary,不要任何头,binary起始就是SP, PC),

 

【Advanced Key Settings】里加密参数与前一封邮件里设置一致,然后分别点击【Generate Unsigned bootable image】和【Encrypt Bootable Image】按钮,结束之后找到NXP-MCUBootUtilitygenootable_imageApp_unsigned_bee_encrypted.bin文件,

该文件里偏移0x8000之后的数据即是你要的加密好的app数据,扣出来用即可。

技术图片

 

 

五.需要注意的问题

5.0注意:目前测试是必须在烧录板子的过程中产生sb文件。

5.1加密烧录后还不能顺利启动,启动还需要置位一个boot cfg pin,如果是RT105x,应该是GPIO_B0_05,将这个pin拉高,然后POR复位。此方法不方便采用,可以参考下面的方法。

技术图片

 

 

5.2加密烧录后还不能顺利启动,不采用5.1方法,还有烧录fuse的方法可以替代。置位Boot cfg pin一般是在产品调试阶段使用

 设置fuses两个:  0x450[1]0x460[23:22][20][18][4] 设置为1,

即分别是0x000000020x00D40010

 

x460[18]   1-SDP READ_REGISTER is disabled

 

0x460[17]   1 - No serial download support

 

补充:

 

0x460[23:22]  11 - No debug mode

 

0x460    1 - JTAG is disabled

研发阶段的设置(不禁止串口下载模式和JTAG):

0x4500x460分别设置为:0x000000020x00000010

技术图片

 

技术图片

 

技术图片

 

技术图片

 

 

需要在一键式烧录后,先scan,然后改写0x400,0x450,0x460,如图再烧录一次burn !

技术图片

 

烧录了fuse启动,依旧可以运行非加密imageRT不是根据fuse来判断image是否加密,而是根据Flash里的bootable image是否含有EKIB, EPRDB来判断的。

5.3 BOOT_MODE[1:0] pin不受fuse值影响,并且设置只在POR后生效。

5.4软件目录NXP-MCUBootUtility oolsimage_encwin下面需要image_enc.exe,否则不能烧录。

 技术图片

 

 

技术交流请加wei18124528727

 


以上就是本文的全部内容,希望对大家的学习有所帮助,版权归原作者或者来源机构所有,感谢作者,如果未能解决你的问题,请参考以下文章。

痞子衡嵌入式:飞思卡尔i.MX RT系列微控制器介绍篇(4)- RT105x选型(示例代码)

HDOJ_1052(示例代码)

RT image架构解析(示例代码)

i.MX RT系列外置Flash加密为您的产品安全保驾护航

i.MX RT系列外置Flash加密为您的产品安全保驾护航