[PATCH v7 17/19] doc: imx: add document for i.MX95 Image Container Format

Alice Guo (OSS)
2025-03-05T13:32:28Z

From: Alice Guo <alice.guo@nxp.com>

This patch add a document for i.MX95 Image Container Format.

Signed-off-by: Alice Guo <alice.guo@nxp.com>
---
doc/imx/imx95_container.txt | 136 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 136 insertions(+)

diff --git a/doc/imx/imx95_container.txt b/doc/imx/imx95_container.txt
new file mode 100644
index 0000000000..2ad5734506
--- /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