
Secure Boot with i.MX28 HAB Version 4, Rev. 1
Freescale Semiconductor 9
Designing for code signing
is defined in the High Assurance Boot Version 4 Application Programming Interface Reference Manual
included in the Freescale Code Signing Tool release package. The memory location of the RVT differs for
each member of the family. In this case, the location of the RVT for MX28 is documented in the i.MX28
Applications Processor Reference Manual.
3.1.1 Image Vector Table
The Image Vector Table (IVT) is a mandatory part of the boot image, and its structure is defined as:
typedef struct
{
uint32_t header;
uint32_t *entry;
uint32_t reserved1;
uint32_t *dcd;
boot_data_t *boot_data;
uint32_t *self;
uint32_t *csf;
uint32_t reserved2;
} hab_ivt_t;
Where:
uint32_t: A type representing a 32 bit unsigned integer.
Header: Header identifying the type of data structure (0xD1), its size (0x0020), and HAB
version (0x40). For i.MX28, this is D100 2040h.
*entry: Absolute address of the first instruction to execute from the image.
reserved1: Reserved and should be zero.
*dcd: Absolute address of the image Device Configuration Table (DCD). If using
bootlets to configure i.MX28, this field should be set to NULL.
*boot_data: Absolute address of the Boot Data structure. This should be set to NULL for
i.MX28.
*self: Absolute address of the IVT. Used internally by the ROM.
*csf: Absolute address of the Command Sequence File (CSF) used by the HAB library.
This field must be set to NULL when not performing a secure boot.
reserved2: Reserved and should be zero.
The IVT is a block of data that must reside on the boot device. Every image including bootlets in the boot
sequence needs an IVT for ROM to run authentication process. Systems can be designed to have a single
IVT serving all the images in the boot sequence or have multiple IVTs one per image. This app note
provides examples of multiple IVTs, one per image. See Section 3.3, “How to assemble the HAB data with
Comentarios a estos manuales