1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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 | +--------------+--------------+--------------+--------------+
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 |
+--------------+--------------+--------------+--------------+
| ... |
+--------------+--------------+--------------+--------------+
|