From: Alice Guo <alice....@nxp.com> This patch add a document for i.MX95 Image Container Format.
Signed-off-by: Alice Guo <alice....@nxp.com> --- doc/imx/imx95_container.txt | 136 ++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 doc/imx/imx95_container.txt diff --git a/doc/imx/imx95_container.txt b/doc/imx/imx95_container.txt new file mode 100644 index 00000000000..2ad57345069 --- /dev/null +++ b/doc/imx/imx95_container.txt @@ -0,0 +1,136 @@ +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 | +--------------+--------------+--------------+--------------+ +Conatiner | |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 | +--------------+--------------+--------------+--------------+ + Conatiner | | 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 | + +--------------+--------------+--------------+--------------+ + | ... | + +--------------+--------------+--------------+--------------+ -- 2.43.0