blob: 1c72230c0604991446e2594501714513858555d2 [file] [log] [blame]
Simon Glassc44aa612023-06-23 13:22:04 +01001.. SPDX-License-Identifier: GPL-2.0+
2
Simon Glass73963042023-06-23 13:22:09 +01003Flattened Image Tree (FIT) Format
4=================================
Marian Balakowicz18710b82008-03-12 12:13:13 +01005
Simon Glass47e37332023-06-23 13:22:03 +01006Introduction
7------------
Marian Balakowicz18710b82008-03-12 12:13:13 +01008
Simon Glass73963042023-06-23 13:22:09 +01009The number of elements playing a role in the kernel booting process has
10increased over time and now typically includes the devicetree, kernel image and
11possibly a ramdisk image. Generally, all must be placed in the system memory and
12booted together.
Marian Balakowicz18710b82008-03-12 12:13:13 +010013
Simon Glass73963042023-06-23 13:22:09 +010014For firmware images a similar process has taken place, with various binaries
15loaded at different addresses, such as ARM's ATF, OpenSBI, FPGA and U-Boot
16itself.
Marian Balakowicz18710b82008-03-12 12:13:13 +010017
Simon Glass73963042023-06-23 13:22:09 +010018FIT provides a flexible and extensible format to deal with this complexity. It
19provides support for multiple components. It also supports multiple
20configurations, so that the same FIT can be used to boot multiple boards, with
21some components in common (e.g. kernel) and some specific to that board (e.g.
22devicetree).
Marian Balakowicz18710b82008-03-12 12:13:13 +010023
Simon Glass47e37332023-06-23 13:22:03 +010024Terminology
25~~~~~~~~~~~
Marian Balakowicz18710b82008-03-12 12:13:13 +010026
Simon Glass73963042023-06-23 13:22:09 +010027This document defines FIT by providing FDT (Flat Device Tree) bindings. These
28describe the final form of the FIT at the moment when it is used. The user
Marian Balakowicz18710b82008-03-12 12:13:13 +010029perspective may be simpler, as some of the properties (like timestamps and
Simon Glass73963042023-06-23 13:22:09 +010030hashes) are filled in automatically by the U-Boot mkimage tool.
Marian Balakowicz18710b82008-03-12 12:13:13 +010031
Simon Glass73963042023-06-23 13:22:09 +010032To avoid confusion with the kernel FDT the following naming convention is used:
Marian Balakowicz18710b82008-03-12 12:13:13 +010033
Simon Glass47e37332023-06-23 13:22:03 +010034FIT
Simon Glass73963042023-06-23 13:22:09 +010035 Flattened Image Tree
Marian Balakowicz18710b82008-03-12 12:13:13 +010036
Simon Glass73963042023-06-23 13:22:09 +010037FIT is formally a flattened devicetree (in the libfdt meaning), which conforms
38to bindings defined in this document.
Marian Balakowicz18710b82008-03-12 12:13:13 +010039
Simon Glass47e37332023-06-23 13:22:03 +010040.its
41 image tree source
Marian Balakowicz18710b82008-03-12 12:13:13 +010042
Simon Glass47e37332023-06-23 13:22:03 +010043.itb
44 flattened image tree blob
45
Simon Glass73963042023-06-23 13:22:09 +010046Image-building procedure
Simon Glass47e37332023-06-23 13:22:03 +010047~~~~~~~~~~~~~~~~~~~~~~~~
Marian Balakowicz18710b82008-03-12 12:13:13 +010048
Simon Glass73963042023-06-23 13:22:09 +010049The following picture shows how the FIT is prepared. Input consists of
Marian Balakowicz18710b82008-03-12 12:13:13 +010050image source file (.its) and a set of data files. Image is created with the
Bin Meng75574052016-02-05 19:30:11 -080051help of standard U-Boot mkimage tool which in turn uses dtc (device tree
Simon Glass73963042023-06-23 13:22:09 +010052compiler) to produce image tree blob (.itb). The resulting .itb file is the
53actual binary of a new FIT::
Marian Balakowicz18710b82008-03-12 12:13:13 +010054
Simon Glassa37a8f22023-06-23 13:22:02 +010055 tqm5200.its
56 +
57 vmlinux.bin.gz mkimage + dtc xfer to target
Simon Glass73963042023-06-23 13:22:09 +010058 eldk-4.2-ramdisk --------------> tqm5200.itb --------------> boot
Simon Glassa37a8f22023-06-23 13:22:02 +010059 tqm5200.dtb /|\
60 |
Simon Glass73963042023-06-23 13:22:09 +010061 'new FIT'
Marian Balakowicz18710b82008-03-12 12:13:13 +010062
Simon Glass47e37332023-06-23 13:22:03 +010063Steps:
64
65#. Create .its file, automatically filled-in properties are omitted
66
67#. Call mkimage tool on a .its file
68
69#. mkimage calls dtc to create .itb image and assures that
70 missing properties are added
71
Simon Glass73963042023-06-23 13:22:09 +010072#. .itb (new FIT) is uploaded onto the target and used therein
Marian Balakowicz18710b82008-03-12 12:13:13 +010073
74
Simon Glass47e37332023-06-23 13:22:03 +010075Unique identifiers
76~~~~~~~~~~~~~~~~~~
Marian Balakowicz18710b82008-03-12 12:13:13 +010077
78To identify FIT sub-nodes representing images, hashes, configurations (which
79are defined in the following sections), the "unit name" of the given sub-node
80is used as it's identifier as it assures uniqueness without additional
81checking required.
82
83
Simon Glass73963042023-06-23 13:22:09 +010084Root-node properties
Simon Glass47e37332023-06-23 13:22:03 +010085--------------------
Marian Balakowicz18710b82008-03-12 12:13:13 +010086
Simon Glass73963042023-06-23 13:22:09 +010087The root node of the FIT should have the following layout::
Marian Balakowicz18710b82008-03-12 12:13:13 +010088
Simon Glassa37a8f22023-06-23 13:22:02 +010089 / o image-tree
90 |- description = "image description"
91 |- timestamp = <12399321>
92 |- #address-cells = <1>
93 |
94 o images
95 | |
96 | o image-1 {...}
97 | o image-2 {...}
98 | ...
99 |
100 o configurations
101 |- default = "conf-1"
102 |
103 o conf-1 {...}
104 o conf-2 {...}
105 ...
Marian Balakowicz18710b82008-03-12 12:13:13 +0100106
Simon Glass47e37332023-06-23 13:22:03 +0100107Optional property
108~~~~~~~~~~~~~~~~~
Marian Balakowicz18710b82008-03-12 12:13:13 +0100109
Simon Glass47e37332023-06-23 13:22:03 +0100110description
Simon Glass73963042023-06-23 13:22:09 +0100111 Textual description of the FIT
Simon Glass47e37332023-06-23 13:22:03 +0100112
113Mandatory property
114~~~~~~~~~~~~~~~~~~
115
116timestamp
117 Last image modification time being counted in seconds since
Marian Balakowicz18710b82008-03-12 12:13:13 +0100118 1970-01-01 00:00:00 - to be automatically calculated by mkimage tool.
119
Simon Glass47e37332023-06-23 13:22:03 +0100120Conditionally mandatory property
121~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
122
123#address-cells
124 Number of 32bit cells required to represent entry and
Marian Balakowicz18710b82008-03-12 12:13:13 +0100125 load addresses supplied within sub-image nodes. May be omitted when no
126 entry or load addresses are used.
127
Simon Glass47e37332023-06-23 13:22:03 +0100128Mandatory nodes
129~~~~~~~~~~~~~~~
130
131images
132 This node contains a set of sub-nodes, each of them representing
Marian Balakowicz18710b82008-03-12 12:13:13 +0100133 single component sub-image (like kernel, ramdisk, etc.). At least one
134 sub-image is required.
Simon Glass47e37332023-06-23 13:22:03 +0100135
136configurations
137 Contains a set of available configuration nodes and
Marian Balakowicz18710b82008-03-12 12:13:13 +0100138 defines a default configuration.
139
140
Simon Glass47e37332023-06-23 13:22:03 +0100141'/images' node
142--------------
Marian Balakowicz18710b82008-03-12 12:13:13 +0100143
144This node is a container node for component sub-image nodes. Each sub-node of
Simon Glassa37a8f22023-06-23 13:22:02 +0100145the '/images' node should have the following layout::
Marian Balakowicz18710b82008-03-12 12:13:13 +0100146
Simon Glassa37a8f22023-06-23 13:22:02 +0100147 o image-1
148 |- description = "component sub-image description"
149 |- data = /incbin/("path/to/data/file.bin")
150 |- type = "sub-image type name"
151 |- arch = "ARCH name"
152 |- os = "OS name"
153 |- compression = "compression name"
154 |- load = <00000000>
155 |- entry = <00000000>
156 |
157 o hash-1 {...}
158 o hash-2 {...}
159 ...
Marian Balakowicz18710b82008-03-12 12:13:13 +0100160
Simon Glass47e37332023-06-23 13:22:03 +0100161Mandatory properties
162~~~~~~~~~~~~~~~~~~~~
163
164description
165 Textual description of the component sub-image
166
167type
Simon Glasse0b5ddf2023-06-23 13:22:10 +0100168 Name of component sub-image type. Supported types are:
Simon Glass47e37332023-06-23 13:22:03 +0100169
Simon Glasse0b5ddf2023-06-23 13:22:10 +0100170 ==================== ==================
171 Sub-image type Meaning
172 ==================== ==================
173 invalid Invalid Image
174 aisimage Davinci AIS image
175 atmelimage ATMEL ROM-Boot Image
176 copro Coprocessor Image}
177 fdt_legacy legacy Image with Flat Device Tree
178 filesystem Filesystem Image
179 firmware Firmware
180 firmware_ivt Firmware with HABv4 IVT }
181 flat_dt Flat Device Tree
182 fpga FPGA Image }
183 gpimage TI Keystone SPL Image
184 imx8image NXP i.MX8 Boot Image
185 imx8mimage NXP i.MX8M Boot Image
186 imximage Freescale i.MX Boot Image
187 kernel Kernel Image
188 kernel_noload Kernel Image (no loading done)
189 kwbimage Kirkwood Boot Image
190 lpc32xximage LPC32XX Boot Image
191 mtk_image MediaTek BootROM loadable Image }
192 multi Multi-File Image
193 mxsimage Freescale MXS Boot Image
194 omapimage TI OMAP SPL With GP CH
195 pblimage Freescale PBL Boot Image
196 pmmc TI Power Management Micro-Controller Firmware
197 ramdisk RAMDisk Image
198 rkimage Rockchip Boot Image }
199 rksd Rockchip SD Boot Image }
200 rkspi Rockchip SPI Boot Image }
201 script Script
202 socfpgaimage Altera SoCFPGA CV/AV preloader
203 socfpgaimage_v1 Altera SoCFPGA A10 preloader
204 spkgimage Renesas SPKG Image }
205 standalone Standalone Program
206 stm32image STMicroelectronics STM32 Image }
207 sunxi_egon Allwinner eGON Boot Image }
208 sunxi_toc0 Allwinner TOC0 Boot Image }
209 tee Trusted Execution Environment Image
210 ublimage Davinci UBL image
211 vybridimage Vybrid Boot Image
212 x86_setup x86 setup.bin
213 zynqimage Xilinx Zynq Boot Image }
214 zynqmpbif Xilinx ZynqMP Boot Image (bif) }
215 zynqmpimage Xilinx ZynqMP Boot Image }
216 ==================== ==================
Simon Glass47e37332023-06-23 13:22:03 +0100217
218data
219 Path to the external file which contains this node's binary data.
220
221compression
Simon Glasse0b5ddf2023-06-23 13:22:10 +0100222 Compression used by included data. If no compression is used, the
223 compression property should be set to "none". If the data is compressed but
224 it should not be uncompressed by the loader (e.g. compressed ramdisk), this
225 should also be set to "none".
226
227 Supported compression types are:
228
229 ==================== ==================
230 Compression type Meaning
231 ==================== ==================
232 none uncompressed
233 bzip2 bzip2 compressed
234 gzip gzip compressed
235 lz4 lz4 compressed
236 lzma lzma compressed
237 lzo lzo compressed
238 zstd zstd compressed
239 ==================== ==================
Marian Balakowicz18710b82008-03-12 12:13:13 +0100240
Simon Glass47e37332023-06-23 13:22:03 +0100241Conditionally mandatory property
242~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
243
244os
245 OS name, mandatory for types "kernel". Valid OS names are:
Simon Glasse0b5ddf2023-06-23 13:22:10 +0100246
247 ==================== ==================
248 OS name Meaning
249 ==================== ==================
250 invalid Invalid OS
251 4_4bsd 4_4BSD
252 arm-trusted-firmware ARM Trusted Firmware
253 dell Dell
254 efi EFI Firmware
255 esix Esix
256 freebsd FreeBSD
257 integrity INTEGRITY
258 irix Irix
259 linux Linux
260 ncr NCR
261 netbsd NetBSD
262 openbsd OpenBSD
263 openrtos OpenRTOS
264 opensbi RISC-V OpenSBI
265 ose Enea OSE
266 plan9 Plan 9
267 psos pSOS
268 qnx QNX
269 rtems RTEMS
270 sco SCO
271 solaris Solaris
272 svr4 SVR4
273 tee Trusted Execution Environment
274 u-boot U-Boot
275 vxworks VxWorks
276 ==================== ==================
Simon Glass47e37332023-06-23 13:22:03 +0100277
278arch
279 Architecture name, mandatory for types: "standalone", "kernel",
Simon Glasse0b5ddf2023-06-23 13:22:10 +0100280 "firmware", "ramdisk" and "fdt". Valid architecture names are:
281
282 ==================== ==================
283 Architecture type Meaning
284 ==================== ==================
285 invalid Invalid ARCH
286 alpha Alpha
287 arc ARC
288 arm64 AArch64
289 arm ARM
290 avr32 AVR32
291 blackfin Blackfin
292 ia64 IA64
293 m68k M68K
294 microblaze MicroBlaze
295 mips64 MIPS 64 Bit
296 mips MIPS
297 nds32 NDS32
298 nios2 NIOS II
299 or1k OpenRISC 1000
300 powerpc PowerPC
301 ppc PowerPC
302 riscv RISC-V
303 s390 IBM S390
304 sandbox Sandbox
305 sh SuperH
306 sparc64 SPARC 64 Bit
307 sparc SPARC
308 x86_64 AMD x86_64
309 x86 Intel x86
310 xtensa Xtensa
311 ==================== ==================
Simon Glass47e37332023-06-23 13:22:03 +0100312
313entry
314 entry point address, address size is determined by
Alexandru Gagniuc5638c5f2020-12-15 13:15:43 -0600315 '#address-cells' property of the root node.
316 Mandatory for types: "firmware", and "kernel".
Simon Glass47e37332023-06-23 13:22:03 +0100317
318load
319 load address, address size is determined by '#address-cells'
Alexandru Gagniuc5638c5f2020-12-15 13:15:43 -0600320 property of the root node.
321 Mandatory for types: "firmware", and "kernel".
Simon Glass47e37332023-06-23 13:22:03 +0100322
323compatible
324 compatible method for loading image.
Alexandru Gagniuc5638c5f2020-12-15 13:15:43 -0600325 Mandatory for types: "fpga", and images that do not specify a load address.
Oleksandr Suvorov17773572022-07-22 17:16:13 +0300326 Supported compatible methods:
Simon Glass47e37332023-06-23 13:22:03 +0100327
Simon Glasse0b5ddf2023-06-23 13:22:10 +0100328 ========================== =========================================
329 Compatible string Meaning
330 ========================== =========================================
331 u-boot,fpga-legacy Generic fpga loading routine.
332 u-boot,zynqmp-fpga-ddrauth Signed non-encrypted FPGA bitstream for
333 Xilinx Zynq UltraScale+ (ZymqMP) device.
334 u-boot,zynqmp-fpga-enc Encrypted FPGA bitstream for Xilinx Zynq
335 UltraScale+ (ZynqMP) device.
336 ========================== =========================================
Simon Glass47e37332023-06-23 13:22:03 +0100337
338phase
339 U-Boot phase for which the image is intended.
340
341 "spl"
342 image is an SPL image
343
344 "u-boot"
345 image is a U-Boot image
346
347Optional nodes:
Marian Balakowicz18710b82008-03-12 12:13:13 +0100348
Simon Glass47e37332023-06-23 13:22:03 +0100349hash-1
350 Each hash sub-node represents separate hash or checksum
Marian Balakowicz18710b82008-03-12 12:13:13 +0100351 calculated for node's data according to specified algorithm.
352
353
Simon Glass47e37332023-06-23 13:22:03 +0100354Hash nodes
355----------
Marian Balakowicz18710b82008-03-12 12:13:13 +0100356
Simon Glassa37a8f22023-06-23 13:22:02 +0100357::
358
359 o hash-1
360 |- algo = "hash or checksum algorithm name"
361 |- value = [hash or checksum value]
Marian Balakowicz18710b82008-03-12 12:13:13 +0100362
Simon Glass47e37332023-06-23 13:22:03 +0100363Mandatory properties
364~~~~~~~~~~~~~~~~~~~~
365
366algo
Simon Glasse0b5ddf2023-06-23 13:22:10 +0100367 Algorithm name. Supported algoriths and their value sizes are:
368
369 ==================== ============ =========================================
370 Sub-image type Size (bytes) Meaning
371 ==================== ============ =========================================
372 crc16-ccitt 2 Cyclic Redundancy Check 16-bit
373 (Consultative Committee for International
374 Telegraphy and Telephony)
375 crc32 4 Cyclic Redundancy Check 32-bit
376 md5 16 Message Digest 5 (MD5)
377 sha1 20 Secure Hash Algorithm 1 (SHA1)
378 sha256 32 Secure Hash Algorithm 2 (SHA256)
379 sha384 48 Secure Hash Algorithm 2 (SHA384)
380 sha512 64 Secure Hash Algorithm 2 (SHA512)
381 ==================== ============ =========================================
Simon Glass47e37332023-06-23 13:22:03 +0100382
383value
Simon Glasse0b5ddf2023-06-23 13:22:10 +0100384 Actual checksum or hash value.
Marian Balakowicz18710b82008-03-12 12:13:13 +0100385
386
Simon Glass47e37332023-06-23 13:22:03 +0100387'/configurations' node
388----------------------
Marian Balakowicz18710b82008-03-12 12:13:13 +0100389
Alexandru Gagniuc5638c5f2020-12-15 13:15:43 -0600390The 'configurations' node creates convenient, labeled boot configurations,
391which combine together kernel images with their ramdisks and fdt blobs.
Marian Balakowicz18710b82008-03-12 12:13:13 +0100392
Simon Glassa37a8f22023-06-23 13:22:02 +0100393The 'configurations' node has the following structure::
Marian Balakowicz18710b82008-03-12 12:13:13 +0100394
Simon Glassa37a8f22023-06-23 13:22:02 +0100395 o configurations
396 |- default = "default configuration sub-node unit name"
397 |
398 o config-1 {...}
399 o config-2 {...}
400 ...
Marian Balakowicz18710b82008-03-12 12:13:13 +0100401
402
Simon Glass47e37332023-06-23 13:22:03 +0100403Optional property
404~~~~~~~~~~~~~~~~~
Marian Balakowicz18710b82008-03-12 12:13:13 +0100405
Simon Glass47e37332023-06-23 13:22:03 +0100406default
407 Selects one of the configuration sub-nodes as a default configuration.
Marian Balakowicz18710b82008-03-12 12:13:13 +0100408
Simon Glass47e37332023-06-23 13:22:03 +0100409Mandatory nodes
410~~~~~~~~~~~~~~~
Marian Balakowicz18710b82008-03-12 12:13:13 +0100411
Simon Glass47e37332023-06-23 13:22:03 +0100412configuration-sub-node-unit-name
413 At least one of the configuration sub-nodes is required.
414
415
416Configuration nodes
417-------------------
Marian Balakowicz18710b82008-03-12 12:13:13 +0100418
Simon Glassa37a8f22023-06-23 13:22:02 +0100419Each configuration has the following structure::
Marian Balakowicz18710b82008-03-12 12:13:13 +0100420
Simon Glassa37a8f22023-06-23 13:22:02 +0100421 o config-1
422 |- description = "configuration description"
423 |- kernel = "kernel sub-node unit name"
424 |- fdt = "fdt sub-node unit-name" [, "fdt overlay sub-node unit-name", ...]
425 |- loadables = "loadables sub-node unit-name"
426 |- script = "
427 |- compatible = "vendor,board-style device tree compatible string"
Marian Balakowicz18710b82008-03-12 12:13:13 +0100428
Simon Glass47e37332023-06-23 13:22:03 +0100429
430Mandatory properties
431~~~~~~~~~~~~~~~~~~~~
432
433description
434 Textual configuration description.
Marian Balakowicz18710b82008-03-12 12:13:13 +0100435
Simon Glass47e37332023-06-23 13:22:03 +0100436kernel or firmware
437 Unit name of the corresponding kernel or firmware
Alexandru Gagniuc5638c5f2020-12-15 13:15:43 -0600438 (u-boot, op-tee, etc) image. If both "kernel" and "firmware" are specified,
439 control is passed to the firmware image.
Marian Balakowicz18710b82008-03-12 12:13:13 +0100440
Simon Glass47e37332023-06-23 13:22:03 +0100441Optional properties
442~~~~~~~~~~~~~~~~~~~
443
444fdt
445 Unit name of the corresponding fdt blob (component image node of a
Pantelis Antonioub2256522017-09-04 23:12:17 +0300446 "fdt type"). Additional fdt overlay nodes can be supplied which signify
447 that the resulting device tree blob is generated by the first base fdt
448 blob with all subsequent overlays applied.
Simon Glass47e37332023-06-23 13:22:03 +0100449
450fpga
451 Unit name of the corresponding fpga bitstream blob
Michal Simek0a130b12016-05-17 13:58:44 +0200452 (component image node of a "fpga type").
Simon Glass47e37332023-06-23 13:22:03 +0100453
454loadables
455 Unit name containing a list of additional binaries to be
Karl Apsite8f0537d2015-05-21 09:52:47 -0400456 loaded at their given locations. "loadables" is a comma-separated list
Andrew F. Davis28b28f72016-11-29 16:33:20 -0600457 of strings. U-Boot will load each binary at its given start-address and
Thomas Hebbfd37f242019-11-13 18:18:03 -0800458 may optionally invoke additional post-processing steps on this binary based
Andrew F. Davis28b28f72016-11-29 16:33:20 -0600459 on its component image node type.
Simon Glass47e37332023-06-23 13:22:03 +0100460
461script
462 The image to use when loading a U-Boot script (for use with the
Sean Andersond3e7e202022-12-12 14:12:11 -0500463 source command).
Simon Glass47e37332023-06-23 13:22:03 +0100464
465compatible
466 The root compatible string of the U-Boot device tree that
Julius Werner4e823522019-07-24 19:37:56 -0700467 this configuration shall automatically match when CONFIG_FIT_BEST_MATCH is
468 enabled. If this property is not provided, the compatible string will be
469 extracted from the fdt blob instead. This is only possible if the fdt is
470 not compressed, so images with compressed fdts that want to use compatible
471 string matching must always provide this property.
Marian Balakowicz18710b82008-03-12 12:13:13 +0100472
473The FDT blob is required to properly boot FDT based kernel, so the minimal
474configuration for 2.6 FDT kernel is (kernel, fdt) pair.
475
476Older, 2.4 kernel and 2.6 non-FDT kernel do not use FDT blob, in such cases
477'struct bd_info' must be passed instead of FDT blob, thus fdt property *must
478not* be specified in a configuration node.
479
480
Simon Glass47e37332023-06-23 13:22:03 +0100481External data
482-------------
Simon Glassafd728c2016-02-22 22:55:53 -0700483
484The above format shows a 'data' property which holds the data for each image.
485It is also possible for this data to reside outside the FIT itself. This
486allows the FIT to be quite small, so that it can be loaded and scanned
487without loading a large amount of data. Then when an image is needed it can
488be loaded from an external source.
489
490In this case the 'data' property is omitted. Instead you can use:
491
Simon Glass47e37332023-06-23 13:22:03 +0100492data-offset
493 offset of the data in a separate image store. The image
Simon Glassafd728c2016-02-22 22:55:53 -0700494 store is placed immediately after the last byte of the device tree binary,
495 aligned to a 4-byte boundary.
Simon Glass47e37332023-06-23 13:22:03 +0100496
Simon Glassc44aa612023-06-23 13:22:04 +0100497data-size
498 size of the data in bytes
Simon Glassafd728c2016-02-22 22:55:53 -0700499
Teddy Reeda8457622016-06-09 19:38:02 -0700500The 'data-offset' property can be substituted with 'data-position', which
501defines an absolute position or address as the offset. This is helpful when
Peng Fan8876c7e2017-12-05 13:20:59 +0800502booting U-Boot proper before performing relocation. Pass '-p [offset]' to
503mkimage to enable 'data-position'.
Simon Glassafd728c2016-02-22 22:55:53 -0700504
York Sunadf99fa2017-08-15 11:14:44 -0700505Normal kernel FIT image has data embedded within FIT structure. U-Boot image
506for SPL boot has external data. Existence of 'data-offset' can be used to
507identify which format is used.
508
Kever Yang8e238b52020-03-30 11:56:24 +0800509For FIT image with external data, it would be better to align each blob of data
510to block(512 byte) for block device, so that we don't need to do the copy when
511read the image data in SPL. Pass '-B 0x200' to mkimage to align the FIT
512structure and data to 512 byte, other values available for other align size.
513
Simon Glass47e37332023-06-23 13:22:03 +0100514Examples
515--------
Marian Balakowicz18710b82008-03-12 12:13:13 +0100516
Simon Glassc44aa612023-06-23 13:22:04 +0100517Some example files are available here, showing various scenarios
518
519.. toctree::
520 :maxdepth: 1
521
522 kernel
523 kernel_fdt
524 kernel_fdts_compressed
525 kernel
526 multi
527 multi_spl
528 multi-with-fpga
529 multi-with-loadables
530 sec_firmware_ppa
531 sign-configs
532 sign-images
533 uefi
534 update3
535 update_uboot
Simon Glass47e37332023-06-23 13:22:03 +0100536
537.. sectionauthor:: Marian Balakowicz <m8@semihalf.com>
538.. sectionauthor:: External data additions, 25/1/16 Simon Glass <sjg@chromium.org>