[U-Boot] Booting kernel/dtb with FIT image

Nicolas le bayon nlebayon at gmail.com
Fri Jan 13 18:13:51 CET 2017


Hi,

Here is a problem I presently meet, any help or track to follow would be
welcome.

My U-boot (2016.09) loads a kernel and a dtb, and "bootm" all this. This is
my reference, and this is correctly running.

>From this, I'm trying to implement FIT image management, so I enabled
CONFIG_FIT.

On the other side, I constructed the ITS FILE from my kernel and my dtb, as
described below:

*/dts-v1/;*
*/ {*
*    description = "Simple image with single Linux kernel and FDT blob";*
*    #address-cells = <0x1>;*
*    images {*
*        kernel at 1 {*
*            description = "My Linux kernel";*
*            data = /incbin/("./uImage");*
*            type = "kernel";*
*            arch = "arm";*
*            os = "linux";*
*            compression = "none";*
*            load = <0x40008000>;*
*            entry = <0x40008000>;*
*            hash at 1 {*
*                algo = "md5";*
*            };*
*            hash at 2 {*
*                algo = "sha1";*
*            };*
*        };*
*        fdt at 1 {*
*            description = "My Flattened Device Tree blob";*
*            data = /incbin/("./mydtb.dtb");*
*            type = "flat_dt";*
*            arch = "arm";*
*            compression = "none";*
*            hash at 1 {*
*                algo = "md5";*
*            };*
*            hash at 2 {*
*                algo = "sha1";*
*            };*
*        };*
*    };*
*/* a notable concept of FIT, configurations */*
*    configurations {*
*        default = "conf at 1";*
*        conf at 1 {*
*            description = "Boot Linux kernel with FDT blob";*
*            kernel = "kernel at 1";*
*            fdt = "fdt at 1";*
*        };*
*    };*
*};*

I managed to construct the ITB (using the mkimage of my u-boot, in tools
directory) and to store it on my target.

I load this ITB at 0x60000000 address of memory.

The "bootm 0x60000000" gives the following error: "Ramdisk image is corrupt
or invalid". Indeed I have no ramdisk. Not what was described in tutorials.

The "bootm 0x60000000 - " gives a better result:
*## Loading kernel from FIT Image at 60000000 ...*
*   Using 'conf at 1' configuration*
*   Trying 'kernel at 1' kernel subimage*
*     Description:  My Linux kernel*
*     Type:         Kernel Image*
*     Compression:  uncompressed*
*     Data Start:   0x600000e4*
*     Data Size:    5568600 Bytes = 5.3 MiB (Note: same size as the
original file!)*
*     Architecture: ARM*
*     OS:           Linux*
*     Load Address: 0x40008000*
*     Entry Point:  0x40008000*
*     Hash algo:    md5*
*     Hash value:   0cccb060e1c4f50e98d8f6c8ed61242e*
*     Hash algo:    sha1*
*     Hash value:   f0442dd1b8c4f006b25533c3148df2742fc8a7ad*
*   Verifying Hash Integrity ... md5+ sha1+ OK*
*## Loading fdt from FIT Image at 60000000 ...*
*   Using 'conf at 1' configuration*
*   Trying 'fdt at 1' fdt subimage*
*     Description:  My Flattened Device Tree blob*
*     Type:         Flat Device Tree*
*     Compression:  uncompressed*
*     Data Start:   0x6054fa70*
*     Data Size:    55154 Bytes = 53.9 KiB **(Note: same size as the
original file!)*
*     Architecture: ARM*
*     Hash algo:    md5*
*     Hash value:   a201db29486c7c70b707e085d0196fda*
*     Hash algo:    sha1*
*     Hash value:   adb751ba04c1aed120a329bb4812a9c8f0bb68a7*
*   Verifying Hash Integrity ... md5+ sha1+ OK*
*   Booting using the fdt blob at 0x6054fa70*
*   Loading Kernel Image ... OK*
*   Using Device Tree in place at 6054fa70, end 605601e1*

*Starting kernel ...*

And unfortunately nothing else after.

I have the feeling to be in the same conditions, but I do not have the same
result.

If you have any idea of what could be wrong, please let me know, it would
be welcomed.
Maybe some corrections have been pushed in this domain since v2016.09?
Thanks in advance.

Best Regards
Nicolas


More information about the U-Boot mailing list