boot/sun20i-d1-spl: new package
Subsystems (2)
PATCH v2 1/2 boot/sun20i-d1-spl: new package
U-Boot does not yet have SPL code to initialize the DDR controller on the Allwinner D1 - So instead package the sun20i-d1-spl bootloader, which is based on boot0 from the Allwinner BSP with some modifications to build it separately from the BSP and boot mainline U-Boot as explained on the linux-sunxi wiki:
https://linux-sunxi.org/Allwinner_Nezha
---
Changes since v1:
- None
DEVELOPERS | 1 +
boot/Config.in | 1 + boot/sun20i-d1-spl/Config.in | 8 ++++++++ boot/sun20i-d1-spl/sun20i-d1-spl.hash | 2 ++ boot/sun20i-d1-spl/sun20i-d1-spl.mk | 23 +++++++++++++++++++++++ 5 files changed, 35 insertions(+) create mode 100644 boot/sun20i-d1-spl/Config.in create mode 100644 boot/sun20i-d1-spl/sun20i-d1-spl.hash create mode 100644 boot/sun20i-d1-spl/sun20i-d1-spl.mk
DEVELOPERS +1 -0
@@ -2112,6 +2112,7 @@ F: board/orangepi/ F: board/pandaboard/ F: board/roseapplepi/ F: boot/shim/ +F: boot/sun20i-d1-spl/ F: configs/avenger96_defconfig F: configs/beagleboneai_defconfig F: configs/lafrite_defconfig
boot/Config.in +1 -0
@@ -20,6 +20,7 @@ source "boot/optee-os/Config.in" source "boot/opensbi/Config.in" source "boot/s500-bootloader/Config.in" source "boot/shim/Config.in" +source "boot/sun20i-d1-spl/Config.in" source "boot/syslinux/Config.in" source "boot/uboot/Config.in" source "boot/vexpress-firmware/Config.in"
boot/sun20i-d1-spl/Config.in new file +8 -0
@@ -0,0 +1,8 @@ +config BR2_TARGET_SUN20I_D1_SPL + bool "sun20-d1-spl" + depends on BR2_RISCV_64 + help + Allwinner D1 boot0 code with modifications to use as U-Boot + SPL. + + https://github.com/smaeul/sun20i_d1_spl
boot/sun20i-d1-spl/sun20i-d1-spl.hash new file +2 -0
@@ -0,0 +1,2 @@ +# Locally computed +sha256 69063601239a7254fb72e486b138d88a6f2b5c645b24cdfe9792123f975d4a8f sun20i-d1-spl-771192d0b3737798d7feca87263c8fa74a449787.tar.gz
boot/sun20i-d1-spl/sun20i-d1-spl.mk new file +23 -0
@@ -0,0 +1,23 @@ +################################################################################ +# +# sun20i-d1-spl +# +################################################################################ + +# Commit on the 'mainline' branch +SUN20I_D1_SPL_VERSION = 771192d0b3737798d7feca87263c8fa74a449787 +SUN20I_D1_SPL_SITE = $(call github,smaeul,sun20i_d1_spl,$(SUN20I_D1_SPL_VERSION)) +SUN20I_D1_SPL_INSTALL_TARGET = NO +SUN20I_D1_SPL_INSTALL_IMAGES = YES +SUN20I_D1_SPL_LICENSE = GPL-2.0+ + +define SUN20I_D1_SPL_BUILD_CMDS + $(MAKE) -C $(@D) CROSS_COMPILE="$(TARGET_CROSS)" p=sun20iw1p1 mmc +endef + +define SUN20I_D1_SPL_INSTALL_IMAGES_CMDS + $(INSTALL) -D -m 0644 $(@D)/nboot/boot0_sdcard_sun20iw1p1.bin \ + $(BINARIES_DIR)/boot0_sdcard_sun20iw1p1.bin +endef + +$(eval $(generic-package))
Signature · 6 lines
2.20.1 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 2/2 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.
---
Changes since v1:
- Use github macro/tarballs for linux/opensbi/u-boot
- Use rootfs overlay for extlinux.conf
- Use kilobytes (K) for offsets in genimage.cfg
DEVELOPERS | 2 + board/nezha/genimage.cfg | 37 +++++++++++++ .../nezha/overlay/boot/extlinux/extlinux.conf | 4 ++ ...un20i-d1.dtsi-adjust-plic-compatible.patch | 36 +++++++++++++ ...pport-building-u-boot.toc1-for-nezda.patch | 54 +++++++++++++++++++ board/nezha/readme.txt | 24 +++++++++ configs/nezha_defconfig | 33 ++++++++++++ 7 files changed, 190 insertions(+) create mode 100644 board/nezha/genimage.cfg create mode 100644 board/nezha/overlay/boot/extlinux/extlinux.conf 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 100644 board/nezha/readme.txt create mode 100644 configs/nezha_defconfig
DEVELOPERS +2 -0
@@ -2105,6 +2105,7 @@ N: Peter Korsgaard <[email protected]> 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
board/nezha/genimage.cfg new file +37 -0
@@ -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 + } +}
board/nezha/overlay/boot/extlinux/extlinux.conf new file +4 -0
@@ -0,0 +1,4 @@ +label linux + kernel /boot/Image + devicetree /boot/sun20i-d1-nezha.dtb + append console=ttyS0,115200 root=/dev/mmcblk0p1 ro rootwait
board/nezha/patches/uboot/0001-arch-riscv-dts-sun20i-d1.dtsi-adjust-plic-compatible.patch new file +36 -0
@@ -0,0 +1,36 @@ +From 99cf8f37ceb1def9e7bbaccc395cf2275723e03d Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard <[email protected]> +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 <[email protected]> +--- + 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 +
board/nezha/patches/uboot/0002-Makefile-HACK-Support-building-u-boot.toc1-for-nezda.patch new file +54 -0
54 lines not on this page · raw message
board/nezha/readme.txt new file +24 -0
@@ -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.
configs/nezha_defconfig new file +33 -0
@@ -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
Signature · 6 lines
2.20.1 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH v2 2/2] configs/nezha_defconfig: new defconfig
Quoted 20 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Peter" == Peter Korsgaard <[email protected]> writes:
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.
Quoted 6 lines
Signed-off-by Peter Korsgaard <[email protected]>---
Changes since v1:
- Use github macro/tarballs for linux/opensbi/u-boot
- Use rootfs overlay for extlinux.conf
- Use kilobytes (K) for offsets in genimage.cfg
Committed, thanks.
Signature · 5 lines
Bye, Peter Korsgaard _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Quoted 8 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Peter" == Peter Korsgaard <[email protected]> writes:
U-Boot does not yet have SPL code to initialize the DDR controller on the Allwinner D1 - So instead package the sun20i-d1-spl bootloader, which is based on boot0 from the Allwinner BSP with some modifications to build it separately from the BSP and boot mainline U-Boot as explained on the linux-sunxi wiki:
Quoted 6 lines
https://linux-sunxi.org/Allwinner_Nezha
Signed-off-by Peter Korsgaard <[email protected]>---
Changes since v1:
- None
Committed, thanks.
Signature · 5 lines
Bye, Peter Korsgaard _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot