## Intel® SoC FPGA Embedded Development Suite User Guide

ID 683187
Date 8/07/2020
Public

The mkpimage header file format has two versions:

• Version 0, used for Cyclone® V SoC and Arria® V SoC FSBL (Preloader)
• Version 1, used for Intel® Arria® 10 SoC Bootloader

For Version 0, used for Cyclone® V SoC and Arria® V SoC Preloader, the header includes the following:

• Validation word (0x31305341)
• Version field (set to 0x0)
• Flags field (set to 0x0)
• Program length measured by the number of 32 bit words in the Preloader program
• 16-bit checksum of the header contents (0x40 – 0x49)
Figure 23. Header Format Version 0

For Version 1, used for Intel® Arria® 10 SoC Bootloader, the header includes the following:

• Validation word (0x31305341).
• Version field (set to 0x1).
• Flags field (set to 0x0).
• Header length, in bytes, set to 0x14 (20 bytes).
• Total program length (including the exception vectors and the CRC field) in bytes. For an image to be valid, length must be a minimum of 0x5C (92 bytes) and a maximum of 0x32000 (200KiB).
• Program entry offset relative to the start of header (0x40) and should be 32-bit word-aligned. Default is 0x14, any value smaller than that is invalid.
• 16-bit checksum of the header contents (0x40 – 0x51):
Figure 24. Header Format Version 1

The header checksum for both versions of the mkpimage header is the CRC checksum of the byte value from offset 0x0 to (n*4)-4 bytes where n is the program length.

The CRC is a standard CRC32 with the polynomial:
x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1
There is no reflection of the bits and the initial value of the remainder is 0xFFFFFFFF and the final value is exclusive OR-ed with 0xFFFFFFFF.