Warm greetings to the community,

Need some serious help regarding booting FIT images on RPi4.
I am working with a custom kernel and rootfs image for RPi4.
Have cloned this repo - git clone https://gitlab.denx.de/u-boot/u-boot.git
And generated u-boot.bin with the rpi_4_defconfig, and copied it onto my SDCard.
My sdcard's config.txt is pointing to u-boot.bin as kernel=u-boot.bin

Now all this works fine as
RPi Bootloader => u-boot.bin => Image (Custom Linux) => Mounts FS and stuff

Basically now I want to use signs and hashes here. Hence, changing from legacy 
Image to FIT Image using mkimage as :
mkimage -f ritman.its -K bcm2711-rpi-4-b-pubkey.dtb -k keys -r image.fit

I am stuck at some error while booting up this image.fit
---------------------------------------------------------------------------------------------------------------------------------
My its file looks like -
/dts-v1/;
/ {
    description = "RPi FIT Image";
    #address-cells = <2>;
    images {
        kernel-1 {
            description = "default kernel";
            data = /incbin/("Image");
            type = "kernel";
            arch = "arm64";
            os = "linux";
            compression = "none";
            load =  <0x00080000>;
            entry = <0x00080000>;
            hash@1 {
                algo = "sha1";
            };
        };
        fdt-1 {
            description = "device tree";
            data = /incbin/("bcm2711-rpi-4-b.dtb");
            type = "flat_dt";
            arch = "arm64";
            compression = "none";
            hash@1 {
                algo = "sha1";
            };
        };
    };
    configurations {
        default = "config-1";
        config-1 {
            description = "default configuration";
            kernel = "kernel-1";
            fdt = "fdt-1";
            signature-1 {
                algo = "sha1,rsa2048";
                key-name-hint = "dev";
                sign-images = "fdt", "kernel";
            };
        };
    };
};
---------------------------------------------------------------------------------------------------------------------------------

Now, copied the image.fit onto SDCard boot dir.  and passed the following 
commands as boot.scr.uimg :

setenv bootargs console=tty0 console=ttyAMA0 root=/dev/mmcblk0p2 
rootfstype=ext4 rootwait
fatload mmc 0:1  0x1F000000 image.fit
bootm 0x1F000000
---------------------------------------------------------------------------------------------------------------------------------
On boot-up U - Boot throws error as:
0 is current device
Running mmc 0:1...
U-Boot script /boot.scr.uimg
Bytes read in 7 ms (24.4 KiB/s)
Executing script at 02400000
Wrong image format for "source" command
SCRIPT FAILED: continuing...
fdt_check_header(): FDT_ERR_BADMAGIC
running disk [email protected]<mailto:[email protected]>...
did not respond to voltage select!: -110
running disk [email protected]<mailto:[email protected]> ...
[email protected]<mailto:[email protected]> not ready
3 disks
EFI system partition
BootOrder not defined
Boot manager : Cannot load any image
did not respond to voltage select!: -110
Starting USB ...
Networking controllers found
Please issue 'usb start' first
Waiting for PHY auto negotiation to complete...
---------------------------------------------------------------------------------------------------------------------------------

Sorry for not attaching the console output here, basically don't have access to 
the board via console at this moment.
Basically, the boot gets stuck at the PHY auto negotiation and after a few 
moments, U-Boot shell comes up. As far as I understand I am being dropped into 
the shell only because boot.scr couldn't get the kernel from the FIT image.

Any inputs on how to mitigate this issue and boot up the FIT correctly is 
highly required and appreciated. Really am not sure what am I getting wrong 
here. Any help would be great. Thanks in advance.

Regards,
Ritwik Mandal

Reply via email to