【经验分享】RT1015 MCUXpressoSecure Provisioning BEE加密 一 文档简介
之前写过一篇经验分享RT1015 APP BEE加密烧录:
主要讲了app文件准备,使用MCUBootUtility工具,还有命令行模式通过MFGtool下载。由于当时的NXP MCUXPresso Secure Provisioning工具还没有添加RT1015,所以当时没有加该工具的操作方式,现在NXP的MCUXPresso Secure Provisioning工具也比较完善好用,所以该篇文章主要针对MCUXPresso Secure Provisioning工具在之前的MIMXR1015-EVK做过BEE加密的板子上,使用新工具再次去做BEE unsigned模式的加密代码烧录。BEE unsigned模式对应于MCUBootUtility工具的BEE encrypted image boot, 也就是不使能certificate,不加HAB。
二 操作步骤
2.1 工具下载
MCUXPresso Secure Provisioning工具下载地址:
下载并安装,有时间的网友可以读一下这个工具的文档:
C:\nxp\MCUX_Provi_v2.1\MCUXpressoSecure Provisioning Tool.pdf
写的非常详细易懂。
2.2 APP BEE加密下载步骤
第一步: 新建tool workspace
File->New Workspace, 选择相关路径
图1
第二步:芯片启动相关配置
图2
这里需要注意的是,bootType,选择为XIP Encrypted(BEE User Keys) unsigned, 也就是不带HAB certificates的模式。
第三步:USB连接
Connect选择USB,开发板RT1015进入serial download 模式:
SW8:1-ON,2-OFF,3-OFF,4-ON
点击TestConnection,测试连接情况:
图3
可以看到,连接成功,并且由于之前已经做过BEE的操作,相关的BEE key还有用于key source的SW-GP2 fuse都已经被烧录。
第4步:image 选择
选择准备好的app image,具体请看上一篇经验分享。
第5步:XIP Encryption(BEE user keys)
图4
这里涉及到引擎的选择,我们这里只使用Engine0, BEE engine KEY选择为zero key,key source 来源SW-GP2,key具体数据为对称的:0123456789abcdeffedcba9876543210
这些数据实际上是放在fuse的swGp2的地方。
由于这些fuse都已经在前面烧录过,所以可以不需要重新烧录。
第6步: build image
图5
这里可以看到5个文件:
1)evkmimxrt1015_iled_blinky_0x60002000.bin
2)evkmimxrt1015_iled_blinky_0x60002000_bootable.bin
3)evkmimxrt1015_iled_blinky_0x60002000_bootable_nopadding.bin
4)evkmimxrt1015_iled_blinky_0x60002000_nopadding.bin
5)evkmimxrt1015_iled_blinky_0x60002000_nopadding_ehdr0.bin
1) ,2),3)明文文件,1)2)完全一样,包含头部地址但无数据,还有IVT+BD+DCD+APP,3)无头部地址和相关数据,开始即从1)2)的0X1000 IVT开始存放的所有数据:IVT+BD+DCD+APP。
4)5)BEE密文数据,4)是3)对应的密文数据,5)EKIB0,EPRDB0区域,也就是实际0X60000400开始的BEE密文EncryptedKey Info Block 0 和Encrypted Protection RegionDescriptor Block 0,因为只使用engine0,所以只有engine0相关信息。
实际上,只需要烧录FCBD头部+5)+4)就会形成一个完整的BEE加密unsigned image。
第7步: 烧录image
图6
点击write Image,完成烧录。
这里打开对应的BEE userKey,即对应的图4中的user key data, 放在swGp2 fuse里面。
查看烧录log可以看到,主要步骤:
擦除从0X60000000开始的0X5000长度的数据
生成头部并烧录,从0X60000000开始烧录
烧录evkmimxrt1015_iled_blinky_0x60002000_nopadding_ehdr0.bin到0x60000400
烧录evkmimxrt1015_iled_blinky_0x60002000_nopadding.bin到0X60001000
修改板载MIMXRT1015-EVK SW8 1-ON,2-OFF,3-ON,4-OFF,重新上电,可以看到板上小灯闪烁,BEE unsigned代码运行成功。注意SW8_1是Encrypted XIP, BEE模式下必须要开启,否则不能成功boot。
下面给出几张工具生成文件和烧录后读出文件的对比情况:
图7
图8
图9
图10
图11
对于MCUBootUtility默认缺少BEE工具的问题,同样可以使用MCUXPresso Secure Provisioning工具里面的image_enc.exe:
拷贝:
C:\nxp\MCUX_Provi_v2.1\bin\tools\image_enc\win\ image_enc.exe
到
NXP-MCUBootUtility-3.2.0\tools\image_enc2\win 本文还录了个小视频,添加在附件中。 |