From patchwork Mon Jul 8 21:53:53 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1129373 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.136; helo=silver.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="bfnAiVxS"; dkim-atps=neutral Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 45jK6S3cPsz9sN4 for ; Tue, 9 Jul 2019 07:56:48 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 6992E20357; Mon, 8 Jul 2019 21:56:46 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MvvQGtXMZVXC; Mon, 8 Jul 2019 21:56:42 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id D4DF62035D; Mon, 8 Jul 2019 21:56:42 +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 DCBAE1BF313 for ; Mon, 8 Jul 2019 21:56:40 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id D8730865FC for ; Mon, 8 Jul 2019 21:56:40 +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 DeNdnUstMfTm for ; Mon, 8 Jul 2019 21:56:38 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from esa6.hgst.iphmx.com (esa6.hgst.iphmx.com [216.71.154.45]) by whitealder.osuosl.org (Postfix) with ESMTPS id E45D086410 for ; Mon, 8 Jul 2019 21:56:37 +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=1562622998; x=1594158998; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=W2KhCHH7JI7wmA7uDKnzTtvpAxfuGI8tCVGuqzN3dQs=; b=bfnAiVxSy9hXFRaK2nnE8sjTO96w7bSE4yrkcABsMCMEo8KJBAKYjdS2 rIZ/XOKfs9poBJK1fDqlzjRMjeB8Jqu7frjL2P3MNBQa337coOSXCRAf5 30xZQAYGVIl/xs4PRz/KB4DtYpCzGkrsSIkh9BYX2ycG7xF/q0muAlBT3 qvela7d4ToHTmf8UmqnypnUl8M9JwtrijPc0jzlDOvtJ7RYZXn3hvcaJc ApJO235VT4ajSkkPI0ihIAK1BR2w1hXM7VQco5CM61QnfhVpfNuh1jM0w WM/PbuHzf4hRURd45Q3nGWuFJeYL6XkRxS4uJq9Tj969VdhxAoJ1ym0/W Q==; IronPort-SDR: 3RpN7RM6uXufBFuwrcMHr9sI1JpEr0ylvS8JMZOItsyLUltam1+msl9vI5ve2KBHTSK390IjND jKAePy3Grdkk/zGGnS15hJuuteuYdU7lXnzj+DfQRLBWoHhgMLCWkQucER0XDBcjnjcPun1YA9 KjBu7+2lBezyCbdrEDFzEdR/xbJBc2xtXVgG2YIoHLk5goxGfhdDpqS+hIR0QmfOhJhd/OPumw gtkDnsEIYtApwVCw91McXluHGXWHPFDmclQvi3FF+pXWju09oqqTL/JP5hm+5Bokk/J16fDR8h orA= X-IronPort-AV: E=Sophos;i="5.63,468,1557158400"; d="scan'208";a="114105406" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 09 Jul 2019 05:56:37 +0800 IronPort-SDR: Wut7wZAcml1ghi84HkzvKDrFt7aZrqLqIz3GpG+/93dDzQn2Tr+sEuyQJcANBhQ1WSNHkC0l23 Nx3N3g4l23LgMdIAoXwZCkNvh3me/pyAn0XD2osGVwlvrWfi6+qxJ/0NR6984YlD+diH/e82Be 7k6oToJHqzlwJb1sb5v9u27Q5yFq2KstpDTPKIlMZr5/a2nLEa77lBn9EyTgAIWtT4Pd1c+bq3 Ul6/WLNVO3r+2wxDflXoB5+V/ZLDequZDPHEj9WI7ExoWqtq+irWHJZz29cB6RCvZjmmf1WsE8 2E1EeW4fKpmAn7ePbckIOU9y Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP; 08 Jul 2019 14:55:25 -0700 IronPort-SDR: jZQTdbwXuD8V3h3MjsZ4KVCYUs6THO6M6mfSwFukhhnu/4Ry4yC4yLgre0SiUkB7RJe6A1ZpQi vhvJrXptvTAjCkhLYDYWB1QjSqX0DtUABfV57FnHyIruEbjSvx+VN+j7WVswvULk8Tu1LBrCSO gAr/r+doLDFf6Xi0OFoeJejl6dk4V0u8btfogP/093OUxVzyQQqR1hS75WUxDj1LUi1/2UWc+U iatWcBtuG5mSeNNjOa2KrmPMuDSUtC5KNKzLIqxd1QLjsMC2RWPKs9whZNcWfaEEiIxc/B5J1F llE= 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; 08 Jul 2019 14:56:37 -0700 From: Alistair Francis To: buildroot@buildroot.org Date: Mon, 8 Jul 2019 14:53:53 -0700 Message-Id: <20190708215353.9107-3-alistair.francis@wdc.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190708215353.9107-1-alistair.francis@wdc.com> References: <20190708215353.9107-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: mark.corbin@embecosm.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 e9c521f400..33b5cfd875 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