[U-Boot] [RFC PATCH 00/11] extend FIT loading support (plus Pine64/ATF support)

Simon Glass sjg at chromium.org
Mon Feb 6 15:33:09 UTC 2017


Hi Andre,

On 27 January 2017 at 17:47, André Przywara <andre.przywara at arm.com> wrote:
> On 27/01/17 21:29, Simon Glass wrote:
>
> Hi Simon,
>
>> On 19 January 2017 at 18:53, Andre Przywara <andre.przywara at arm.com> wrote:
>>> Currently the FIT format is not used to its full potential in the SPL:
>>> It only loads the first image from the /images node and appends the
>>> proper FDT.
>>> Some boards and platforms would benefit from loading more images before
>>> starting U-Boot proper, notably Allwinner A64 and ARMv8 Rockchip boards,
>>> which use an ARM Trusted Firmware (ATF) image to be executed before U-Boot.
>>>
>>> This series tries to solve this in a board agnostic and generic way:
>>> We extend the SPL FIT loading scheme to allow loading multiple images.
>>> So apart from loading the image which is referenced by the "firmware"
>>> property in the respective configuration node and placing the DTB right
>>> behind it, we iterate over all strings in the "loadable" property.
>>> Each image referenced there will be loaded to its specified load address.
>>> The entry point U-Boot eventually branches to will be taken from the
>>> first image to explicitly provide the "entry" property, or, if none
>>> of them does so, from the load address of the "firmware" image.
>>> This keeps the scheme compatible with the FIT images our Makefile creates
>>> automatically at the moment.
>>>
>>> Apart from the already mentioned ATF scenario this opens up more usage
>>> scenarios, of which the commit message of patch 04/11 lists some.
>>>
>>> The first three patches rework the SPL FIT support to be more flexible
>>> and to allow easier usage in the fourth patch, which introduces the
>>> multiple-image loading facility.
>>> The remaining patches enable that support for the Pine64 board to make
>>> its SPL support finally useful and to demonstrate usage of this scheme:
>>> patches 5-7 extend the usable SPL size by about 4 KB to allow AArch64
>>> compilation of the SPL with FIT support enabled. Patch 8 implements the
>>> board selector routine, which selects either the Pine64 or Pine64+ DTB
>>> depending on the detected DRAM size. Patch 9 enables SPL FIT support in
>>> the Pine64 defconfig.
>>> To demonstrate the usage, patch 10 provides a FIT source file, which
>>> loads and executes ATF before the U-Boot proper. Users are expected to
>>> compile this with "mkimage -f boards/sunxi/pine64_atf.its -E pine64.itb",
>>> then write the resulting file behind the SPL on an SD card (or any other
>>> U-Boot supported boot media, for that matter).
>>> Patch 11 then adds FIT support to the sunxi SPL SPI loading routine,
>>> which allows to load ATF on boards with SPI flash as well.
>>>
>>> Questions:
>>> 1) Is this scheme the right one (usage of "firmware" and "loadables",
>>>    determination of entry point)? Shall we make use of the "setup"
>>>    property?
>>
>> Seems reasonable to me.
>>
>>> 2) Shall we extend mkimage to allow supplying "loadable" files on the
>>>    command line, which would allow to build the .itb file automatically?
>>
>> Yes.
>
> I was thinking about this a bit more, as Andrew pointed out before it
> may become hairy to add tons of options to mkimage.
> I came up with a simple shell script, mostly using here documents
> (cat << _EOF) to generate the .its file on the fly, adding all DTs given
> on the command line. It's pretty easy, yet readable and adaptable. So
> each platform could provide one, if needed, and could hard code things
> like ATF in here.

That sounds reasonable. But I do think it is valuable to support the
basic case without needing a script, so long as you can do it with
only a few mkimage options?

[..]

Regards,
Simon


More information about the U-Boot mailing list