Sel4 on AllwinnerD1 sun20iw1p1 MangoPi, boot problem

Hello,

I am trying to boot the Sel4-test on RISC-V AllwinnerD1 Mango Pi MQ1PH and I stuck on booting the kernel. I added all necessary files to project (i.e dts file, platform and other) and compiled it successfully. I have already spent two days trying to figure out how to boot elfloader and why it does not want boot.

I compiled u-boot (most recent version) with OpenSBI from Sel4 and dd it to mmc.
U-boot was modified (hardcoded) to load elfloader from mmc

#define CONFIG_BOOTCOMMAND \
    "if mmc rescan; then " \
        "echo SD/MMC found on device ${mmc_dev};" \
        "fatload mmc 0 0x40a33000 elfloader;" \
        "bootelf 0x40a33000;" \
    "fi;" \

On the vfat partition I have a elfloader with the cpio archive. And I stuck on this step.
I tried to load the elfloader on different addresses and in different ways but I have no success.

For example:

Hit any key to stop autoboot:  0
=> fatload mmc 0 0x40a33000 elfloader
5123032 bytes read in 847 ms (5.8 MiB/s)
=> bootelf 0x40a33000
Unhandled exception: Load access fault
EPC: 000000007ffbd308 RA: 000000007ffbd33a TVAL: 00000005c66db5aa
EPC: 0000000042e50308 RA: 0000000042e5033a reloc adjusted

Code: 69a2 6145 8082 7480 1793 0069 9426 943e (641c)


resetting ...

U-Boot SPL 2022.10-38338-g528ae9bc6c-dirty (Jan 11 2023 - 01:07:54 +0100)
sunxi_ram_probe: dram-controller@3102000: probing
DRAM only have internal ZQ!!
ddr_efuse_type: 0x0

The documentation is a bit confusing and I can not find the answer on my questions.

Could anyone please point me at which place I am doing it wrong. At least I need to know in which sequence elfloader should be loaded and at which address then.

  1. SPL → U-boot (with OpenSBI) → elfloader (loadelf or go?) → cpio
  2. SPL → elfloader (but which offset on mmc?)
/*
 * Allwinner Technology CO., Ltd. sun20iw1p1 platform.
 *
 */

/memreserve/ 0x40000000 0x200000;  /* opensbi */

/memreserve/ 0x42000000 0x100000;  /* dsp used 1MB */

memory@40000000 {
		device_type = "memory";
		reg = <0x0 0x40000000 0x0 0x8000000>;
	};

chosen {
		bootargs = "console=ttyS0,115200n8 debug loglevel=7,initcall_debug=1 init=/init earlycon=sbi";
		stdout-path = "serial0:115200n8";
		linux,initrd-start = <0x42000000>;
		linux,initrd-end   = <0x43000000>;
	};

Thank you.