configs/nezha_defconfig: new defconfig
Add a defconfig for the Allwinner Nezha, a raspberrypi-style board built around the RISC-V 64bit D1 SoC. There is currently no upstream support, so use the git repos from Samuel Holland as explained on the linux-sunxi wiki: https://linux-sunxi.org/Allwinner_Nezha The U-Boot DTB is also used by opensbi, but the two branches are unfortunately not in sync at the moment, so add a patch to fix the compatible for the PLIC so opensbi makes it available to S-Mode (Linux). The use of the sun20i-d1-spl SPL bootloader / TOC1 file format also makes it a bit more complicated to build the boot image. As this is expected to only be a temporary issue, add a U-Boot patch to build the TOC1 image as part of the build rather than adding explicit support in our U-Boot package to do it. Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
parent
87b06f3a80
commit
acbe6a0a89
@ -2105,6 +2105,7 @@ N: Peter Korsgaard <peter@korsgaard.com>
|
||||
F: board/arrow/avenger96/
|
||||
F: board/beagleboneai/
|
||||
F: board/minnowboard/
|
||||
F: board/nezha/
|
||||
F: board/librecomputer/lafrite/
|
||||
F: board/nexbox/a95x/
|
||||
F: board/openblocks/a6/
|
||||
@ -2119,6 +2120,7 @@ F: configs/lafrite_defconfig
|
||||
F: configs/minnowboard_max-graphical_defconfig
|
||||
F: configs/minnowboard_max_defconfig
|
||||
F: configs/nexbox_a95x_defconfig
|
||||
F: configs/nezha_defconfig
|
||||
F: configs/openblocks_a6_defconfig
|
||||
F: configs/orangepi_pc_defconfig
|
||||
F: configs/orangepi_r1_defconfig
|
||||
|
37
board/nezha/genimage.cfg
Normal file
37
board/nezha/genimage.cfg
Normal file
@ -0,0 +1,37 @@
|
||||
# Minimal SD card image for the Allwinner Nezha
|
||||
|
||||
image sdcard.img {
|
||||
hdimage {
|
||||
}
|
||||
|
||||
partition boot0-1 {
|
||||
in-partition-table = "no"
|
||||
image = "boot0_sdcard_sun20iw1p1.bin"
|
||||
offset = 8K
|
||||
}
|
||||
|
||||
partition boot0-2 {
|
||||
in-partition-table = "no"
|
||||
image = "boot0_sdcard_sun20iw1p1.bin"
|
||||
offset = 128K
|
||||
}
|
||||
|
||||
partition u-boot-1 {
|
||||
in-partition-table = "no"
|
||||
image = "u-boot.toc1"
|
||||
offset = 12288K
|
||||
}
|
||||
|
||||
partition u-boot-2 {
|
||||
in-partition-table = "no"
|
||||
image = "u-boot.toc1"
|
||||
offset = 16400K
|
||||
}
|
||||
|
||||
partition rootfs {
|
||||
partition-type = 0x83
|
||||
image = "rootfs.ext4"
|
||||
bootable = "true"
|
||||
offset = 18M
|
||||
}
|
||||
}
|
4
board/nezha/overlay/boot/extlinux/extlinux.conf
Normal file
4
board/nezha/overlay/boot/extlinux/extlinux.conf
Normal file
@ -0,0 +1,4 @@
|
||||
label linux
|
||||
kernel /boot/Image
|
||||
devicetree /boot/sun20i-d1-nezha.dtb
|
||||
append console=ttyS0,115200 root=/dev/mmcblk0p1 ro rootwait
|
@ -0,0 +1,36 @@
|
||||
From 99cf8f37ceb1def9e7bbaccc395cf2275723e03d Mon Sep 17 00:00:00 2001
|
||||
From: Peter Korsgaard <peter@korsgaard.com>
|
||||
Date: Thu, 4 Nov 2021 22:15:13 +0100
|
||||
Subject: [PATCH] arch/riscv/dts/sun20i-d1.dtsi: adjust plic compatible to
|
||||
match opensbi
|
||||
|
||||
The T-HEAD PLIC is by default not accessible from S-mode, and access must be
|
||||
enabled by opensbi to make it accessible to Linux.
|
||||
|
||||
The DTB is used both by U-Boot and opensbi (but the PLIC node is ignored by
|
||||
U-Boot), so change the compatible to match what opensbi expects to fix a
|
||||
crash during Linux boot:
|
||||
|
||||
https://github.com/riscv-software-src/opensbi/commit/78c2b19218bd
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
---
|
||||
arch/riscv/dts/sun20i-d1.dtsi | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/riscv/dts/sun20i-d1.dtsi b/arch/riscv/dts/sun20i-d1.dtsi
|
||||
index 280e0336d4..56d02c33b0 100644
|
||||
--- a/arch/riscv/dts/sun20i-d1.dtsi
|
||||
+++ b/arch/riscv/dts/sun20i-d1.dtsi
|
||||
@@ -1136,7 +1136,7 @@
|
||||
|
||||
plic: interrupt-controller@10000000 {
|
||||
compatible = "allwinner,sun20i-d1-plic",
|
||||
- "sifive,plic-1.0.0";
|
||||
+ "thead,c900-plic";
|
||||
reg = <0x10000000 0x4000000>;
|
||||
#address-cells = <0>;
|
||||
interrupts-extended = <&cpu0_intc 11>,
|
||||
--
|
||||
2.20.1
|
||||
|
@ -0,0 +1,54 @@
|
||||
From 4a923e0e4ef6d2b41cb89d658e269adada847573 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Korsgaard <peter@korsgaard.com>
|
||||
Date: Thu, 4 Nov 2021 22:32:04 +0100
|
||||
Subject: [PATCH] Makefile: HACK: Support building u-boot.toc1 for nezda board
|
||||
|
||||
For easier integration into Buildroot. The boot0 / toc1 logic is WIP until
|
||||
U-Boot gains SPL support for the D1, so add a hack to make it easier to
|
||||
integrate in Buildroot as-is.
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
---
|
||||
Makefile | 9 +++++++++
|
||||
nezha.cfg | 9 +++++++++
|
||||
2 files changed, 18 insertions(+)
|
||||
create mode 100644 nezha.cfg
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index f911f70344..259d93bf80 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1084,6 +1084,15 @@ endif
|
||||
.binman_stamp: FORCE
|
||||
@touch $@
|
||||
|
||||
+fw_dynamic.bin: $(OPENSBI)
|
||||
+ $(call if_changed,copy)
|
||||
+
|
||||
+MKIMAGEFLAGS_u-boot.toc1 = -T sunxi_toc1
|
||||
+u-boot.toc1: nezha.cfg fw_dynamic.bin inputs
|
||||
+ $(call if_changed,mkimage)
|
||||
+
|
||||
+all: u-boot.toc1
|
||||
+
|
||||
ifeq ($(CONFIG_DEPRECATED),y)
|
||||
$(warning "You have deprecated configuration options enabled in your .config! Please check your configuration.")
|
||||
endif
|
||||
diff --git a/nezha.cfg b/nezha.cfg
|
||||
new file mode 100644
|
||||
index 0000000000..2d23b9b388
|
||||
--- /dev/null
|
||||
+++ b/nezha.cfg
|
||||
@@ -0,0 +1,9 @@
|
||||
+[opensbi]
|
||||
+file = fw_dynamic.bin
|
||||
+addr = 0x40000000
|
||||
+[dtb]
|
||||
+file = arch/riscv/dts/sun20i-d1-nezha.dtb
|
||||
+addr = 0x44000000
|
||||
+[u-boot]
|
||||
+file = u-boot-nodtb.bin
|
||||
+addr = 0x4a000000
|
||||
--
|
||||
2.20.1
|
||||
|
24
board/nezha/readme.txt
Normal file
24
board/nezha/readme.txt
Normal file
@ -0,0 +1,24 @@
|
||||
Allwinner Nezha
|
||||
===============
|
||||
|
||||
Nezha is is a low-cost RISC-V 64-bit based platform, powered by an
|
||||
Allwinner D1 SoC.
|
||||
|
||||
How to build
|
||||
============
|
||||
|
||||
$ make nezha_defconfig
|
||||
$ make
|
||||
|
||||
How to write the SD card
|
||||
========================
|
||||
|
||||
Once the build process is finished you will have an image called "sdcard.img"
|
||||
in the output/images/ directory.
|
||||
|
||||
Copy the bootable "sdcard.img" onto an SD card with "dd":
|
||||
|
||||
$ sudo dd if=output/images/sdcard.img of=/dev/sdX
|
||||
|
||||
Connect a TTL UART to the debug connector, insert the microSD card and
|
||||
plug in a USB-C cable to the PWR connector to boot the system.
|
33
configs/nezha_defconfig
Normal file
33
configs/nezha_defconfig
Normal file
@ -0,0 +1,33 @@
|
||||
BR2_riscv=y
|
||||
BR2_GLOBAL_PATCH_DIR="board/nezha/patches"
|
||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_14=y
|
||||
BR2_ROOTFS_OVERLAY="board/nezha/overlay"
|
||||
BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
|
||||
BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/nezha/genimage.cfg"
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,smaeul,linux,012f5a3d01be6d44e32c74bb3637ec281790b297)/linux-012f5a3d01be6d44e32c74bb3637ec281790b297.tar.gz"
|
||||
BR2_LINUX_KERNEL_DEFCONFIG="nezha"
|
||||
BR2_LINUX_KERNEL_DTS_SUPPORT=y
|
||||
BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun20i-d1-nezha"
|
||||
BR2_LINUX_KERNEL_INSTALL_TARGET=y
|
||||
BR2_TARGET_ROOTFS_EXT2=y
|
||||
BR2_TARGET_ROOTFS_EXT2_4=y
|
||||
# BR2_TARGET_ROOTFS_TAR is not set
|
||||
BR2_TARGET_OPENSBI=y
|
||||
BR2_TARGET_OPENSBI_CUSTOM_TARBALL=y
|
||||
BR2_TARGET_OPENSBI_CUSTOM_TARBALL_LOCATION="$(call github,smaeul,opensbi,b9125c6f8909d1cc0417795737fc13cb6297ff11)/opensbi-b9125c6f8909d1cc0417795737fc13cb6297ff11.tar.gz"
|
||||
BR2_TARGET_OPENSBI_PLAT="generic"
|
||||
# BR2_TARGET_OPENSBI_INSTALL_JUMP_IMG is not set
|
||||
BR2_TARGET_SUN20I_D1_SPL=y
|
||||
BR2_TARGET_UBOOT=y
|
||||
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
|
||||
BR2_TARGET_UBOOT_CUSTOM_TARBALL=y
|
||||
BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,smaeul,u-boot,62392d3b8a624a80646c1876533336f90140088d)/uboot-62392d3b8a624a80646c1876533336f90140088d.tar.gz"
|
||||
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nezha"
|
||||
BR2_TARGET_UBOOT_NEEDS_DTC=y
|
||||
BR2_TARGET_UBOOT_NEEDS_OPENSBI=y
|
||||
# BR2_TARGET_UBOOT_FORMAT_BIN is not set
|
||||
BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
|
||||
BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.toc1"
|
||||
BR2_PACKAGE_HOST_GENIMAGE=y
|
Loading…
Reference in New Issue
Block a user