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