Bootgen attaches a boot header at the beginning of a boot image. The boot header table is a structure that contains information related to booting the primary bootloader, such as the FSBL. There is only one such structure in the entire boot image. This table is parsed by BootROM to get determine where FSBL is stored in flash and where it needs to be loaded in OCM. Some encryption and authentication related parameters are also stored in here. The additional boot image components are:
- Zynq-7000 SoC Register Initialization Table
- Zynq-7000 SoC Image Header Table
- Zynq-7000 SoC Image Header
- Zynq-7000 SoC Partition Header
- Zynq-7000 SoC Authentication Certificate
Additionally, the Boot Header contains a Zynq-7000 SoC Register Initialization Table. BootROM uses the boot header to find the location and length of FSBL and other details to initialize the system before handing off the control to FSBL.
The following table provides the address offsets, parameters, and descriptions for the Zynq®-7000 SoC Boot Header.
Address Offset | Parameter | Description |
---|---|---|
0x00-0x1F | Arm® Vector table | Filled with dummy vector table by Bootgen (Arm Op code 0xEAFFFFFE , which is a branch-to-self infinite loop
intended to catch uninitialized vectors. |
0x20 | Width Detection Word | This is required to identify the QSPI flash in
single/dual stacked or dual parallel mode. 0xAA995566 in little endian format. |
0x24 | Header Signature | Contains 4 bytes ‘X’,’N’,’L’,’X’ in byte order, which
is 0x584c4e58 in little endian
format. |
0x28 | Key Source | Location of encryption key within the device:
|
0x2C | Header Version |
0x01010000
|
0x30 | Source Offset | Location of FSBL (bootloader) in this image file. |
0x34 | FSBL Image Length | Length of the FSBL, after decryption. |
0x38 | FSBL Load Address (RAM) | Destination RAM address to which to copy the FSBL. |
0x3C | FSBL Execution address (RAM) | Entry vector for FSBL execution. |
0x40 | Total FSBL Length | Total size of FSBL after encryption, including authentication certificate (if any) and padding. |
0x44 | QSPI Configuration Word | Hard coded to 0x00000001 . |
0x48 | Boot Header Checksum | Sum of words from offset 0x20 to 0x44 inclusive.
The words are assumed to be little endian. |
0x4c-0x97 | User Defined Fields | 76 bytes |
0x98 | Image Header Table Offset | Pointer to Image Header Table |
0x9C | Partition Header Table Offset | Pointer to Partition Header Table |