U-Boot FIT Image Strange Behaviour

171 views Asked by At

I have a U-Boot FIT image built using Yocto (specifically via the meta-updater layer). As is, the image will not boot, it hangs on Starting kernel .... If however I copy either the kernel or the device tree to an alternate memory location (using cp) and boot manually using bootz (instead of bootm on the FIT), then the kernel runs. If I change the .its file so that the device tree is stored before the kernel then it also runs. What would be the reason for this?

Original .its (doesn't run, unless I copy either kernel or device tree to an alternate location first and then execute manually using bootz):

/dts-v1/;

/ {
        description = "Kernel fitImage for FSLC FrameBuffer/5.10.9+gitAUTOINC+32513c25d8/exappscreen";
        #address-cells = <1>;

        images {
                kernel-1 {
                        description = "Linux kernel";
                        data = /incbin/("linux.bin");
                        type = "kernel";
                        arch = "arm";
                        os = "linux";
                        compression = "none";
                        load = <0x80008000>;
                        entry = <0x80008000>;
                        hash-1 {
                                algo = "sha256";
                        };
                };
                fdt-exappscreen.dtb {
                        description = "Flattened Device Tree blob";
                        data = /incbin/("arch/arm/boot/dts/exappscreen.dtb");
                        type = "flat_dt";
                        arch = "arm";
                        compression = "none";
                        
                        hash-1 {
                                algo = "sha256";
                        };
                };
                ramdisk-1 {
                        description = "initramfs-ostree-image";
                        data = /incbin/("/home/dane/yocto/fsl-community-bsp/exappscreen/tmp/deploy/images/exappscreen/initramfs-ostree-image-exappscreen.cpio.gz");
                        type = "ramdisk";
                        arch = "arm";
                        os = "linux";
                        compression = "none";
                        
                        
                        hash-1 {
                                algo = "sha256";
                        };
                };
    };

        configurations {
                default = "conf-exappscreen.dtb";
                conf-exappscreen.dtb {
                        description = "1 Linux kernel, FDT blob, ramdisk";
                        kernel = "kernel-1";
                        fdt = "fdt-exappscreen.dtb";
                        ramdisk = "ramdisk-1";
                        
                        
                        hash-1 {
                                algo = "sha256";
                        };
                };
    };
};

iminfo (original .its FIT):

## Checking Image at 82000000 ...
   FIT image found
   FIT description: Kernel fitImage for FSLC FrameBuffer/5.10.9+gitAUTOINC+32513c25d8/exappscreen
   Created:         2021-03-09   2:17:18 UTC
    Image 0 (kernel-1)
     Description:  Linux kernel
     Created:      2021-03-09   2:17:18 UTC
     Type:         Kernel Image
     Compression:  uncompressed
     Data Start:   0x82000100
     Data Size:    7806336 Bytes = 7.4 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: 0x80008000
     Entry Point:  0x80008000
     Hash algo:    sha256
     Hash value:   cf08dd91b86a8478417c12398866832358463797dc6990be5ae33a48c4fae5d5
    Image 1 (fdt-exappscreen.dtb)
     Description:  Flattened Device Tree blob
     Created:      2021-03-09   2:17:18 UTC
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x82771f8c
     Data Size:    32086 Bytes = 31.3 KiB
     Architecture: ARM
     Hash algo:    sha256
     Hash value:   8f08ffc245d6dd1a70a4c6a85bac46b2007af3594237179f3cdc89c0892522a1
    Image 2 (ramdisk-1)
     Description:  initramfs-ostree-image
     Created:      2021-03-09   2:17:18 UTC
     Type:         RAMDisk Image
     Compression:  uncompressed
     Data Start:   0x82779db0
     Data Size:    1864194 Bytes = 1.8 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: unavailable
     Entry Point:  unavailable
     Hash algo:    sha256
     Hash value:   fb57b408c01ed997e07be816393940ae618b8b20d37b85ac1b47e4a5215bb783
    Default Configuration: 'conf-exappscreen.dtb'
    Configuration 0 (conf-exappscreen.dtb)
     Description:  1 Linux kernel, FDT blob, ramdisk
     Kernel:       kernel-1
     Init Ramdisk: ramdisk-1
     FDT:          fdt-exappscreen.dtb
     Hash algo:    sha256
     Hash value:   unavailable
## Checking hash(es) for FIT Image at 82000000 ...
   Hash(es) for Image 0 (kernel-1): sha256+
   Hash(es) for Image 1 (fdt-exappscreen.dtb): sha256+
   Hash(es) for Image 2 (ramdisk-1): sha256+

Modified .its (runs fine):

/dts-v1/;

/ {
        description = "Kernel fitImage for FSLC FrameBuffer/5.10.9+gitAUTOINC+32513c25d8/exappscreen";
        #address-cells = <1>;

        images {
                fdt-exappscreen.dtb {
                        description = "Flattened Device Tree blob";
                        data = /incbin/("./exappscreen--5.10.9+git0+32513c25d8-r0-exappscreen-20231120190329.dtb");
                        type = "flat_dt";
                        arch = "arm";
                        compression = "none";
                        
                        hash-1 {
                                algo = "sha256";
                        };
                };
                kernel-1 {
                        description = "Linux kernel";
                        data = /incbin/("./zImage--5.10.9+git0+32513c25d8-r0-exappscreen-20231120190329.bin");
                        type = "kernel";
                        arch = "arm";
                        os = "linux";
                        compression = "none";
                        load = <0x80008000>;
                        entry = <0x80008000>;
                        hash-1 {
                                algo = "sha256";
                        };
                };
                ramdisk-1 {
                        description = "initramfs-ostree-image";
                        data = /incbin/("./initramfs-ostree-image-exappscreen-20231129181607.cpio.gz");
                        type = "ramdisk";
                        arch = "arm";
                        os = "linux";
                        compression = "gzip";
                        
                        
                        hash-1 {
                                algo = "sha256";
                        };
                };
    };

        configurations {
                default = "conf-exappscreen.dtb";
                conf-exappscreen.dtb {
                        description = "1 Linux kernel, FDT blob, ramdisk";
                        kernel = "kernel-1";
                        fdt = "fdt-exappscreen.dtb";
                        ramdisk = "ramdisk-1";
                        
                        
                        hash-1 {
                                algo = "sha256";
                        };
                };
    };
};

iminfo (modified .its FIT):

## Checking Image at 82000000 ...
   FIT image found
   FIT description: Kernel fitImage for FSLC FrameBuffer/5.10.9+gitAUTOINC+32513c25d8/exappscreen
   Created:         2023-12-01  13:27:09 UTC
    Image 0 (fdt-exappscreen.dtb)
     Description:  Flattened Device Tree blob
     Created:      2023-12-01  13:27:09 UTC
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x82000114
     Data Size:    32086 Bytes = 31.3 KiB
     Architecture: ARM
     Hash algo:    sha256
     Hash value:   8f08ffc245d6dd1a70a4c6a85bac46b2007af3594237179f3cdc89c0892522a1
    Image 1 (kernel-1)
     Description:  Linux kernel
     Created:      2023-12-01  13:27:09 UTC
     Type:         Kernel Image
     Compression:  uncompressed
     Data Start:   0x82007f30
     Data Size:    7806336 Bytes = 7.4 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: 0x80008000
     Entry Point:  0x80008000
     Hash algo:    sha256
     Hash value:   cf08dd91b86a8478417c12398866832358463797dc6990be5ae33a48c4fae5d5
    Image 2 (ramdisk-1)
     Description:  initramfs-ostree-image
     Created:      2023-12-01  13:27:09 UTC
     Type:         RAMDisk Image
     Compression:  gzip compressed
     Data Start:   0x82779db0
     Data Size:    1864194 Bytes = 1.8 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: unavailable
     Entry Point:  unavailable
     Hash algo:    sha256
     Hash value:   fb57b408c01ed997e07be816393940ae618b8b20d37b85ac1b47e4a5215bb783
    Default Configuration: 'conf-exappscreen.dtb'
    Configuration 0 (conf-exappscreen.dtb)
     Description:  1 Linux kernel, FDT blob, ramdisk
     Kernel:       kernel-1
     Init Ramdisk: ramdisk-1
     FDT:          fdt-exappscreen.dtb
     Hash algo:    sha256
     Hash value:   unavailable
0

There are 0 answers