From: Peter Korsgaard <peter@korsgaard.com>
To: buildroot@buildroot.org
Cc: samuel@sholland.org
Subject: [Buildroot] [PATCH 2/2] configs/nezha_defconfig: new defconfig
Date: Fri, 5 Nov 2021 13:38:47 +0100 [thread overview]
Message-ID: <20211105123848.6356-2-peter@korsgaard.com> (raw)
In-Reply-To: <20211105123848.6356-1-peter@korsgaard.com>
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>
---
DEVELOPERS | 2 +
board/nezha/extlinux.conf | 4 ++
board/nezha/genimage.cfg | 37 +++++++++++++
...un20i-d1.dtsi-adjust-plic-compatible.patch | 36 +++++++++++++
...pport-building-u-boot.toc1-for-nezda.patch | 54 +++++++++++++++++++
board/nezha/post-build.sh | 6 +++
board/nezha/readme.txt | 24 +++++++++
configs/nezha_defconfig | 36 +++++++++++++
8 files changed, 199 insertions(+)
create mode 100644 board/nezha/extlinux.conf
create mode 100644 board/nezha/genimage.cfg
create mode 100644 board/nezha/patches/uboot/0001-arch-riscv-dts-sun20i-d1.dtsi-adjust-plic-compatible.patch
create mode 100644 board/nezha/patches/uboot/0002-Makefile-HACK-Support-building-u-boot.toc1-for-nezda.patch
create mode 100755 board/nezha/post-build.sh
create mode 100644 board/nezha/readme.txt
create mode 100644 configs/nezha_defconfig
diff --git a/DEVELOPERS b/DEVELOPERS
index c378270bb7..50be4e2367 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2101,6 +2101,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/
@@ -2115,6 +2116,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
diff --git a/board/nezha/extlinux.conf b/board/nezha/extlinux.conf
new file mode 100644
index 0000000000..02232f4d16
--- /dev/null
+++ b/board/nezha/extlinux.conf
@@ -0,0 +1,4 @@
+label linux
+ kernel /boot/Image
+ devicetree /boot/sun20i-d1-nezha.dtb
+ append console=ttyS0,115200 root=/dev/mmcblk0p1 ro rootwait
diff --git a/board/nezha/genimage.cfg b/board/nezha/genimage.cfg
new file mode 100644
index 0000000000..bf99e00824
--- /dev/null
+++ b/board/nezha/genimage.cfg
@@ -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 = 8192
+ }
+
+ partition boot0-2 {
+ in-partition-table = "no"
+ image = "boot0_sdcard_sun20iw1p1.bin"
+ offset = 131072
+ }
+
+ partition u-boot-1 {
+ in-partition-table = "no"
+ image = "u-boot.toc1"
+ offset = 12582912
+ }
+
+ partition u-boot-2 {
+ in-partition-table = "no"
+ image = "u-boot.toc1"
+ offset = 16793600
+ }
+
+ partition rootfs {
+ partition-type = 0x83
+ image = "rootfs.ext4"
+ bootable = "true"
+ offset = 18M
+ }
+}
diff --git a/board/nezha/patches/uboot/0001-arch-riscv-dts-sun20i-d1.dtsi-adjust-plic-compatible.patch b/board/nezha/patches/uboot/0001-arch-riscv-dts-sun20i-d1.dtsi-adjust-plic-compatible.patch
new file mode 100644
index 0000000000..3524f44a61
--- /dev/null
+++ b/board/nezha/patches/uboot/0001-arch-riscv-dts-sun20i-d1.dtsi-adjust-plic-compatible.patch
@@ -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
+
diff --git a/board/nezha/patches/uboot/0002-Makefile-HACK-Support-building-u-boot.toc1-for-nezda.patch b/board/nezha/patches/uboot/0002-Makefile-HACK-Support-building-u-boot.toc1-for-nezda.patch
new file mode 100644
index 0000000000..6e89a921df
--- /dev/null
+++ b/board/nezha/patches/uboot/0002-Makefile-HACK-Support-building-u-boot.toc1-for-nezda.patch
@@ -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
+
diff --git a/board/nezha/post-build.sh b/board/nezha/post-build.sh
new file mode 100755
index 0000000000..9d38b13b84
--- /dev/null
+++ b/board/nezha/post-build.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+BOARD_DIR=$(dirname $0)
+
+# Bring the extlinux.conf file in
+install -D -m 0644 ${BOARD_DIR}/extlinux.conf \
+ ${TARGET_DIR}/boot/extlinux/extlinux.conf
diff --git a/board/nezha/readme.txt b/board/nezha/readme.txt
new file mode 100644
index 0000000000..fd4c6707de
--- /dev/null
+++ b/board/nezha/readme.txt
@@ -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.
diff --git a/configs/nezha_defconfig b/configs/nezha_defconfig
new file mode 100644
index 0000000000..f04404b9a4
--- /dev/null
+++ b/configs/nezha_defconfig
@@ -0,0 +1,36 @@
+BR2_riscv=y
+BR2_GLOBAL_PATCH_DIR="board/nezha/patches"
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_14=y
+BR2_ROOTFS_POST_BUILD_SCRIPT="board/nezha/post-build.sh"
+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_GIT=y
+BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/smaeul/linux.git"
+BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="012f5a3d01be6d44e32c74bb3637ec281790b297"
+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_GIT=y
+BR2_TARGET_OPENSBI_CUSTOM_REPO_URL="https://github.com/smaeul/opensbi"
+BR2_TARGET_OPENSBI_CUSTOM_REPO_VERSION="b9125c6f8909d1cc0417795737fc13cb6297ff11"
+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_GIT=y
+BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/smaeul/u-boot"
+BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="62392d3b8a624a80646c1876533336f90140088d"
+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
--
2.20.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
next prev parent reply other threads:[~2021-11-05 12:39 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-05 12:38 [Buildroot] [PATCH 1/2] boot/sun20i-d1-spl: new package Peter Korsgaard
2021-11-05 12:38 ` Peter Korsgaard [this message]
2021-11-05 13:10 ` [Buildroot] [PATCH 2/2] configs/nezha_defconfig: new defconfig Thomas Petazzoni
2021-11-05 13:26 ` Peter Korsgaard
2021-11-05 13:28 ` Giulio Benetti
2021-11-05 13:35 ` Peter Korsgaard
2021-11-05 13:52 ` Giulio Benetti
2021-11-05 14:30 ` Peter Korsgaard
2021-11-07 0:49 ` Giulio Benetti
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211105123848.6356-2-peter@korsgaard.com \
--to=peter@korsgaard.com \
--cc=buildroot@buildroot.org \
--cc=samuel@sholland.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox