RT1052 BootLoader总结_后续Bin合并

摘要:
RT1052BootLoader摘要2(Bin合并)在上一篇博客中,介绍了BootLoader应用程序的配置。如何在生成Bin文件后与BootLoader合并?以下是对生成两个BIN文件的介绍。1.1生产仓文件生产仓文件包括BootLoader和App。它们由两部分组成:bootloader:bootloadermdk----生成bootloader。bin文件。应用程序:pr

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的组成分别如下图:

RT1052 BootLoader总结_后续Bin合并第1张RT1052 BootLoader总结_后续Bin合并第2张

升级用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数据,扣出来用即可。

RT1052 BootLoader总结_后续Bin合并第3张

五.需要注意的问题

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

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

RT1052 BootLoader总结_后续Bin合并第4张

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

RT1052 BootLoader总结_后续Bin合并第5张

RT1052 BootLoader总结_后续Bin合并第6张

RT1052 BootLoader总结_后续Bin合并第7张

RT1052 BootLoader总结_后续Bin合并第8张

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

RT1052 BootLoader总结_后续Bin合并第9张

烧录了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,否则不能烧录。

 RT1052 BootLoader总结_后续Bin合并第10张

技术交流请加wei18124528727

免责声明:文章转载自《RT1052 BootLoader总结_后续Bin合并》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇探究 Redis 4 的 stream 类型WSL使用小结:从ArchLinux到Manjaro下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ubuntu18.04 当你的安装了cuda,程序跑着跑着,却崩溃了怎么办?(提示cuda没了)

前情提要:最近跑程序,突然有天提示cuda没了,具体大意是cuda没安装,但其实我已经安装好久了,而且程序也跑了很多次了,后来查明白,其原因有二: (1)linxu系统的不稳定性,经常会导致这样那样的问题。这样的时候一般是要重装了,缺啥装啥。 (2)Ubuntu18.04内核更新导致的。重新更换成旧内核就行。  网上搜索的教程连接如下:https://bl...

MySQL基于Amoeba实现读写分离

在实际的生活环境中,如果对数据库的读和写都在同一个数据库服务中操作,无论是在安全性,高可用还是高并发等各个方面都不能完全满足实际需求的,因此一般来说都是通过主从复制的方式来同步数据,再通过读写分离来提升数据的高并发负载能力这样的方案来进行部署。 读写分离就是只在主服务器上写,只在从服务器上读,基本的原理是让主数据库处理事务性查询,而从数据库处理select...

mac配置wkhtmltopdf

安装依赖:git, wget, gcc, xcode, X11. wkhtmltopdf是一个将html页面转成pdf的工具。 这段时间公司涉及到将html转成pdf/jpg的相关功能,我查了很多资料,网上大能找到的方法主要有以下两种: a)利用swt的panel.setPage(url) 和Graphics2D结合 b)HtmlImageGenerat...

Linux系统下安装python3.7.3环境

这里用到的Linux系统是centos7系统,centos7是自带py的但是py的2.7.5版本                         连接服务器的使用的是SSH Secure shell 1.首先安装依赖包1)安装gcc编译器   gcc编译器有些系统版本已经默认安装了,可以通过 gcc --version进行查看              安...

3518Ev300_liteos常用命令

sd卡挂载  mount /dev/mmcblk0 /nfsroot vfat usb下载 usbtftp 0x40000000 sample_venc.bin ;go 0x40000000  Y:HISI_KernelHi3518Ev30011Hi3518EV300_SHC_SDK_V1.0.0.2mppsamplevenc usbtftp 0x4200...

npm和package.json那些不为常人所知的小秘密

此文已由作者黄锴授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 强大的命令功能 如果你没使用过script,那你可算是从来没手动编辑过package.json。script作为package.json里最强大的功能,它赋予你新增脚本的能力。特别是从npm@2.0.0 之后,你可以用自定义参数执行脚本。甚至有人宣言,有了npm你可...