From patchwork Tue Jun 18 23:02:50 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1118383 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=busybox.net (client-ip=140.211.166.138; helo=whitealder.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="BW6izn1l"; dkim-atps=neutral Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 45T3l81SmYz9s9y for ; Wed, 19 Jun 2019 09:12:35 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id A82EC865D6; Tue, 18 Jun 2019 23:12:32 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id QyczMTPu+iQF; Tue, 18 Jun 2019 23:12:30 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by whitealder.osuosl.org (Postfix) with ESMTP id AB8018660D; Tue, 18 Jun 2019 23:12:30 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 614C01BF2CA for ; Tue, 18 Jun 2019 23:12:29 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 5E946865D6 for ; Tue, 18 Jun 2019 23:12:29 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7HpFNwUSKPtY for ; Tue, 18 Jun 2019 23:12:28 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from esa4.hgst.iphmx.com (esa4.hgst.iphmx.com [216.71.154.42]) by whitealder.osuosl.org (Postfix) with ESMTPS id 5E8128660D for ; Tue, 18 Jun 2019 23:12:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1560899548; x=1592435548; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=JVQSQkKGZNN2PDDTF79fG4QsOKeqRRtx8AfT7P3DjN0=; b=BW6izn1lhwmuYeu+LD7D3Obqtkw6eVjcEQzwx3CPtj5/qaJHnLGTCROe wGPRVJrbFsdNhpNkV2eXevnpcRUzNgcA0nitiOtZ9HvTY+ktToA/yjvSS uDmUEXKg055k/XmRBkq8C6CmW3b9BHxlvVmmsGX+MrcUbp1YoB9BMP5sd kxOAK0NRLkNl2z6o2IkwNJQ7vyttZdPhuRJ7F/DlfssTL/DMCfKZ8ROHq 8OugGY8oeUnI1l1ziK62XtYco3LG+8V/vE71PRRHbl8O77bR1bhfb57fY c4yXAzWk3MsIVm8AZBM6sPvsd6LEbu6Y0DlXab0RwEinShRpeuM3wVtO5 w==; X-IronPort-AV: E=Sophos;i="5.63,390,1557158400"; d="scan'208";a="110896466" Received: from uls-op-cesaip02.wdc.com (HELO uls-op-cesaep02.wdc.com) ([199.255.45.15]) by ob1.hgst.iphmx.com with ESMTP; 19 Jun 2019 07:05:23 +0800 IronPort-SDR: BX9ml/Pm6P7QAufzRUaPkgq40tqxXIV5S89X6q+2coYGm17TF+P6mWVsDeiPXUrKXwE+ziQCAU o4q+NwJFwmt79kEfvVd/ayP38mWxU6Cj4sK2+eoU0golLLCNda9OQh4Os+ZjYTx5ae0dMveZjx frVECwJXyDogRv0fVnG1QCufnhey0sRkKTCv4vyOg8Ah1lKp9cD1oMX3Y6mueelehDkMPyVEc+ ZXsmNxrAJpaL7MRz5+fN0qV6qYX/7hQsjmiH0ZJkT3vBTvNpLI+zB/f7Q6QpDhaS2S+7tchwdc gv7QE/S0KLT6V3yxfkNiqvVy Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep02.wdc.com with ESMTP; 18 Jun 2019 16:04:51 -0700 IronPort-SDR: mq93coOp6JYVbdLSeyz2xzZSSGHeNp3GkU7ZGyO/JpqBGdyx8AVLh1Sgv8wCEI/LJhlqnZCMGq pqqLaaONvYq33D31jz+rExs44ZNa+w71TH853eFzccSTPOp6OrCzehESX27jxGo9MnLUB5x9tw V1tnv3y24GWAWdN2t/9Tshnlv9cVgsRx+JgFIoBaDziOm5t/cYpYsFX6P05cqVWRcxVyYN2PrH TUvPoxkoFjA++AN7eZZvPgOMUvyCVD9atVp8Jrz0AyGwn7yzUHeacvS8khQsSxq2Sv71HuiU4p tAo= Received: from risc6-mainframe.sdcorp.global.sandisk.com (HELO risc6-mainframe.int.fusionio.com) ([10.196.157.140]) by uls-op-cesaip02.wdc.com with ESMTP; 18 Jun 2019 16:05:23 -0700 From: Alistair Francis To: buildroot@buildroot.org Date: Tue, 18 Jun 2019 16:02:50 -0700 Message-Id: <20190618230250.12539-2-alistair.francis@wdc.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190618230250.12539-1-alistair.francis@wdc.com> References: <20190618230250.12539-1-alistair.francis@wdc.com> MIME-Version: 1.0 Subject: [Buildroot] [PATCH 2/2] board/sifive: Add the HiFive Unleased X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, Alistair Francis Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" This patch adds support for the HiFive Unleashed board. This includes building the firmware, kernel and rootFS for the HiFive Unleased. This patch includes a post-image.sh script and genimage.cfg file used to generate a sdcard image that can be dd-ed to an SD card. Unfortunately this seems to create a corrupted GPT partition, so manual steps with sgdisk are also included which work. The manual steps are useful even when genimage works as users won't always need to flash the entire SD card. For example a kernel update will only require one partition being updated manually via dd instead of a full reflash. Signed-off-by: Alistair Francis --- DEVELOPERS | 2 + board/sifive/hifive_unleased/genimage.cfg | 17 ++++ .../hifive_unleased/linux.config.fragment | 16 ++++ board/sifive/hifive_unleased/post-image.sh | 9 ++ board/sifive/hifive_unleased/readme.txt | 93 +++++++++++++++++++ configs/hifive_unleashed_defconfig | 40 ++++++++ 6 files changed, 177 insertions(+) create mode 100644 board/sifive/hifive_unleased/genimage.cfg create mode 100644 board/sifive/hifive_unleased/linux.config.fragment create mode 100755 board/sifive/hifive_unleased/post-image.sh create mode 100644 board/sifive/hifive_unleased/readme.txt create mode 100644 configs/hifive_unleashed_defconfig diff --git a/DEVELOPERS b/DEVELOPERS index 62aacc1fd0..47b23d1d60 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -123,7 +123,9 @@ F: package/kvazaar/ F: package/v4l2loopback/ N: Alistair Francis +F: board/sifive/ F: boot/opensbi/ +F: configs/hifive_unleashed_defconfig F: package/xen/ N: Alvaro G. M diff --git a/board/sifive/hifive_unleased/genimage.cfg b/board/sifive/hifive_unleased/genimage.cfg new file mode 100644 index 0000000000..ed5323927e --- /dev/null +++ b/board/sifive/hifive_unleased/genimage.cfg @@ -0,0 +1,17 @@ +image sdcard.img { + hdimage { + gpt = true + } + + partition bootloader { + image = "fw_payload.bin" + offset = 2048 + size = 33554432 # 32MB + partition-uuid = 2E54B353-1271-4842-806F-E436D6AF6985 + } + + partition rootfs { + image = "rootfs.ext4" + partition-uuid = 0FC63DAF-8483-4772-8E79-3D69D8477DE4 + } +} diff --git a/board/sifive/hifive_unleased/linux.config.fragment b/board/sifive/hifive_unleased/linux.config.fragment new file mode 100644 index 0000000000..f4f384088a --- /dev/null +++ b/board/sifive/hifive_unleased/linux.config.fragment @@ -0,0 +1,16 @@ +CONFIG_HZ_100=y +CONFIG_CMDLINE="earlycon=sbi root=/dev/mmcblk0p2 rootwait" +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_SERIAL_SIFIVE=y +CONFIG_SERIAL_SIFIVE_CONSOLE=y +CONFIG_SPI=y +CONFIG_SPI_SIFIVE=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_SIFIVE=y +CONFIG_MMC=y +CONFIG_MMC_SPI=y +CONFIG_CLK_U54_PRCI=y +CONFIG_CLK_GEMGXL_MGMT=y +CONFIG_PWM=y +CONFIG_PWM_SIFIVE=y diff --git a/board/sifive/hifive_unleased/post-image.sh b/board/sifive/hifive_unleased/post-image.sh new file mode 100755 index 0000000000..2051ee49cb --- /dev/null +++ b/board/sifive/hifive_unleased/post-image.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +# Script to generate a SD card image for the HiFive Unleashed. + +# We need to make sure that this is updated +make opensbi-rebuild + +support/scripts/genimage.sh -c board/sifive/hifive_unleased/genimage.cfg + diff --git a/board/sifive/hifive_unleased/readme.txt b/board/sifive/hifive_unleased/readme.txt new file mode 100644 index 0000000000..a126fa92c4 --- /dev/null +++ b/board/sifive/hifive_unleased/readme.txt @@ -0,0 +1,93 @@ +SiFive HiFive Unleashed +======================= + +This file describes how to use the pre-defined Buildroot +configuration for the SiFive HiFive Unleashed board. + +Further information about the HiFive Unleashed board can be found +at https://www.sifive.com/boards/hifive-unleashed + +Building +======== + +Configure Buildroot using the default board configuration: + + $ make hifive_unleashed_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/ + +-- fw_jump.bin + +-- fw_jump.elf + +-- fw_payload.bin + +-- fw_payload.elf + +-- Image + +-- rootfs.ext2 + +-- rootfs.ext4 + +-- rootfs.tar + +-- sdcard.img + + +Creating a bootable SD card with genimage +========================================= + +At the current time the genimage utility used by Buildroot produces +corrupt GPT partition images. This is documented here for future use, +but at the time of writing does not work. + +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: + + $ sudo dd if=output/images/sdcard.img of=/dev/mmcblk0 bs=4096 + +Creating a bootable SD card with sgdisk +======================================= + +Below are manual instructions to setup the SD card. These should be +removed when genimage can be used instead. + +Create the partitions on the SD card: + + $ sudo sgdisk -g --clear \ + --new=1:2048:67583 \ + --change-name=1:bootloader \ + --typecode=1:2E54B353-1271-4842-806F-E436D6AF6985 \ + --new=2:264192: \ + --change-name=2:root \ + --typecode=2:0FC63DAF-8483-4772-8E79-3D69D8477DE4 \ + /dev/mmcblk0 + +The first partition will contain the bootloader and kernel +(fw_payload.bin). The second partition contains the Linux +filesystem. + +Copy the bootloader and kernel to the SD card: + + $ sudo dd if=output/images/fw_payload.bin of=/dev/mmcblk0p1 bs=4096 + +Copy the rootFS to the SD card: + + $ sudo dd if=output/images/rootfs.ext4 of=/dev/mmcblk0p2 bs=4096 + +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 = 1111), insert the SD card and power +up the board. + +Connect the USB cable and open minicom (/dev/ttyUSB1, 115200, 8N1). + +See the 'SiFive HiFive Unleashed Getting Started Guide' for +more details (https://www.sifive.com/documentation). diff --git a/configs/hifive_unleashed_defconfig b/configs/hifive_unleashed_defconfig new file mode 100644 index 0000000000..8a2a9303d9 --- /dev/null +++ b/configs/hifive_unleashed_defconfig @@ -0,0 +1,40 @@ +# Architecture +BR2_riscv=y +BR2_riscv_custom=y +BR2_RISCV_ISA_CUSTOM_RVM=y +BR2_RISCV_ISA_CUSTOM_RVF=y +BR2_RISCV_ISA_CUSTOM_RVD=y +BR2_RISCV_ISA_CUSTOM_RVC=y +BR2_RISCV_64=y +BR2_RISCV_ABI_LP64D=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttySIF0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/sifive/hifive_unleased/post-image.sh" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Linux headers same as kernel, a 5.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_1=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/alistair23/linux.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="hifive-unleashed-5.1" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/sifive/hifive_unleased/linux.config.fragment" +BR2_LINUX_KERNEL_IMAGE=y + +# Bootloader +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_USE_PLAT=y +BR2_TARGET_OPENSBI_PLAT="sifive/fu540" +BR2_TARGET_OPENSBI_LINUX_PAYLOAD=y + +# Host tools +BR2_PACKAGE_HOST_GENIMAGE=y