diff --git a/board/sifive/hifive-unmatched/boot.cmd b/board/sifive/hifive-unmatched/boot.cmd new file mode 100644 index 0000000000..3f7b1d9ce3 --- /dev/null +++ b/board/sifive/hifive-unmatched/boot.cmd @@ -0,0 +1,4 @@ +setenv bootargs earlycon=sbi root=/dev/mmcblk0p3 rootwait +load mmc 0:3 ${kernel_addr_r} boot/Image +load mmc 0:3 ${fdt_addr_r} boot/hifive-unmatched-a00.dtb +booti ${kernel_addr_r} - ${fdt_addr_r} diff --git a/board/sifive/hifive-unmatched/patches/linux-headers/linux-headers.hash b/board/sifive/hifive-unmatched/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/sifive/hifive-unmatched/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/sifive/hifive-unmatched/patches/linux/linux.hash b/board/sifive/hifive-unmatched/patches/linux/linux.hash new file mode 100644 index 0000000000..b356207dc4 --- /dev/null +++ b/board/sifive/hifive-unmatched/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc +sha256 230e89b07b0ab82e74f07ecc1bee3105dca81d0ef4a97f900929c407249b6ac7 linux-6.12.20.tar.xz diff --git a/board/sifive/hifive-unmatched/patches/opensbi/opensbi.hash b/board/sifive/hifive-unmatched/patches/opensbi/opensbi.hash new file mode 100644 index 0000000000..1408f547b8 --- /dev/null +++ b/board/sifive/hifive-unmatched/patches/opensbi/opensbi.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 8fcbce598a73acc2c7f7d5607d46b9d5107d3ecbede8f68f42631dcfc25ef2b2 opensbi-1.2.tar.gz diff --git a/board/sifive/hifive-unmatched/readme.txt b/board/sifive/hifive-unmatched/readme.txt new file mode 100644 index 0000000000..0a4ebcd2f1 --- /dev/null +++ b/board/sifive/hifive-unmatched/readme.txt @@ -0,0 +1,100 @@ +SiFive HiFive Unmatched +======================= + +This file describes how to use the pre-defined Buildroot +configuration for the SiFive HiFive Unmatched board. + +Further information about the HiFive Unmatched board can be found +at https://www.sifive.com/boards/hifive-unmatched + +Building +======== + +Configure Buildroot using the default board configuration: + + $ make hifive_unmatched_defconfig + +Customise the build as necessary: + + $ make menuconfig + +Start the build: + + $ make + +Result of the build +=================== + +Once the build has finished you will have the following files: + + output/images/ + +-- boot.scr + +-- fw_dynamic.bin + +-- fw_dynamic.elf + +-- fw_jump.bin + +-- fw_jump.elf + +-- hifive-unmatched-a00.dtb + +-- Image + +-- rootfs.cpio + +-- rootfs.ext2 + +-- rootfs.ext4 + +-- rootfs.tar + +-- sdcard.img + +-- u-boot.bin + +-- u-boot.itb + +-- u-boot-spl.bin + + +Creating a bootable SD card with genimage +========================================= + +By default Buildroot builds a SD card image for you. All you need to do +is dd the image to your SD card, which can be done with the following +command on your development host: + + $ sudo dd if=output/images/sdcard.img of=/dev/sdb bs=4096 + +The above example command assumes the SD card is accessed via a USB card +reader and shows up as /dev/sdb on the host. Adjust it accordingly per +your actual setup. + +Booting the SD card on the board +================================ + +Make sure that the all DIP switches are set to the off position for +default boot mode (MSEL mode = 1011), insert the SD card and power +up the board. + +Connect the USB cable and open minicom (/dev/ttyUSB1, 115200, 8N1). + +See the 'SiFive HiFive Unmatched Getting Started Guide' for +more details (https://www.sifive.com/documentation). + +You will get a warning reported by fdisk when you examine the SD card. +This is because the genimage_sdcard.cfg file doesn't specify the SD card +size (as people will naturally have different sized cards), so the +secondary GPT header is placed after the rootfs rather than at the end +of the disk where it is expected to be. + +You will see something like this at boot time: + +[ 0.989458] mmc0: host does not support reading read-only switch, assuming write-enable +[ 0.996772] mmc0: new SDHC card on SPI +[ 1.001634] mmcblk0: mmc0:0000 SD8GB 7.28 GiB +[ 1.038079] GPT:Primary header thinks Alt. header is not at the end of the disk. +[ 1.044759] GPT:52389 != 15264767 +[ 1.048051] GPT:Alternate GPT header not at the end of the disk. +[ 1.054015] GPT:52389 != 15264767 +[ 1.057323] GPT: Use GNU Parted to correct GPT errors. +[ 1.062479] mmcblk0: p1 p2 p3 + + +Testing under QEMU +================== + +The SD card image can be tested using QEMU: + +$ qemu-system-riscv64 -M sifive_u,msel=11 -smp 5 -m 8G \ + -display none -serial stdio -nic user \ + -bios output/images/u-boot-spl.bin \ + -drive file=output/images/sdcard.img,if=sd diff --git a/configs/hifive_unmatched_defconfig b/configs/hifive_unmatched_defconfig new file mode 100644 index 0000000000..0b63ce15ff --- /dev/null +++ b/configs/hifive_unmatched_defconfig @@ -0,0 +1,47 @@ +BR2_riscv=y +BR2_riscv_custom=y +BR2_RISCV_ISA_RVM=y +BR2_RISCV_ISA_RVA=y +BR2_RISCV_ISA_RVF=y +BR2_RISCV_ISA_RVD=y +BR2_RISCV_ISA_RVC=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_12=y +BR2_GLOBAL_PATCH_DIR="board/sifive/hifive-unmatched/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_TARGET_GENERIC_GETTY_PORT="ttySIF0" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/sifive/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/sifive/common/genimage_sdcard.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.20" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/sifive/common/linux.config.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sifive/hifive-unmatched-a00" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION=y +BR2_TARGET_OPENSBI_CUSTOM_VERSION_VALUE="1.2" +BR2_TARGET_OPENSBI_PLAT="generic" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2025.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sifive_unmatched" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_NEEDS_GNUTLS=y +BR2_TARGET_UBOOT_NEEDS_OPENSBI=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/sifive/hifive-unmatched/boot.cmd"