| i.MX95 Image Container Format |
| ----------------------------- |
| |
| The image container set consists of some image containers, and image container |
| contains boot images. Each image container has its own container header which is |
| defined in Figure 1. All container headers are placed together in a continuous |
| 8KB space at the beginning of the image container set - image container set header. |
| |
| ROM code addresses image containers in image container set one by one based on |
| their headers’ order in image container set header. |
| |
| If ELE container exists, its container header must be the 1st one in the image |
| container set header. |
| |
| If V2X container exists, its container header must be the 2nd one in the image |
| container set header. V2X must be combined with ELE container. |
| |
| The information of boot images are recorded in image container header. System |
| ROM code needs to retrieve the information from the image container header, like |
| the offset on boot source, the target address in RAM, the length of boot image. |
| The order of ROM code handling these boot images is based on the order of each |
| boot image information present in image container header. |
| |
| Figure 1: |
| ------------------- +--------------+--------------+--------------+--------------+ |
| ^ |Tag |Length |Length |Version | |
| | +--------------+--------------+--------------+--------------+ |
| | | Flags | |
| | +--------------+--------------+--------------+--------------+ |
| | |# of Images |Fuse version |SW version | |
| Image | +--------------+--------------+--------------+--------------+ |
| Container | |Reserved |Signature Block Offset | |
| Header | ------- +--------------+--------------+--------------+--------------+ |
| | ^ |Image0: Offset, Size, LoadAddr, EntryPoint, Flags, Hash, IV| |
| | | +--------------+--------------+--------------+--------------+ |
| | Image | |Image1: Offset, Size, LoadAddr, EntryPoint, Flags, Hash, IV| |
| | Array | +--------------+--------------+--------------+--------------+ |
| | | | ... | |
| | | +--------------+--------------+--------------+--------------+ |
| v v |ImageN: Offset, Size, LoadAddr, EntryPoint, Flags, Hash, IV| |
| ------------------- +--------------+--------------+--------------+--------------+ |
| | ... | |
| ----------- +--------------+--------------+--------------+--------------+ <-- SignOffset |
| ^ |Tag |Length |Length |Version | |
| | +--------------+--------------+--------------+--------------+ |
| | |SRK table offset |Certificate Offset | |
| | +--------------+--------------+--------------+--------------+ |
| | |Blob Offset |Signature Offset | |
| | +--------------+--------------+--------------+--------------+ |
| Signature | | SRK Table | |
| Block | +--------------+--------------+--------------+--------------+ |
| | | Signature | |
| | +--------------+--------------+--------------+--------------+ |
| | | Certificate (optional) | |
| | +--------------+--------------+--------------+--------------+ |
| v | Blob (optional) | |
| ----------- +--------------+--------------+--------------+--------------+ |
| | ... | |
| +--------------+--------------+--------------+--------------+ <-- Image0Offset |
| | Image0 | |
| +--------------+--------------+--------------+--------------+ |
| | ... | |
| +--------------+--------------+--------------+--------------+ <-- ImageNOffset |
| | ImageN | |
| +--------------+--------------+--------------+--------------+ |
| | ... | |
| +--------------+--------------+--------------+--------------+ |
| |
| i.MX95 Low Power Boot Image Sets Layout |
| --------------------------------------- |
| |
| Image container sets are handled by M33 ROM. |
| |
| --------------- +--------------+--------------+--------------+--------------+ |
| ^ | 1st Container Header | |
| | +--------------+--------------+--------------+--------------+ |
| ELE + | | Padding for 1KB alignment | |
| OEM | +--------------+--------------+--------------+--------------+ |
| Container | | 2nd Container Header | |
| Set | +--------------+--------------+--------------+--------------+ |
| Header | | Padding for 1KB alignment | |
| | +--------------+--------------+--------------+--------------+ |
| | | 3rd Container Header | |
| | +--------------+--------------+--------------+--------------+ |
| v | Padding for 1KB alignment | |
| --------------- +--------------+--------------+--------------+--------------+ |
| | ... | |
| +--------------+--------------+--------------+--------------+ |
| | mx95a0-ahab-container.img | |
| +--------------+--------------+--------------+--------------+ |
| | ... | |
| ------------------- +--------------+--------------+--------------+--------------+ |
| ^ | oei-m33-ddr.bin | |
| | +--------------+--------------+--------------+--------------+ |
| | | ddrfw-header.bin | |
| | +--------------+--------------+--------------+--------------+ |
| | | lpddr5_imem_v202311.bin | |
| | +--------------+--------------+--------------+--------------+ |
| m33-oei-ddrfw.bin | | lpddr5_dmem_v202311.bin | |
| | +--------------+--------------+--------------+--------------+ |
| | | ddrfw-qb-header.bin | |
| | +--------------+--------------+--------------+--------------+ |
| | | lpddr5_imem_qb_v202311.bin | |
| | +--------------+--------------+--------------+--------------+ |
| v | lpddr5_dmem_qb_v202311.bin | |
| ------------------- +--------------+--------------+--------------+--------------+ |
| | ... | |
| +--------------+--------------+--------------+--------------+ |
| | oei-m33-tcm.bin | |
| +--------------+--------------+--------------+--------------+ |
| | ... | |
| +--------------+--------------+--------------+--------------+ |
| | m33_image.bin | |
| +--------------+--------------+--------------+--------------+ |
| | ... | |
| +--------------+--------------+--------------+--------------+ |
| | u-boot-spl.bin | |
| +--------------+--------------+--------------+--------------+ |
| | ... | |
| +--------------+--------------+--------------+--------------+ |
| |
| --------------- +--------------+--------------+--------------+--------------+ |
| u-boot-atf ^ | 1st Container Header | |
| Container | +--------------+--------------+--------------+--------------+ |
| Header v | Padding for 1KB alignment | |
| --------------- +--------------+--------------+--------------+--------------+ |
| | ... | |
| +--------------+--------------+--------------+--------------+ |
| | bl31.bin | |
| +--------------+--------------+--------------+--------------+ |
| | ... | |
| +--------------+--------------+--------------+--------------+ |
| | u-boot.bin | |
| +--------------+--------------+--------------+--------------+ |
| | ... | |
| +--------------+--------------+--------------+--------------+ |