exactly … they start to aggressively throw themselves into the market becoming competitive, have you noticed the gpu? it’s from imagination, former ex gpu suppliers for Apple … I found this video, they had already announced that they are also working on a RISC-V cpu
Hi yes. I backed it. But it has not the power of the laptop of course. But nice still and nice to tinker with.
Not surprising, since they were doing MIPS before and the MIPS foundation annoucned that they are abandoning the MIPS architecture to support RISC-V instead.
However the PowerVR GPUs are not exactly known for being friendly with open source, I guess this will have to change if we want to see good support in most operating systems (and not just binary blobs for Linux).
we will see, I am optimistic, this time the world is really changing, I am referring especially to the European and US chips act. Besides Imagination, closing the business with Apple, I don’t think it has reasons to create obstacles, now everyone is opening up with opensource drivers even nvidia has given up, they are more convenient for everyone, and if they want to speed up their popularity on these new RISC-V platforms, so much the better that they use opensource divers
If I recall right there was recently a release of a PowerVR graphics driver for older PowerVR graphics units?
Also isnt the M1 APU a PowerVR derivat which gets currently reverse engineered?
I have not deepened the research, but it seems to make sense with the landing on the risc-v architecture…
If I understand correctly this one is planned to have a fully open source vulkan and OGLES3.x driver (without blobs I think). There is some info here: IMG BXE4-32 GPU Open Source Plan - GPU related - RVspace Forum
Edit: Actually I think it will have firmware blobs but open source shader compiler (so we should be able to have a haiku driver in theory!) Open Source GPU Driver - Imagination Developer
do you think they chose the same methodology as nvidia? to make closed source firmware and opensource drivers?
i like where riscV is heading, now to get us companies behind it
It seems likely, that is the approach recommended by the Free Software Foundation in their “Respects Your Freedom” recommendations for hardware: if the software is embedded in a device and not upgradeable, it is not software but firmware, and then it doesn’t need to be free.
Personally I think this is a bit stupid in terms of free software and open hardware, but hey, it means the “intelligence” moves inside the graphics card and the drivers get simpler so we can more easily port them to Haiku. So let’s at least enjoy that
Yea, the approach looks like this: they obfuscate what really happens between hardware and firmware and provide you with connection tubes to do what you want with the drivers … at least there is good that you can build on it a coherent integration with the rest of the operating system … it’s not the best, but it’s definitely better than it was before.
to be honest, win the complexity of graphics drivers and hardware, this is a win period. better to let them fix the firmware.
What’s the current “best cheap board” to play with this? There seem to be some Nezha “clones” popping up, plus the LicheeRV and carrier, or is there only support for the high end platforms so far?
Haiku doesn’t support any cheap boards at the moment. Haiku developers might take an interest in VisionFive 2 or Pine64 Star64 soon-ish, but that is not certain. There are even cheaper boards, but they can’t even run desktop Linux, so I wouldn’t bother.
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 ...
I probably can fix boot if I get hardware (I live in Japan).
you can send me an address(pengphei@foxmail.com), I can buy one for you from taobao.com.
I have fond the link here for aliexpress:
- MongoPi pro(pink version(1GB), 25$): Mangopi Mq-pro D1 Board Risc-v Sbc 512mb/1gb Ram With Wifi/bt Sakura Pink V1.4 - Demo Board - AliExpress
- freebsd is porting riscv for this soc(work in progress): riscv - FreeBSD Wiki
Looks like Intel and sifive are working together for a new powerfull board with four P550 cores and a PCI-e slot: