客制化启动
4 Nov 2024
Read time: 2 minute(s)
Luban-Lite SDK 支持客制化启动方案,即在芯片上电后运行客制化开发的程序,而不是 Luban-Lite SDK
编译出来的程序。本节演示了以下详细示例:
-
如何让 CPU 上电立刻运行客制化的程序?
启动镜像格式
以下列示了镜像格式的部分内容,可供参考:
数据区域 | 数据分块 | 字段 | 字节 | 描述 |
---|---|---|---|---|
Signed Area |
HEAD1 (8B) |
Magic | 4 | 特征字符串,固定为 ”AIC ” |
Checksum | 4 | 32 bit 累加和校验的校验值。安全启动方案设为 0. | ||
HEAD2 (248B) | Header version | 4 | 本文件头结构的版本号,当前版本为 v1.1: 0x00010001 | |
Image length | 4 | 从文件开头到结束的总数据长度 | ||
Firmware version | 4 | 固件版本号,不同版本之间应单调递增 | ||
Loader length | 4 | 第一级引导程序的有效数据的长度,不包括填充数据 | ||
Load address | 4 | 镜像数据加载到内存的目标地址 | ||
Entry point | 4 | 第一级引导程序的可执行代码入口地址 | ||
Signature algorithm | 4 | 0:没有签名,仅计算 Checksum;1:RSA-2048; | ||
Encryption algorithm | 4 | 0:固件不加密;1:AES-128-CBC 加密 | ||
Signature result offset | 4 | 数字签名数据区域的偏移,从文件头开始计算 | ||
Signature result length | 4 | 数字签名的长度 | ||
Signature key offset | 4 | RSA 公钥数据区域的偏移 | ||
Signature key length | 4 | RSA 公钥数据的长度 | ||
IV data offset | 4 | AES-CBC IV 数据区域的偏移 | ||
IV data length | 4 | IV 的长度 | ||
Private data offset | 4 | 第一级引导程序私有数据区域的偏移 | ||
Private data length | 4 | 第一级引导程序私有数据区域的长度 | ||
PBP offset | 4 | PBP 数据区域的偏移 | ||
PBP length | 4 | PBP 数据的长度 | ||
Loader ext offset | 4 | 扩展的 Loader 内容的开始存放位置 | ||
Padding | 172 | 填充,使得头部刚好 256 字节 | ||
DATA1 | Loader binary data | X | 第一级引导程序的保存区域 | |
Padding | X | 增加填充,使得 256 字节对齐 | ||
DATA2 | Private data area | X | 存放镜像代码中可能使用的私有数据。 | |
Signature key area | X | 存放 RSA 公钥,DER 格式的密钥文件。应 4 字节对齐。 | ||
IV data area | 16 | 存放 AES IV 数据,16 字节。应 4 字节对齐。 | ||
PBP area | X | 存放 PBP 程序。应 16 字节对齐。 | ||
Padding | X | 填充,使得 256 byte 对齐,方便计算数字签名 | ||
- | SIGN | Signature result area | 256 | 前面所有内容的数字签名或 MD5 |