uImage / fitImage support


I’ve been trying without success to boot uImage / fitImage linux kernel format.

I am using the bootchain / firmware from lx2160a_build script flashed on a SD Card.

During the boot, I manually interrupt the autoboot, load my image (or image + dtb for uImage format), and try booting it, but the kernel keeps crashing almost instantly. Way before earlycon starts logging.
I get a crash dump (see below) that isn’t telling me a lot ( u-boot docs about crash dumps ). The Code section is full of zeros. I can’t extract informations from this.

I have tried fiddling with the “Load Address” and “Entry Point” for the creation of the fitImage / uImage : no success.
I have tried compressed and uncompressed images : no success.

The same kernel in zImage format (with the same dtb) boot perfectly.
Bootargs are the same in both cases : console=ttyAMA0,115200 earlycon=pl011,mmio32,0x21c0000

My questions is :
Am i missing something obvious here about u-boot ?
I feel like fitImage i supported because we have a ‘bootm’ command, but is it the case ?

The crash dump :

=> bootm
## Loading kernel from FIT Image at b0000000 ...
   Using 'conf@1' configuration
   Trying 'kernel@1' kernel subimage
     Description:  ELinOS Linux kernel
     Created:      2106-02-07   6:28:15 UTC
     Type:         Kernel Image
     Compression:  uncompressed
     Data Start:   0xb00000d0
     Data Size:    6801416 Bytes = 6.5 MiB
     Architecture: AArch64
     OS:           Linux
     Load Address: 0x80080000
     Entry Point:  0x80080000
     Hash algo:    crc32
     Hash value:   6fde69f2
     Hash algo:    sha1
     Hash value:   bd85a0b59d27e10f865b11867fea950448c53f30
   Verifying Hash Integrity ... crc32+ sha1+ OK
## Loading fdt from FIT Image at b0000000 ...
   Using 'conf@1' configuration
   Trying 'fdt@1' fdt subimage
     Description:  Flattened Device Tree blob
     Created:      2106-02-07   6:28:15 UTC
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0xb067ca04
     Data Size:    35301 Bytes = 34.5 KiB
     Architecture: AArch64
     Load Address: 0x90000000
     Hash algo:    crc32
     Hash value:   2e2d53cb
     Hash algo:    sha1
     Hash value:   7e811d3cbf320bffabb06415286b3e6f280147d5
   Verifying Hash Integrity ... crc32+ sha1+ OK
   Loading fdt from 0xb067ca04 to 0x90000000
   Booting using the fdt blob at 0x90000000
   Loading Kernel Image
   Loading Device Tree to 000000009fff4000, end 000000009ffff9e4 ... OK
Releasing fan controller full speed gpio
fsl-mc: DPL not deployed, DPAA2 ethernet not work

Starting kernel ...

"Synchronous Abort" handler, esr 0x02000000
elr: 000000000635d000 lr : 0000000082005e40 (reloc)
elr: 0000000080080000 lr : 00000000fbd28e40
x0 : 000000009fff4000 x1 : 0000000000000000
x2 : 0000000000000000 x3 : 0000000000000000
x4 : 0000000080080000 x5 : 0000000000000001
x6 : 0000000000000008 x7 : 0000000000000000
x8 : 00000000fbb1b850 x9 : 0000010000000000
x10: 000000000a200023 x11: 0000000000000002
x12: 0000000000000002 x13: 00000000000075b8
x14: 00000000fbb1b898 x15: 00000000fbd25c1c
x16: 07e4ffd80ab9c903 x17: 00007e21a5e116f1
x18: 00000000fbb1ed80 x19: 00000000fbde6830
x20: 0000000000000000 x21: 0000000000000000
x22: 0000000000000001 x23: 00000000fbb2c2f8
x24: 0000000000000001 x25: 00000000fbb2c2f8
x26: 00000000fbdd0040 x27: 0000000000000000
x28: 00000000b00000d0 x29: 00000000fbd28e08

Code: 00000000 00000000 00000000 00000000 (00000000)
Resetting CPU ...

### ERROR ### Please RESET the board ###

I would recommend you enable early console support in your kernel commandline arguments so you will be able to see specifically where the kernel is crashing. Most likely you are overlapping some memory addresses causing the boot failure.