[PATCH] doc: FIT image: Clarify format and simplify syntax
Tom Rini
trini at konsulko.com
Sat Jan 23 18:46:18 CET 2021
On Tue, Dec 15, 2020 at 01:15:43PM -0600, Alexandru Gagniuc wrote:
> ** Introduction
>
> There are currently four ways to load an OS image with u-boot
> 1. SPL -> u-boot -> bootm
> 2. SPL blue falcon mode
> 3. "Basic" FIT image (CONFIG_LOAD_FIT)
> 4. "Full-featured" FIT image (CONFIG_LOAD_FIT_FULL)
>
> These four code paths were developed independently, and share very
> little code. (3) and (4), behave very differently, are littered with
> special cases. They even have different DTS syntax and properties.
>
> The cause of this divergence is that the FIT format specification
> leaves a number of things open to interpretation. The purpose of this
> change is to enable the reduction of code size, duplication, and
> complexity by updating and streamlining the FIT format.
>
> We are only marginally concerned with backwards compatibility, because
> we don't have inter-compatibility. For example, CONFIG_LOAD_FIT is
> able to load images that CONFIG_LOAD_FIT_FULL won't. This is a direct
> result of the incompatible syntax between the two implementations.
>
> Ideally, these changes would enable "simple" FIT to be a subset of the
> "full" fit implementation, and share most code. These changes should
> also eliminate the need for falcon mode (although we are not
> advocating for the removal of falcon mode at this time).
>
> ** Description of changes
>
> * The "configurations" node is now mandatory
>
> Guessing how to load components based on their "os" and "type" invites
> confusion and superfluous heuristics. Instead, require each FIT image
> to be explicit on how components should be loaded.
>
> * Eliminate "ramdisk", "setup", "standalone", and "fpga" properties
>
> Having too many special purpose properties requires special-casing
> FIT loading code. When a special property can be handled by another
> property, it is redundant.
> - A "ramdisk" is identical to a loadable. Thus ramdisk images should
> be placed under "loadables".
> - A "setup" node can be achieved by using a "kernel" or "firmware"
> property instead.
> - "standalone" is used for u-boot nodes. The correct property to use
> in this case is "firmware".
> - "fpga" is a loadable
>
> * Prioritize control between "firmware" and "kernel"
>
> "firmware" and "kernel" are special nodes in that control is passed
> to the "entry-point" of the image. Both can be present, for example,
> an OP-TEE firmware with a linux kernel. When both are present,
> control is passed to the "firmware" image.
>
> ** Further generalizations (not included herein)
>
> The "firmware" and "kernel" properties could be generalized as a
> "next-boot-stage", or similar name. This "next" stage would be special
> in that it is both executable, and is the stage that is passed
> control. For example, "next-stage" could be an op-tee image, with
> linux as a loadable, or a u-boot image.
>
> Signed-off-by: Alexandru Gagniuc <mr.nuke.me at gmail.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20210123/967adb13/attachment.sig>
More information about the U-Boot
mailing list