Edit online

AIC 启动镜像格式

28 May 2024
Read time: 3 minute(s)

ArtInChip BROM 所使用的启动镜像格式。

1. AIC 启动镜像格式
数据区域 数据分块 字段 字节 描述
Signed Area

Block1

(256B)

Magic 4 特征字符串,固定为 ”AIC ”
Checksum 4 32 bit 累加和校验的校验值。安全启动方案设为 0.
Header version 4 本文件头结构的版本号,当前版本为 v1.0: 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 数据的长度
Padding 176 填充,使得头部刚好 256 字节
Block2 Loader binary data X 第一级引导程序的保存区域
Padding X 增加填充,使得 256 字节对齐
Block3 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 对齐,方便计算数字签名
- Block4 Signature result area 256 前面所有内容的数字签名

对于 NAND,在保存第一级引导程序的时候,还会在每个 NAND Block 的第一个 Page 生成 Page Table。Page Table 的作用是用于快速索引镜像数据所在的不同备份 Page 地址。

2. NAND Page Table 格式
Index Content (20 Bytes)
0 Magic(4 Bytes) Count(4 Bytes) Padding (12 Bytes)
1

PA(4 Bytes)

(Backup 0)

PA(4 Bytes)

(Backup 1)

PA(4 Bytes)

(Backup 2)

PA(4 Bytes)

(Backup 3)

Checksum

(4 Bytes)

2

PA(4 Bytes)

(Backup 0)

PA(4 Bytes)

(Backup 1)

PA(4 Bytes)

(Backup 2)

PA(4 Bytes)

(Backup 3)

Checksum

(4 Bytes)

Magic 开头的 20 字节,是 Page Table 的头信息,其中 Magic 的值固定为 “AICP”, Count 表示 BootLoader 的数据被分为几个 Page 进行保存。

从 Index 1 表示 BootLoader 的第一个 Page 数据有 4 个备份,被分别存放在对应 PA(Page address) 所指的 NAND Page 中,Checksum 值是该 Page 数据的校验值。