AM623: FIT image boot

Part Number: AM623

Tool/software:

I am trying to boot from a fit image however the kernel doesn't appear to execute. Normal `booti` using the same kernel and dtb works so I know my kernel and dtb are good.  

Here is my fit source:

/dts-v1/;

/ {
  description = "script, kernel, initramfs and DTB for Phytec-AM62";
  #address-cells = <1>;

  images {
    default = "script-1";

    kernel-1 {
      description = "Linux kernel";
      data = /incbin/("Image");
      type = "kernel";
      arch = "arm64";
      os = "linux";
      compression = "none";
      load = <0x82000000>;
      entry = <0x82000000>;
      hash-1 {
        algo = "crc32";
      };
      hash-2 {
        algo = "sha1";
      };
    };

    ramdisk-1 {
      description = "Ramdisk";
      data = /incbin/("initramfs.xz");
      type = "ramdisk";
      arch = "arm64";
      os = "linux";
      load = <0x86000000>;
      //entry = <0x86000000>;
      hash-1 {
        algo = "crc32";
      };
      hash-2 {
        algo = "sha1";
      };
    };

    fdt-1 {
      description = "Device tree";
      data = /incbin/("oftree");
      type = "flat_dt";
      arch = "arm";
      compression = "none";
      load = <0x88000000>;
      hash-1 {
        algo = "crc32";
      };
      hash-2 {
        algo = "sha1";
      };
    };

    script-1 {
      description = "Boot script";
      data = /incbin/("boot.cmd");
      type = "script";
      load = <0x80000000>;
    };
  };

  configurations {
    default = "linux-1";
    bootscript-1 {
      description = "Boot script";
      script = "script-1";
    };

    linux-1 {
      description = "Kernel, ramdisk and DTB";
      kernel = "kernel-1";
      ramdisk = "ramdisk-1";
      fdt = "fdt-1";
      //compatible = "phytec,am625-phyboard-lyra-rdkphytec,am62-phycore-somti,am625";
    };
  };
};

// rebuild with mkimage -f "./kernel.its" "./fitImage"

Here is the u-boot output:

U-Boot SPL 2024.04 (Sep 26 2025 - 15:57:50 +0000)
SYSFW ABI: 4.0 (firmware rev 0x000a '10.1.8--v10.01.08 (Fiery Fox)')
SPL initial stack usage: 13408 bytes
Trying to boot from MMC2
Authentication passed
Authentication passed
Authentication passed
Authentication passed
Authentication passed
Starting ATF on ARM64 core...

NOTICE:  BL31: v2.12.6(release):lts-v2.12.6
NOTICE:  BL31: Built : 02:07:59, Sep 25 2025
I/TC:
I/TC: OP-TEE version: 4.7.0 (gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04)) #1 Thu Sep 25 02:38:41 UTC 2025 aarch64
I/TC: WARNING: This OP-TEE configuration might be insecure!
I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
I/TC: Primary CPU initializing
I/TC: GIC redistributor base address not provided
I/TC: Assuming default GIC group status and modifier
I/TC: SYSFW ABI: 4.0 (firmware rev 0x000a '10.1.8--v10.01.08 (Fiery Fox)')
I/TC: HUK Initialized
I/TC: Primary CPU switching to normal world boot

U-Boot SPL 2024.04 (Sep 26 2025 - 15:58:23 +0000)
SYSFW ABI: 4.0 (firmware rev 0x000a '10.1.8--v10.01.08 (Fiery Fox)')
SPL initial stack usage: 1856 bytes
Trying to boot from MMC2
Authentication passed
Authentication passed


U-Boot 2024.04 (Sep 26 2025 - 15:58:23 +0000)

SoC:   AM62X SR1.0 HS-FS
Model: PHYTEC phyBOARD-Lyra AM625
DRAM:  2 GiB
Core:  85 devices, 33 uclasses, devicetree: separate
MMC:   mmc@fa10000: 0, mmc@fa00000: 1
Loading Environment from MMC... *** Warning - bad CRC, using default environment

In:    serial@2800000
Out:   serial@2800000
Err:   serial@2800000
Net:   eth0: ethernet@8000000port@1
Hit any key to stop autoboot:  0
=> echo $rdaddr

=> run fitboot
23728523 bytes read in 1079 ms (21 MiB/s)
## Loading kernel from FIT Image at 90000000 ...
   Using 'linux-1' configuration
   Verifying Hash Integrity ... OK
   Trying 'kernel-1' kernel subimage
     Description:  Linux kernel
     Created:      2025-09-26  16:53:30 UTC
     Type:         Kernel Image
     Compression:  uncompressed
     Data Start:   0x90000108
     Data Size:    18323968 Bytes = 17.5 MiB
     Architecture: AArch64
     OS:           Linux
     Load Address: 0x82000000
     Entry Point:  0x82000000
     Hash algo:    crc32
     Hash value:   c9e3f3aa
     Hash algo:    sha1
     Hash value:   72d194eeaf0ef57934f1c2718a9abe757e617c59
   Verifying Hash Integrity ... crc32+ sha1+ OK
## Loading ramdisk from FIT Image at 90000000 ...
   Using 'linux-1' configuration
   Verifying Hash Integrity ... OK
   Trying 'ramdisk-1' ramdisk subimage
     Description:  Ramdisk
     Created:      2025-09-26  16:53:30 UTC
     Type:         RAMDisk Image
     Compression:  uncompressed
     Data Start:   0x91179c24
     Data Size:    5353608 Bytes = 5.1 MiB
     Architecture: AArch64
     OS:           Linux
     Load Address: 0x86000000
     Entry Point:  0x86000000
     Hash algo:    crc32
     Hash value:   b2edf475
     Hash algo:    sha1
     Hash value:   26d7bc13800bd8c2ee34056bbbffb78cb1773b9c
   Verifying Hash Integrity ... crc32+ sha1+ OK
   Loading ramdisk from 0x91179c24 to 0x86000000
## Loading fdt from FIT Image at 90000000 ...
   Using 'linux-1' configuration
   Verifying Hash Integrity ... OK
   Trying 'fdt-1' fdt subimage
     Description:  Device tree
     Created:      2025-09-26  16:53:30 UTC
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x91694db4
     Data Size:    44425 Bytes = 43.4 KiB
     Architecture: ARM
     Load Address: 0x88000000
     Hash algo:    crc32
     Hash value:   0897d9d9
     Hash algo:    sha1
     Hash value:   b0291f6c79f9eb8fe94ffa11a4f3d868d271fed8
   Verifying Hash Integrity ... crc32+ sha1+ OK
   Loading fdt from 0x91694db4 to 0x88000000
   Booting using the fdt blob at 0x88000000
Working FDT set to 88000000
   Loading Kernel Image to 82000000
   Loading Ramdisk to fc9b2000, end fcecd088 ... OK
   Loading Device Tree to 00000000fc9a4000, end 00000000fc9b1d88 ... OK
Working FDT set to fc9a4000

Starting kernel ...

Edit: I realized the issue could be with my bootargs; here are my bootargs.  They work correctly when booting using `booti` or `bootm`

=> setenv bootargs "console=${console} earlycon=${earlycon} root=LABEL=rootfs ro rootwait panic=${panic} loglevel=${loglevel} ${fsck_args} ${recovery_args} ${optargs}"
=> echo $bootargs
console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=LABEL=rootfs ro rootwait panic=60 loglevel=4 fsck.mode=auto fsck.repair=yes

  • Hi Thomas,

    Let me check and update you

    Regards,

    Dilna K

  • I do want to get an initramfs working however this question is just about a FIT image.  If I define my FIT image without the initramfs, I still get the same behavior:

        linux-1 {
          description = "Kernel and DTB, no ramdisk";
          kernel = "kernel-1";
          // ramdisk = "ramdisk-1";
          fdt = "fdt-1";
          //compatible = "phytec,am625-phyboard-lyra-rdkphytec,am62-phycore-somti,am625";
        };

    u-boot output when I attempt to run from FIT without an initramfs:

    In:    serial@2800000
    Out:   serial@2800000
    Err:   serial@2800000
    Net:   eth0: ethernet@8000000port@1
    Hit any key to stop autoboot:  0 
    => 
    => echo $fitboot
    load mmc ${mmcdev}:${mmcpart} ${addr_fit} fitImage; bootm ${addr_fit};
    => run fitboot
    23728491 bytes read in 1069 ms (21.2 MiB/s)
    ## Loading kernel from FIT Image at 90000000 ...
       Using 'linux-1' configuration
       Verifying Hash Integrity ... OK
       Trying 'kernel-1' kernel subimage
         Description:  Linux kernel
         Created:      2025-09-26  17:43:50 UTC
         Type:         Kernel Image
         Compression:  uncompressed
         Data Start:   0x90000108
         Data Size:    18323968 Bytes = 17.5 MiB
         Architecture: AArch64
         OS:           Linux
         Load Address: 0x82000000
         Entry Point:  0x82000000
         Hash algo:    crc32
         Hash value:   c9e3f3aa
         Hash algo:    sha1
         Hash value:   72d194eeaf0ef57934f1c2718a9abe757e617c59
       Verifying Hash Integrity ... crc32+ sha1+ OK
    ## Loading fdt from FIT Image at 90000000 ...
       Using 'linux-1' configuration
       Verifying Hash Integrity ... OK
       Trying 'fdt-1' fdt subimage
         Description:  Device tree
         Created:      2025-09-26  17:43:50 UTC
         Type:         Flat Device Tree
         Compression:  uncompressed
         Data Start:   0x91694db4
         Data Size:    44425 Bytes = 43.4 KiB
         Architecture: ARM
         Load Address: 0x88000000
         Hash algo:    crc32
         Hash value:   0897d9d9
         Hash algo:    sha1
         Hash value:   b0291f6c79f9eb8fe94ffa11a4f3d868d271fed8
       Verifying Hash Integrity ... crc32+ sha1+ OK
       Loading fdt from 0x91694db4 to 0x88000000
       Booting using the fdt blob at 0x88000000
    Working FDT set to 88000000
       Loading Kernel Image to 82000000
       Loading Device Tree to 00000000fcec0000, end 00000000fcecdd88 ... OK
    Working FDT set to fcec0000
    
    Starting kernel ...

    The kernel does not appear to start.