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.
|0x00-0x1F||Arm® Vector table||Filled with dummy vector table by Bootgen (Arm Op code
|0x20||Width Detection Word||This is required to identify the QSPI flash in
single/dual stacked or dual parallel mode.
|0x24||Header Signature||Contains 4 bytes ‘X’,’N’,’L’,’X’ in byte order, which
|0x28||Key Source||Location of encryption key within the device:
|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
|0x48||Boot Header Checksum||Sum of words from offset
|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|