With latest Haiku recent code, I can boot Haiku on MangoPi Pro (Allwinner Nezha d1 chip based).
link site: 芒果派 ( Mango Pi ), 小巧优雅的单板电脑 | mqpro
- build mainline u-boot according to Allwinner Nezha - linux-sunxi.org
- compiling the recent riscv64 haiku mmc image:
- with patch from : https://review.haiku-os.org/c/haiku/+/3880/1/src/system/boot/platform/efi/debug.cpp
- enable console dts for “snps,dw-apb-uart”:
#if defined(__riscv) { "sifive,uart0", UART_KIND_SIFIVE, &get_uart<ArchUARTSifive> }, { "snps,dw-apb-uart", UART_KIND_8250, &get_uart<DebugUART8250> }, #elif defined(__ARM__)
- burn the mmc image to sdcard:
dd if=./haiku-mmc.image of=/dev/mmcblk0 conv=sync
dd if=../../nezha/u-boot/u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8
Now I can reach:
efi/fdt: Probing for device trees from UEFI...
efi/fdt: Valid FDT from UEFI table 3, size: 36864
arch_smp_register_cpu()
cpu
id: 0
phandle: 61
PLIC contexts
context 1: 61
cpu id: 0
boot(): enter
boot(): heap initialized...
GOP protocol not found
Welcome to the Haiku boot loader!
Haiku revision: hrev56582
add_partitions_for(0x000000007ccaf258, mountFS = no)
add_partitions_for(fd = 0, mountFS = no)
0x000000007ccaf2b0 Partition::Partition
0x000000007ccaf2b0 Partition::Scan()
check for partitioning_system: GUID Partition Map
EFI header: EFI PART
EFI revision: 10000
header size: 92
header CRC: 40b4b8ae
absolute block: 1
alternate block: 61067263
first usable block: 34
last usable block: 61067230
disk GUID: f23f3ee2-d4b0-4e87-adf5-933f428ec18c
entries block: 2
entry size: 128
entry count: 128
entries CRC: 1c9aaef8
EFI header: EFI PART
EFI revision: 10000
header size: 92
header CRC: 40b4b8ae
absolute block: 61067263
alternate block: 1
first usable block: 34
last usable block: 61067230
disk GUID: f23f3ee2-d4b0-4e87-adf5-933f428ec18c
entries block: 61067231
entry size: 128
entry count: 128
entries CRC: 1c9aaef8
[ 0] partition type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
unique id: f163f789-38d6-44ce-b678-8a250302a064
start block: 65536
end block: 1114111
size: 511.999 MB
attributes: 0
name: primary
[ 1] partition type: 0fc63daf-8483-4772-8e79-3d69d8477de4
unique id: ee6f7a96-bdf4-0349-82be-407ffb978b2e
start block: 1114112
end block: 60424191
size: 28959.999 MB
attributes: 0
name:
priority: 750
check for partitioning_system: Intel Partition Map
priority: 810
check for partitioning_system: Intel Extended Partition
0x000000007ccaf5c8 Partition::Partition
0x000000007ccaf2b0 Partition::AddChild 0x000000007ccaf5c8
0x000000007ccaf5c8 Partition::SetParent 0x000000007ccaf2b0
new child partition!
0x000000007ccaf6e8 Partition::Partition
0x000000007ccaf2b0 Partition::AddChild 0x000000007ccaf6e8
0x000000007ccaf6e8 Partition::SetParent 0x000000007ccaf2b0
new child partition!
0x000000007ccaf2b0 Partition::Scan(): scan child 0x000000007ccaf5c8 (start = 33554432, size = 33554432, parent = 0x000000007ccaf2b0)!
0x000000007ccaf5c8 Partition::Scan()
check for partitioning_system: GUID Partition Map
check for partitioning_system: Intel Partition Map
check for partitioning_system: Intel Extended Partition
0x000000007ccaf2b0 Partition::Scan(): scan child 0x000000007ccaf6e8 (start = 67108864, size = 314572800, parent = 0x000000007ccaf2b0)!
0x000000007ccaf6e8 Partition::Scan()
check for partitioning_system: GUID Partition Map
check for partitioning_system: Intel Partition Map
check for partitioning_system: Intel Extended Partition
0x000000007ccaf2b0 Partition::~Partition
0x000000007ccaf5c8 Partition::SetParent 0x0000000000000000
0x000000007ccaf6e8 Partition::SetParent 0x0000000000000000
0x000000007ccaf5c8 Partition::_Mount check for file_system: BFS Filesystem
0x000000007ccaf5c8 Partition::_Mount check for file_system: FAT32 Filesystem
0x000000007ccaf5c8 Partition::_Mount check for file_system: TAR Filesystem
0x000000007ccaf5c8 Partition::~Partition
0x000000007ccaf6e8 Partition::_Mount check for file_system: BFS Filesystem
PackageVolumeInfo::SetTo()
PackageVolumeInfo::_InitState(): failed to parse activated-packages: No such file or directory
load kernel kernel_riscv64...
maximum boot loader heap usage: 445768, currently used: 436728
Chosen UART:
kind: 8250
regs: 0x2500000, 0x400
irq: 18
clock: 0
bootHart: 0
timerFrequency: 24000000
kernel:
text: 0xffffffc002010000, 0x15c000
data: 0xffffffc00216c000, 0x5a000
entry: 0xffffffc00209425a
Kernel stack at 0xffffffc002682000
System provided memory map:
phys: 0x40000000-0x40040000, virt: 0x40000000-0x40040000, type: EfiBootServicesData (0x4), attr: 0x8
phys: 0x40040000-0x47f00000, virt: 0x40040000-0x47f00000, type: EfiConventionalMemory (0x7), attr: 0x8
phys: 0x47f00000-0x47f0e000, virt: 0x47f00000-0x47f0e000, type: EfiACPIReclaimMemory (0x9), attr: 0x8
phys: 0x47f0e000-0x7c612000, virt: 0x47f0e000-0x7c612000, type: EfiConventionalMemory (0x7), attr: 0x8
phys: 0x7c612000-0x7ecaf000, virt: 0x7c612000-0x7ecaf000, type: EfiLoaderData (0x2), attr: 0x8
phys: 0x7ecaf000-0x7ecff000, virt: 0x7ecaf000-0x7ecff000, type: EfiLoaderCode (0x1), attr: 0x8
phys: 0x7ecff000-0x7ed04000, virt: 0x7ecff000-0x7ed04000, type: EfiBootServicesData (0x4), attr: 0x8
phys: 0x7ed04000-0x7ed05000, virt: 0x7ed04000-0x7ed05000, type: EfiRuntimeServicesData (0x6), attr: 0x8000000000000008
phys: 0x7ed05000-0x7ed08000, virt: 0x7ed05000-0x7ed08000, type: EfiBootServicesData (0x4), attr: 0x8
phys: 0x7ed08000-0x7ed09000, virt: 0x7ed08000-0x7ed09000, type: EfiRuntimeServicesData (0x6), attr: 0x8000000000000008
phys: 0x7ed09000-0x7ed0a000, virt: 0x7ed09000-0x7ed0a000, type: EfiBootServicesData (0x4), attr: 0x8
phys: 0x7ed0a000-0x7ed10000, virt: 0x7ed0a000-0x7ed10000, type: EfiRuntimeServicesData (0x6), attr: 0x8000000000000008
phys: 0x7ed10000-0x7ed1d000, virt: 0x7ed10000-0x7ed1d000, type: EfiBootServicesData (0x4), attr: 0x8
phys: 0x7ed1d000-0x7ff49000, virt: 0x7ed1d000-0x7ff49000, type: EfiLoaderData (0x2), attr: 0x8
phys: 0x7ff49000-0x7ff4a000, virt: 0x7ff49000-0x7ff4a000, type: EfiRuntimeServicesCode (0x5), attr: 0x8000000000000008
phys: 0x7ff4a000-0x80000000, virt: 0x7ff4a000-0x80000000, type: EfiLoaderData (0x2), attr: 0x8
PageTable:
0x02500000 - 0x02500fff: 0x02500000 - 0x02500fff, 0x1000, {valid, read, write, accessed, dirty}
0x7c612000 - 0x7ecfefff: 0x7c612000 - 0x7ecfefff, 0x26ed000, {valid, read, write, exec, accessed, dirty}
0x7ed04000 - 0x7ed04fff: 0x7ed04000 - 0x7ed04fff, 0x1000, {valid, read, write, exec, accessed, dirty}
0x7ed08000 - 0x7ed08fff: 0x7ed08000 - 0x7ed08fff, 0x1000, {valid, read, write, exec, accessed, dirty}
0x7ed0a000 - 0x7ed0ffff: 0x7ed0a000 - 0x7ed0ffff, 0x6000, {valid, read, write, exec, accessed, dirty}
0x7ed1d000 - 0x7fffffff: 0x7ed1d000 - 0x7fffffff, 0x12e3000, {valid, read, write, exec, accessed, dirty}
0xffffffc002000000 - 0xffffffc00200ffff: 0x7cc9b000 - 0x7ccaafff, 0x10000, {valid, read, write, exec, accessed, dirty}
0xffffffc002010000 - 0xffffffc0021c5fff: 0x7cae5000 - 0x7cc9afff, 0x1b6000, {valid, read, write, exec, accessed, dirty}
0xffffffc0021c6000 - 0xffffffc0021f1fff: 0x7cab9000 - 0x7cae4fff, 0x2c000, {valid, read, write, exec, accessed, dirty}
0xffffffc0021f2000 - 0xffffffc002231fff: 0x7ca79000 - 0x7cab8fff, 0x40000, {valid, read, write, exec, accessed, dirty}
0xffffffc002232000 - 0xffffffc00223dfff: 0x7ca6d000 - 0x7ca78fff, 0xc000, {valid, read, write, exec, accessed, dirty}
0xffffffc00223e000 - 0xffffffc002247fff: 0x7ca63000 - 0x7ca6cfff, 0xa000, {valid, read, write, exec, accessed, dirty}
0xffffffc002248000 - 0xffffffc00224afff: 0x7ca60000 - 0x7ca62fff, 0x3000, {valid, read, write, exec, accessed, dirty}
0xffffffc00224b000 - 0xffffffc00227cfff: 0x7ca2e000 - 0x7ca5ffff, 0x32000, {valid, read, write, exec, accessed, dirty}
0xffffffc00227d000 - 0xffffffc00228cfff: 0x7ca1e000 - 0x7ca2dfff, 0x10000, {valid, read, write, exec, accessed, dirty}
0xffffffc00228d000 - 0xffffffc00228efff: 0x7ca1c000 - 0x7ca1dfff, 0x2000, {valid, read, write, exec, accessed, dirty}
0xffffffc00228f000 - 0xffffffc00229afff: 0x7ca10000 - 0x7ca1bfff, 0xc000, {valid, read, write, exec, accessed, dirty}
0xffffffc00229b000 - 0xffffffc00229cfff: 0x7ca0e000 - 0x7ca0ffff, 0x2000, {valid, read, write, exec, accessed, dirty}
0xffffffc00229d000 - 0xffffffc0022a8fff: 0x7ca02000 - 0x7ca0dfff, 0xc000, {valid, read, write, exec, accessed, dirty}
0xffffffc0022a9000 - 0xffffffc0022b8fff: 0x7c9f2000 - 0x7ca01fff, 0x10000, {valid, read, write, exec, accessed, dirty}
0xffffffc0022b9000 - 0xffffffc0022bafff: 0x7c9f0000 - 0x7c9f1fff, 0x2000, {valid, read, write, exec, accessed, dirty}
0xffffffc0022bb000 - 0xffffffc0022bdfff: 0x7c9ed000 - 0x7c9effff, 0x3000, {valid, read, write, exec, accessed, dirty}
0xffffffc0022be000 - 0xffffffc0022c0fff: 0x7c9ea000 - 0x7c9ecfff, 0x3000, {valid, read, write, exec, accessed, dirty}
0xffffffc0022c1000 - 0xffffffc0022c3fff: 0x7c9e7000 - 0x7c9e9fff, 0x3000, {valid, read, write, exec, accessed, dirty}
0xffffffc0022c4000 - 0xffffffc0022c7fff: 0x7c9e3000 - 0x7c9e6fff, 0x4000, {valid, read, write, exec, accessed, dirty}
0xffffffc0022c8000 - 0xffffffc0022d3fff: 0x7c9d7000 - 0x7c9e2fff, 0xc000, {valid, read, write, exec, accessed, dirty}
0xffffffc0022d4000 - 0xffffffc002340fff: 0x7c96a000 - 0x7c9d6fff, 0x6d000, {valid, read, write, exec, accessed, dirty}
0xffffffc002341000 - 0xffffffc00234ffff: 0x7c95b000 - 0x7c969fff, 0xf000, {valid, read, write, exec, accessed, dirty}
0xffffffc002350000 - 0xffffffc00236dfff: 0x7c93d000 - 0x7c95afff, 0x1e000, {valid, read, write, exec, accessed, dirty}
0xffffffc00236e000 - 0xffffffc00237bfff: 0x7c92f000 - 0x7c93cfff, 0xe000, {valid, read, write, exec, accessed, dirty}
0xffffffc00237c000 - 0xffffffc002383fff: 0x7c927000 - 0x7c92efff, 0x8000, {valid, read, write, exec, accessed, dirty}
0xffffffc002384000 - 0xffffffc00238bfff: 0x7c91f000 - 0x7c926fff, 0x8000, {valid, read, write, exec, accessed, dirty}
0xffffffc00238c000 - 0xffffffc00239bfff: 0x7c90f000 - 0x7c91efff, 0x10000, {valid, read, write, exec, accessed, dirty}
0xffffffc00239c000 - 0xffffffc00239ffff: 0x7c90b000 - 0x7c90efff, 0x4000, {valid, read, write, exec, accessed, dirty}
0xffffffc0023a0000 - 0xffffffc0023a2fff: 0x7c908000 - 0x7c90afff, 0x3000, {valid, read, write, exec, accessed, dirty}
0xffffffc0023a3000 - 0xffffffc0023a8fff: 0x7c902000 - 0x7c907fff, 0x6000, {valid, read, write, exec, accessed, dirty}
0xffffffc0023a9000 - 0xffffffc0023acfff: 0x7c8fe000 - 0x7c901fff, 0x4000, {valid, read, write, exec, accessed, dirty}
0xffffffc0023ad000 - 0xffffffc0023aefff: 0x7c8fc000 - 0x7c8fdfff, 0x2000, {valid, read, write, exec, accessed, dirty}
0xffffffc0023af000 - 0xffffffc0023b3fff: 0x7c8f7000 - 0x7c8fbfff, 0x5000, {valid, read, write, exec, accessed, dirty}
0xffffffc0023b4000 - 0xffffffc0023befff: 0x7c8ec000 - 0x7c8f6fff, 0xb000, {valid, read, write, exec, accessed, dirty}
0xffffffc0023bf000 - 0xffffffc0023d4fff: 0x7c8d6000 - 0x7c8ebfff, 0x16000, {valid, read, write, exec, accessed, dirty}
0xffffffc0023d5000 - 0xffffffc0023e6fff: 0x7c8c4000 - 0x7c8d5fff, 0x12000, {valid, read, write, exec, accessed, dirty}
0xffffffc0023e7000 - 0xffffffc0023f6fff: 0x7c8b4000 - 0x7c8c3fff, 0x10000, {valid, read, write, exec, accessed, dirty}
0xffffffc0023f7000 - 0xffffffc002406fff: 0x7c8a4000 - 0x7c8b3fff, 0x10000, {valid, read, write, exec, accessed, dirty}
0xffffffc002407000 - 0xffffffc002415fff: 0x7c895000 - 0x7c8a3fff, 0xf000, {valid, read, write, exec, accessed, dirty}
0xffffffc002416000 - 0xffffffc002425fff: 0x7c885000 - 0x7c894fff, 0x10000, {valid, read, write, exec, accessed, dirty}
0xffffffc002426000 - 0xffffffc002437fff: 0x7c873000 - 0x7c884fff, 0x12000, {valid, read, write, exec, accessed, dirty}
0xffffffc002438000 - 0xffffffc00243dfff: 0x7c86d000 - 0x7c872fff, 0x6000, {valid, read, write, exec, accessed, dirty}
0xffffffc00243e000 - 0xffffffc002441fff: 0x7c869000 - 0x7c86cfff, 0x4000, {valid, read, write, exec, accessed, dirty}
0xffffffc002442000 - 0xffffffc002445fff: 0x7c865000 - 0x7c868fff, 0x4000, {valid, read, write, exec, accessed, dirty}
0xffffffc002446000 - 0xffffffc002448fff: 0x7c862000 - 0x7c864fff, 0x3000, {valid, read, write, exec, accessed, dirty}
0xffffffc002449000 - 0xffffffc00244dfff: 0x7c85d000 - 0x7c861fff, 0x5000, {valid, read, write, exec, accessed, dirty}
0xffffffc00244e000 - 0xffffffc00245dfff: 0x7c84d000 - 0x7c85cfff, 0x10000, {valid, read, write, exec, accessed, dirty}
0xffffffc00245e000 - 0xffffffc002463fff: 0x7c847000 - 0x7c84cfff, 0x6000, {valid, read, write, exec, accessed, dirty}
0xffffffc002464000 - 0xffffffc002468fff: 0x7c842000 - 0x7c846fff, 0x5000, {valid, read, write, exec, accessed, dirty}
0xffffffc002469000 - 0xffffffc002481fff: 0x7c829000 - 0x7c841fff, 0x19000, {valid, read, write, exec, accessed, dirty}
0xffffffc002482000 - 0xffffffc002489fff: 0x7c821000 - 0x7c828fff, 0x8000, {valid, read, write, exec, accessed, dirty}
0xffffffc00248a000 - 0xffffffc002499fff: 0x7c811000 - 0x7c820fff, 0x10000, {valid, read, write, exec, accessed, dirty}
0xffffffc00249a000 - 0xffffffc0024bbfff: 0x7c7ef000 - 0x7c810fff, 0x22000, {valid, read, write, exec, accessed, dirty}
0xffffffc0024bc000 - 0xffffffc0024d8fff: 0x7c7d2000 - 0x7c7eefff, 0x1d000, {valid, read, write, exec, accessed, dirty}
0xffffffc0024d9000 - 0xffffffc0024e8fff: 0x7c7c2000 - 0x7c7d1fff, 0x10000, {valid, read, write, exec, accessed, dirty}
0xffffffc0024e9000 - 0xffffffc0024edfff: 0x7c7bd000 - 0x7c7c1fff, 0x5000, {valid, read, write, exec, accessed, dirty}
0xffffffc0024ee000 - 0xffffffc0024f5fff: 0x7c7b5000 - 0x7c7bcfff, 0x8000, {valid, read, write, exec, accessed, dirty}
0xffffffc0024f6000 - 0xffffffc002540fff: 0x7c76a000 - 0x7c7b4fff, 0x4b000, {valid, read, write, exec, accessed, dirty}
0xffffffc002541000 - 0xffffffc002550fff: 0x7c75a000 - 0x7c769fff, 0x10000, {valid, read, write, exec, accessed, dirty}
0xffffffc002551000 - 0xffffffc002560fff: 0x7c74a000 - 0x7c759fff, 0x10000, {valid, read, write, exec, accessed, dirty}
0xffffffc002561000 - 0xffffffc00256cfff: 0x7c73e000 - 0x7c749fff, 0xc000, {valid, read, write, exec, accessed, dirty}
0xffffffc00256d000 - 0xffffffc002573fff: 0x7c737000 - 0x7c73dfff, 0x7000, {valid, read, write, exec, accessed, dirty}
0xffffffc002574000 - 0xffffffc002577fff: 0x7c733000 - 0x7c736fff, 0x4000, {valid, read, write, exec, accessed, dirty}
0xffffffc002578000 - 0xffffffc002581fff: 0x7c729000 - 0x7c732fff, 0xa000, {valid, read, write, exec, accessed, dirty}
0xffffffc002582000 - 0xffffffc002681fff: 0x7c629000 - 0x7c728fff, 0x100000, {valid, read, write, exec, accessed, dirty}
0xffffffc002682000 - 0xffffffc002686fff: 0x7c624000 - 0x7c628fff, 0x5000, {valid, read, write, exec, accessed, dirty}
0xffffffc002687000 - 0xffffffc002688fff: 0x7c622000 - 0x7c623fff, 0x2000, {valid, read, write, exec, accessed, dirty}
0xffffffc002689000 - 0xffffffc002698fff: 0x7c612000 - 0x7c621fff, 0x10000, {valid, read, write, exec, accessed, dirty}
0xffffffc002699000 - 0xffffffc00269cfff: 0x7ccab000 - 0x7ccaefff, 0x4000, {valid, read, write, exec, accessed, dirty}
0xffffffc00269d000 - 0xffffffc00669cfff: 0x10000000 - 0x13ffffff, 0x4000000, {valid, read, write, accessed, dirty}
0xffffffc00669d000 - 0xffffffc00669dfff: 0x02500000 - 0x02500fff, 0x1000, {valid, read, write, accessed, dirty}
0xffffffffc0000000 - 0xffffffffffffffff: 0x40000000 - 0x7fffffff, 0x40000000, {valid, read, write, accessed, dirty}
SATP: 0x800000000007c611
Calling ExitBootServices. So long, EFI!
Unhandled exception: Load access fault
EPC: 000000007ecbbacc RA: 000000007ecbbab8 TVAL: 00000081430142e9
EPC: 0000000041b72acc RA: 0000000041b72ab8 reloc adjusted
Code: c763 02a7 842a 5863 00a0 609c 8622 85ca (77bc)
UEFI image [0x000000007ecaf000:0x000000007ecfec0f] pc=0xcacc '/EFI\BOOT\BOOTRISCV64.EFI'
resetting ...