U-boot new uImage source file format (bindings definition)
==========================================================

Author: Marian Balakowicz <m8@semihalf.com>

1) Introduction
---------------

Evolution of the 2.6 Linux kernel for embedded PowerPC systems introduced new
booting method which requires that hardware description is available to the
kernel in the form of Flattened Device Tree.

Booting with a Flattened Device Tree is much more flexible and is intended to
replace direct passing of 'struct bd_info' which was used to boot pre-FDT
kernels.

However, U-boot needs to support both techniques to provide backward
compatibility for platforms which are not FDT ready. Number of elements
playing role in the booting process has increased and now includes the FDT
blob. Kernel image, FDT blob and possibly ramdisk image - all must be placed
in the system memory and passed to bootm as a arguments. Some of them may be
missing: FDT is not present for legacy platforms, ramdisk is always optional.
Additionally, old uImage format has been extended to support multi sub-images
but the support is limited by simple format of the legacy uImage structure.
Single binary header 'struct image_header' is not flexible enough to cover all
possible scenarios.

All those factors combined clearly show that there is a need for new, more
flexible, multi component uImage format.


2) New uImage format assumptions
--------------------------------

a) Implementation

Libfdt has been selected for the new uImage format implementation as (1) it
provides needed functionality, (2) is actively maintained and developed and
(3) increases code reuse as it is already part of the U-boot source tree.

b) Terminology

This document defines new uImage structure by providing FDT bindings for new
uImage internals. Bindings are defined from U-boot perspective, i.e. describe
final form of the uImage at the moment when it reaches U-boot. User
perspective may be simpler, as some of the properties (like timestamps and
hashes) will need to be filled in automatically by the U-boot mkimage tool.

To avoid confusion with the kernel FDT the following naming convention is
proposed for the new uImage format related terms:

FIT	- Flattened uImage Tree

FIT is formally a flattened device tree (in the libfdt meaning), which
conforms to bindings defined in this document.

.its	- image tree source
.itb	- image tree blob

c) Image building procedure

The following picture shows how the new uImage is prepared. Input consists of
image source file (.its) and a set of data files. Image is created with the
help of standard U-boot mkimage tool which in turn uses dtc (device tree
compiler) to produce image tree blob (.itb).  Resulting .itb file is is the
actual binary of a new uImage.


tqm5200.its
+
vmlinux.bin.gz	   mkimage + dtc	       xfer to target
eldk-4.2-ramdisk  --------------> tqm5200.itb --------------> bootm
tqm5200.dtb			     /|\
...				      |
				 'new uImage'

	- create .its file, automatically filled-in properties are omitted
	- call mkimage tool on a .its file
	- mkimage calls dtc to create .itb image and assures that
	  missing properties are added
	- .itb (new uImage) is uploaded onto the target and used therein


d) Unique identifiers

To identify FIT sub-nodes representing images, hashes, configurations (which
are defined in the following sections), the "unit name" of the given sub-node
is used as it's identifier as it assures uniqueness without additional
checking required.


3) Root node properties
-----------------------

Root node of the uImage Tree should have the following layout:

/ o image-tree
    |- description = "image description"
    |- timestamp = <12399321>
    |- #address-cells = <1>
    |
    o images
    | |
    | o img@1 {...}
    | o img@2 {...}
    | ...
    |
    o configurations
      |- default = "cfg@1"
      |
      o cfg@1 {...}
      o cfg@2 {...}
      ...


  Optional property:
  - description : Textual description of the uImage

  Mandatory property:
  - timestamp : Last image modification time being counted in seconds since
    1970-01-01 00:00:00 - to be automatically calculated by mkimage tool.

  Conditionally mandatory property:
  - #address-cells : Number of 32bit cells required to represent entry and
    load addresses supplied within sub-image nodes. May be omitted when no
    entry or load addresses are used.

  Mandatory node:
  - images : This node contains a set of sub-nodes, each of them representing
    single component sub-image (like kernel, ramdisk, etc.). At least one
    sub-image is required.

  Optional node:
  - configurations : Contains a set of available configuration nodes and
    defines a default configuration.


4) '/images' node
-----------------

This node is a container node for component sub-image nodes. Each sub-node of
the '/images' node should have the following layout:

 o image@1
   |- description = "component sub-image description"
   |- data = /incbin/("path/to/data/file.bin")
   |- type = "sub-image type name"
   |- arch = "ARCH name"
   |- os = "OS name"
   |- compression = "compression name"
   |- load = <00000000>
   |- entry = <00000000>
   |
   o hash@1 {...}
   o hash@2 {...}
   ...

  Mandatory properties:
  - description : Textual description of the component sub-image
  - type : Name of component sub-image type, supported types are:
    "standalone", "kernel", "ramdisk", "firmware", "script", "filesystem",
    "fdt".
  - data : Path to the external file which contains this node's binary data.
  - compression : Compression used by included data. Supported compressions
    are "gzip" and "bzip2". If no compression is used compression property
    should be set to "none".

  Conditionally mandatory property:
  - os : OS name, mandatory for type="kernel", valid OS names are: "openbsd",
    "netbsd", "freebsd", "4_4bsd", "linux", "svr4", "esix", "solaris", "irix",
    "sco", "dell", "ncr", "lynxos", "vxworks", "psos", "qnx", "u_boot",
    "rtems", "unity", "integrity".
  - arch : Architecture name, mandatory for types: "standalone", "kernel",
    "firmware", "ramdisk" and "fdt". Valid architecture names are: "alpha",
    "arm", "i386", "ia64", "mips", "mips64", "ppc", "s390", "sh", "sparc",
    "sparc64", "m68k", "microblaze", "nios2", "blackfin", "avr32", "st200".
  - entry : entry point address, address size is determined by
    '#address-cells' property of the root node. Mandatory for for types:
    "standalone" and "kernel".
  - load : load address, address size is determined by '#address-cells'
    property of the root node. Mandatory for types: "standalone" and "kernel".

  Optional nodes:
  - hash@1 : Each hash sub-node represents separate hash or checksum
    calculated for node's data according to specified algorithm.


5) Hash nodes
-------------

o hash@1
  |- algo = "hash or checksum algorithm name"
  |- value = [hash or checksum value]

  Mandatory properties:
  - algo : Algorithm name, supported are "crc32", "md5" and "sha1".
  - value : Actual checksum or hash value, correspondingly 4, 16 or 20 bytes
    long.


6) '/configurations' node
-------------------------

The 'configurations' node is optional. If present, it allows to create a
convenient, labeled boot configurations, which combine together kernel images
with their ramdisks and fdt blobs.

The 'configurations' node has has the following structure:

o configurations
  |- default = "default configuration sub-node unit name"
  |
  o config@1 {...}
  o config@2 {...}
  ...


  Optional property:
  - default : Selects one of the configuration sub-nodes as a default
    configuration.

  Mandatory nodes:
  - configuration-sub-node-unit-name : At least one of the configuration
    sub-nodes is required.


7) Configuration nodes
----------------------

Each configuration has the following structure:

o config@1
  |- description = "configuration description"
  |- kernel = "kernel sub-node unit name"
  |- ramdisk = "ramdisk sub-node unit name"
  |- fdt = "fdt sub-node unit-name"


  Mandatory properties:
  - description : Textual configuration description.
  - kernel : Unit name of the corresponding kernel image (image sub-node of a
    "kernel" type).

  Optional properties:
  - ramdisk : Unit name of the corresponding ramdisk image (component image
    node of a "ramdisk" type).
  - fdt : Unit name of the corresponding fdt blob (component image node of a
    "fdt type").

The FDT blob is required to properly boot FDT based kernel, so the minimal
configuration for 2.6 FDT kernel is (kernel, fdt) pair.

Older, 2.4 kernel and 2.6 non-FDT kernel do not use FDT blob, in such cases
'struct bd_info' must be passed instead of FDT blob, thus fdt property *must
not* be specified in a configuration node.


8) Examples
-----------

Please see doc/uImage.FIT/*.its for actual image source files.
