此外,启动头文件还包含 Zynq 7000 SoC 寄存器初始化表。在向 FSBL 交接控制权之前,BootROM 使用启动头文件来查找 FSBL 的位置和长度信息以及有关对系统进行初始化的详细信息。
Bootgen 将启动头文件附加到某一启动镜像开头处。启动头文件表为包含主启动加载程序(如 FSBL)相关启动信息的结构。此结构在整个启动镜像中唯一。该表由 BootROM 解析,以判定闪存中 FSBL 存储位置以及 OCM 中所需的 FSBL 加载位置。其中还存储有部分加密和身份验证相关的参数。
其他启动镜像组件包括:
下表提供了 AMD Zynq™ 7000 SoC 启动头文件的地址偏移、参数和描述。
地址偏移 | 参数 | 描述 |
---|---|---|
0x00-0x1F | Arm® Vector table | 由 Bootgen 使用虚拟矢量表填充(Arm 操作代码 0xEAFFFFFE ,即用于捕获未初始化矢量的 branch-to-self 无限循环)。 |
0x20 | Width Detection Word | 此项是识别单堆叠模式、双堆叠模式或双并行模式下的 QSPI 闪存所必需的。0xAA995566 (小字节序格式)。 |
0x24 | Header Signature | 包含 4 字节的“X”、“N”、“L”、“X”(按字节顺序),按小字节序格式为 0x584c4e58 。 |
0x28 | Key Source | 器件中加密密钥的位置:
|
0x2C | Header Version |
0x01010000
|
0x30 | Source Offset | 此镜像文件中 FSBL(启动加载程序)的位置。 |
0x34 | FSBL Image Length | 解密后 FSBL 的长度。 |
0x38 | FSBL Load Address (RAM) | FSBL 要复制到的目标 RAM 地址。 |
0x3C | FSBL Execution address (RAM) | FSBL 执行的入口矢量。 |
0x40 | Total FSBL Length | 加密后 FSBL 的总大小,包括身份验证证书(如有)和填充。 |
0x44 | QSPI Configuration Word | 硬编码为 0x00000001 。 |
0x48 | Boot Header Checksum | 从偏移 0x20 到 0x44 (含)的字数总和。这些字假定按小字节序。 |
0x4c-0x97 | User Defined Fields | 76 字节 |
0x98 | Image Header Table Offset | 指向镜像头文件表的指针 |
0x9C | Partition Header Table Offset | 指向分区头文件表的指针 |