查看: 1280|回复: 0

[分享] LPC556xx 1B 芯片SB文件的生成及使用

[复制链接]

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
20028
最后登录
2024-4-26
发表于 2020-2-16 20:55:56 | 显示全部楼层 |阅读模式
本帖最后由 小恩GG 于 2020-2-16 21:41 编辑

LPC55S6x 1B 芯片SB文件的生成及使用


有些客户在用指令'receive-sb-file'烧写SB文件到LPC55S6x 1B版本芯片时会遇到SB文件加载错误的情况。和LPC55S6x 0A相比,1B芯片的SecureBoot进行了较大的改动。为了解决这一问题,我们首先需要了解二者的不同之处。
1.    SB2.1 vs. SB2.0
SB2文件内容在elftosb的用户手册中进行了介绍。SB2文件被加载后,芯片会执行SB文件中配置文件所包含的配置指令。被下载的image路径包含在“source”.bd文件中。文本文件(sbkek.txt)中的SB密钥用于elftosb命令行工具的加密。
0A版本的LPC55S6x芯片支持SB2.0格式。
1B版本的LPC55S6x芯片支持SB2.1格式。
SB2.0和SB2.1的主要区别在于数字签名的应用。
SB2.0只有加密,数字签名为可选项;SB 2.1是加密+数字签名模式,这里的数字签名为必选项。
2.    SB2 文件的生成和使用
2.1 SB2.0生成范例(只有加密):
elftosb -flpc55xx -k "sbkek.txt" -c "commandFile.bd" -o"output.sb2" "input.bin"
其中
-f = family lpc55xx(lpc55xx系列)
-k = KEK文件
-c = 命令文件
-o = 生成的SB2
Files…= 输入文件( "input.bin"通常是输入的plain image),用来替换命令文件中定义源文件。bin文件也可以写死在命令文件("commandFile.bd")中,来取代elftosb中的文件输入项。
"commandFile.bd"内容:
options {
flags = 0x4; // 0x8 encrypted + signed, 0x4encrypted
buildNumber = 0x1;
productVersion = "1.00.00";
componentVersion = "1.00.00";
}
sources {
inputFile = extern(0);
}
section (0) {
       erase0x0..0x40000;
load inputFile > 0x0;
}
2.2 SB2.1生成范例(加密+数字签名)
ü  1个根密钥
elftosb.exe-f lpc55xx -k "sbkek.txt" -c "commandFile.bd" -o"output.sb2" -s "selfsign_privatekey_rsa2048.pem" -S
"selfsign_v3.der.crt"-R "selfsign_v3.der.crt" -h "RKTH.bin""input.bin"4
ü  4个根密钥
elftosb.exe  -f lpc55xx -k "sbkek.txt" -c"commandFile.bd" -o "output.sb2" -s private_key_1_2048.pem-S certificate_1_2048.der.crt -R certificate_1_2048.der.crt -Rcertificate_2_2048.der.crt -R certificate_3_2048.der.crt -Rcertificate_4_2048.der.crt -h "RHKT.bin" "input.bin"
其中
-f = family lpc55xx(lpc55xx系列)
-k = KEK文件
-c = 命令文件
-o = 生成的SB2文件
-s = 用于签名的证书私钥
-S = 证书链中的证书,证书链中的每一个证书都必须按照证书创建的顺序使用-S进行指定(根证书排第一位)
-R = 根证书,可以指定1-4个根证书,每个根证书必须使用新的-R转换方式进行指定,其中一个根证书必须是使用-S转换方式指定的第一个证书
-h= elftosb生成的二进制输出文件,其中包含所有根证书(RKTH)的散列值,要上传至芯片对应的寄存器中
Files…= 输入文件( "input.bin"通常是输入的plain image),用来替换命令文件中定义源文件。bin文件也可以写死在命令文件("commandFile.bd")中,来取代elftosb中的文件输入项。
"commandFile.bd"内容:
options {
flags =0x8; // 0x8 encrypted + signed, 0x4 encrypted
buildNumber= 0x1;
productVersion= "1.00.00";
componentVersion= "1.00.00";
}
sources {
inputFile =extern(0);
}
section (0){
       erase 0x0..0x40000;
loadinputFile > 0x0;
}
2.3 SB2文件使用下载
更新过的二进制文件所生成的SB2文件可以通过ISP指令集的“receive-sb-file”指令将其加载到芯片Flash中。
blhost-p COMxx receive-sb-file <path to the secured binary(.sb2)>
注意:在烧写SB2.1文件前,RKTH必须已写入到CMPA中(参见AN12283,5.5 CMPApreparation),并且使能位于CFPA的ROTKH_REVOKE(地址0x9DE18)的RoT密钥(参见AN122835.4 CFPA preparation)
成功加载SB2文件后,MCU将按照SB配置文件(.bd文件)中的配置执行该文件。 执行文件时,将擦除从0x0到0x40000的内部flash地址。完成flash擦除操作后,烧写文件将从地址0x0开始下载。
完成上述操作后重启设备,更新的image将加载到内部flash执行。

回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-4-26 14:12 , Processed in 0.104526 second(s), 18 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表