RT1052 RT1060 BEE 加密XIP运行 烧录

RT1052 RT1060 BEE 加密XIP运行 烧录  目录

. 两种BIN文件的产生 

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

1.2升级用BIN文件 

二.加密5种模式 

三.使用NXP-MCUBootUtility.exe工具加密烧录 

四.加密升级文件生成 

五.需要注意的问题

一. 两种BIN文件的产生

1.1生产用Bin文件

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

工程目录:

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

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

生成文件需要在工程改动的地方:appmain.c中修改版本号bootloader工程中将版本号放在一个固定地址处。

一. 两种BIN文件的产生

1.1生产用Bin文件

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

工程目录:

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

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

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

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

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

 bootloader工程中将版本号放在一个固定地址处,此处暂时没有做。

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

DCD.bin文件产生:

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

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

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

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

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

本方法适用于生产。  

非加密烧录步骤:

1.设置DCD文件路径:

  1. 选中非加密,同时在Tools中选择Entry mode
    1. 选择合成后的升级文件:
    2. 加密后和加密前,img的组成分别如下图:

    3. 升级用BIN文件

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

    4. 加密模式有5种,请参考专门的博客:https://www.cnblogs.com/henjay724/p/10047071.html
    5. 根据我们加密升级的具体需求,我们选择模式5,且是自定义KEY,方便保管。

      我们会烧录SRKH(0x580 - 0x5f0)SW_GP2(0x690 - 0x6c0)GP4(0x8c0 - 0x8f0),这些区域一经烧录便不得更改,甚至我们希望这些区域不仅不能被更改,也要不能被回读

    6. 使用NXP-MCUBootUtility.exe工具加密烧录

      在软件主界面,按如下配置,选择'BEE Encrypted Image Boot',选中Bootloader_App.bin,格式选择Raw Binary,并且Base Address填0x60002000,然后点击【Advavced Key Settings】

    7. 在Flexible Key Setting页面,如果你是RT105x,只需要设置User Key Data(可自己手动输入32个hex,也可点击下方Generate Random Key生成随机Key)和Protected Region x Start/Length,其余保持不变。

      为了方便升级,建议统一为:User key Data:xxxxxxxxxxxxxxxx

    8. 关于Protected Region,使用默认Region 0就可以了,Start和length即是你想加密的范围。

       1. 如果你想加密全部的bootloader和app,那么start设为0x60002000, 长度即你的Boot_PROGSVN00000V001runOk.bin长度减去8KB,然后再做4KB对齐,即0x51000。

    9.  如果你只想加密app,那么start应设为0x60008000,长度即你的Boot_PROGSVN00000V001runOk.bin长度减去32KB,然后再做4KB对齐,即0x4B000。

 

配置完成,点击【All-In-One Action】按钮,BEE加密就完成了,也下载到rt1052

四.加密升级文件UpgradeV001步骤

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

利用CGA上位机手动刷固件注意:应该把makeFirmware转换后的os放入目录:******firmware,否则不能升级。

五.使用rt-flash烧录

上一个章节可以生成4sb文件如下:

BOOT_PROGV018_unsigned_bee_encrypted_flexspinor_0xc0000007_0x0.sb

BOOT_PROGV018_unsigned_bee_encrypted_flexspinor_0xc0000007_0x0_efuse.sb

BOOT_PROGV018_unsigned_bee_encrypted_flexspinor_0xc0000007_0x0_flash.sb

burn_efuse.sb

六.需要注意的问题

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

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

 

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

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

即分别是0x000000020x00D40010

 0x460[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

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

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

 

原文地址:https://www.cnblogs.com/zhihui-3669/p/12963385.html