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