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.
- SPL → U-boot (with OpenSBI) → elfloader (loadelf or go?) → cpio
- 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.