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.
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 determine where the 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:
The following table provides the address offsets, parameters, and descriptions for the AMD Zynq™ 7000 SoC Boot Header.
|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.
|Width Detection Word
|This is required to identify the QSPI flash in
single/dual stacked or dual parallel mode.
0xAA995566 in little endian format.
|Contains 4 bytes ‘X’,’N’,’L’,’X’ in byte order, which
0x584c4e58 in little endian
|Location of encryption key within the device:
|Location of FSBL (bootloader) in this image file.
|FSBL Image Length
|Length of the FSBL, after decryption.
|FSBL Load Address (RAM)
|Destination RAM address to which to copy the FSBL.
|FSBL Execution address (RAM)
|Entry vector for FSBL execution.
|Total FSBL Length
|Total size of FSBL after encryption, including authentication certificate (if any) and padding.
|QSPI Configuration Word
|Hard coded to
|Boot Header Checksum
|Sum of words from offset
The words are assumed to be little endian.
|User Defined Fields
|Image Header Table Offset
|Pointer to Image Header Table
|Partition Header Table Offset
|Pointer to Partition Header Table