From patchwork Thu Mar 18 15:43:32 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "D. Olsson" X-Patchwork-Id: 1455330 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=busybox.net (client-ip=2605:bc80:3010::138; helo=smtp1.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=senzilla.io header.i=@senzilla.io header.a=rsa-sha256 header.s=protonmail3 header.b=njJTHR/C; dkim-atps=neutral Received: from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4F1WgQ0ghSz9sVw for ; Fri, 19 Mar 2021 02:49:54 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 82B2483415; Thu, 18 Mar 2021 15:49:51 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OLWLfqFgCsph; Thu, 18 Mar 2021 15:49:50 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp1.osuosl.org (Postfix) with ESMTP id 8794683478; Thu, 18 Mar 2021 15:49:49 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by ash.osuosl.org (Postfix) with ESMTP id 62A361BF9B4 for ; Thu, 18 Mar 2021 15:49:34 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 5F32D43291 for ; Thu, 18 Mar 2021 15:49:34 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp2.osuosl.org (amavisd-new); dkim=pass (2048-bit key) header.d=senzilla.io Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BG80ZA6VaJJk for ; Thu, 18 Mar 2021 15:49:32 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.8.0 Received: from mail-41104.protonmail.ch (mail-41104.protonmail.ch [185.70.41.104]) by smtp2.osuosl.org (Postfix) with ESMTPS id B06E84328B for ; Thu, 18 Mar 2021 15:49:31 +0000 (UTC) Received: from mail-02.mail-europe.com (mail-02.mail-europe.com [51.89.119.103]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by mail-41104.protonmail.ch (Postfix) with ESMTPS id 4F1WXQ2J1sz4xTff for ; Thu, 18 Mar 2021 15:43:50 +0000 (UTC) Authentication-Results: mail-41104.protonmail.ch; dkim=pass (2048-bit key) header.d=senzilla.io header.i=@senzilla.io header.b="njJTHR/C" Date: Thu, 18 Mar 2021 15:43:32 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=senzilla.io; s=protonmail3; t=1616082221; bh=jFVMHO0iWHKU3kgHqyWqHasdo3I/K8dj+LGhQSYMNbQ=; h=Date:To:From:Cc:Reply-To:Subject:From; b=njJTHR/CLLSDp9+Vv+Sm2HCyPZ6PTG2viHPO0X9OEBEJn4M2s4vYmoGxIBZb3eNrm 34OG9ch8HMc5eGiRpm385LnpZzeLUUP3yC9AW+WfWaKV6U90mFfvUW2uj1iU2fvBal m0ToqSwpcHhgriX3GlSDvN0QLuBTcrxugsarMZHVzB70blXpn1roMTs6CSStu66qUs F3R2e6hmudUWCwh+4dodK7kSWNhD6Hh+R7PkkU6SdNRKWE6tF9lB4+snrM5oRfoYz/ 6Q7WJbhsKODz5Px8JKu+7sIE06yFYuMul+HNHxyfA8l15NAlGUQHB2OQqJ30ptDKW9 uwuYYCkTg+VZA== To: buildroot@buildroot.org Message-ID: MIME-Version: 1.0 Subject: [Buildroot] [PATCH v4 09/10] configs/solidrun_macchiatobin_efi_defconfig: EFI config for MacchiatoBin 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: , From: Dick Olsson via buildroot Reply-To: Dick Olsson Cc: Dick Olsson Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" This introduces an alternative board build for the MacchiatoBin based on EDK2 (UEFI) firmware loaded as BL33 by ARM Trusted Firmware. Signed-off-by: Dick Olsson --- Revision 4: * Renamed post-image.sh to assemble-flash-images * Updated to Linux LTS kernel 5.10 * Added startup.nsh for auto-booting from the EFI shell Signed-off-by: Dick Olsson --- .../macchiatobin-efi/assemble-flash-images | 14 +++ board/solidrun/macchiatobin-efi/genimage.cfg | 24 +++++ .../solidrun/macchiatobin-efi/linux.fragment | 3 + board/solidrun/macchiatobin-efi/readme.txt | 90 +++++++++++++++++++ board/solidrun/macchiatobin-efi/startup.nsh | 1 + configs/solidrun_macchiatobin_efi_defconfig | 25 ++++++ 6 files changed, 157 insertions(+) create mode 100755 board/solidrun/macchiatobin-efi/assemble-flash-images create mode 100644 board/solidrun/macchiatobin-efi/genimage.cfg create mode 100644 board/solidrun/macchiatobin-efi/linux.fragment create mode 100644 board/solidrun/macchiatobin-efi/readme.txt create mode 100644 board/solidrun/macchiatobin-efi/startup.nsh create mode 100644 configs/solidrun_macchiatobin_efi_defconfig diff --git a/board/solidrun/macchiatobin-efi/assemble-flash-images b/board/solidrun/macchiatobin-efi/assemble-flash-images new file mode 100755 index 0000000000..22a86e1f6b --- /dev/null +++ b/board/solidrun/macchiatobin-efi/assemble-flash-images @@ -0,0 +1,14 @@ +#!/bin/bash + +set -e + +BOARD_DIR="$(dirname $0)" +EFI_PART=${BINARIES_DIR}/efi-part +EFI_DIR=${EFI_PART}/EFI/BOOT + +# Create the EFI system partition with startup script and kernel +# executable according to the UEFI standard. +rm -rf ${EFI_DIR} +mkdir -p ${EFI_DIR} +cp ${BOARD_DIR}/startup.nsh ${EFI_PART}/ +ln -sf ${BINARIES_DIR}/Image ${EFI_DIR}/bootaa64.efi diff --git a/board/solidrun/macchiatobin-efi/genimage.cfg b/board/solidrun/macchiatobin-efi/genimage.cfg new file mode 100644 index 0000000000..5d8457e4ac --- /dev/null +++ b/board/solidrun/macchiatobin-efi/genimage.cfg @@ -0,0 +1,24 @@ +image efi-part.vfat { + vfat { + file EFI { + image = "efi-part/EFI" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + gpt = true + } + + partition boot { + partition-type = 0xEF + image = "efi-part.vfat" + } + + partition root { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/board/solidrun/macchiatobin-efi/linux.fragment b/board/solidrun/macchiatobin-efi/linux.fragment new file mode 100644 index 0000000000..29fd630626 --- /dev/null +++ b/board/solidrun/macchiatobin-efi/linux.fragment @@ -0,0 +1,3 @@ +CONFIG_MARVELL_PHY=y +CONFIG_MARVELL_10G_PHY=y +CONFIG_SFP=y diff --git a/board/solidrun/macchiatobin-efi/readme.txt b/board/solidrun/macchiatobin-efi/readme.txt new file mode 100644 index 0000000000..b9794dd3d4 --- /dev/null +++ b/board/solidrun/macchiatobin-efi/readme.txt @@ -0,0 +1,90 @@ +Intro +===== + +This is the board support for MacchiatoBin with a more modern firmware stack +compared to the original build with board/solidrun/macchiatobin. + +The goal with this default configuration is to provide a build as close to +ARM Server Base Boot Requirement (SBBR) as possible. This gives us the +following benefits: + + - The firmware is built and flashed separately from the OS image + - Therefore, the board will boot with any standard Aarch64 distribution image + - UEFI provides a more standardized firmware interface + +How to build +============ + +The default configuration provides the following stack: + + - ARM Trusted Firmware (mainline) + - EDK2 UEFI firmware (mainline) + - Linux 5.9 (mainline) + + $ make solidrun_macchiatobin_efi_defconfig + $ make + +The next step will depend on whether you have U-Boot or UEFI flashed on the +board. + +How to flash the firmware from U-Boot +===================================== + +In this example we will assume that the board has U-Boot flashed on it. We will +flash the new UEFI firmware from the U-Boot console to the SPI flash, using +the "bubt" (Burn ATF) command. + +Once the build process is finished you will have an image called +"flash-image.bin" in the output/images/ directory. + +First, format a USB drive with an EXT4 partition and copy the "flash-image.bin" +file onto the USB drive. + +Second, attach to the serial console[1], insert the USB drive into the board, +boot the board and enter the U-Boot console. On the U-Boot console enter the +following commands: + + usb start + bubt flash-image.bin spi usb + +Lastly, unplug the USB drive and reboot the board. The board will now +boot with the newly flashed UEFI firmware. + +How to flash the firmware from UEFI +=================================== + +In this example we will assume that the board has UEFI flashed on it. We will +flash the new UEFI firmware from the old UEFI console to the SPI flash, using +the "fupdate" command. + +First, format a USB drive with an FAT partition and copy the "flash-image.bin" +file onto the USB drive. + +Second, attach to the serial console[1], insert the USB drive into the board, +boot the board and enter the UEFI shell. In the UEFI shell, find what file +system your USB drive got mapped to by using the "map" and "ls" commands. +Then enter this command (assuming your USB drive is on "FS0"): + + fupdate FS0:\flash-image.bin spi + +Lastly, unplug the USB drive and reboot the board. The board will now +boot with the newly flashed UEFI firmware. + +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. This image only contains the Linux kernel and +the rest of the operating system. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX bs=1M conv=fsync + $ sudo sync + +Plug in the SD card into the board and boot. + +Note that because the board is now using UEFI firmware, the board will also +boot any other standard Aarch64 distribution image. + +[1]: http://wiki.espressobin.net/tiki-index.php?page=Quick+User+Guide diff --git a/board/solidrun/macchiatobin-efi/startup.nsh b/board/solidrun/macchiatobin-efi/startup.nsh new file mode 100644 index 0000000000..79c00ce65c --- /dev/null +++ b/board/solidrun/macchiatobin-efi/startup.nsh @@ -0,0 +1 @@ +FS0:\EFI\BOOT\bootaa64.efi console=ttyS0,115200n8 root=/dev/mmcblk1p2 rootwait diff --git a/configs/solidrun_macchiatobin_efi_defconfig b/configs/solidrun_macchiatobin_efi_defconfig new file mode 100644 index 0000000000..a71b5fa322 --- /dev/null +++ b/configs/solidrun_macchiatobin_efi_defconfig @@ -0,0 +1,25 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_10=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/solidrun/macchiatobin-efi/assemble-flash-images support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/solidrun/macchiatobin-efi/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.2" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/solidrun/macchiatobin-efi/linux.fragment" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="200M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="a80x0_mcbin" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_EDK2_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_TARGETS="mrvl_flash" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="USE_COHERENT_MEM=0" +BR2_TARGET_BINARIES_MARVELL=y +BR2_TARGET_EDK2=y +BR2_TARGET_EDK2_PLATFORM_SOLIDRUN_ARMADA80X0MCBIN=y +BR2_TARGET_MV_DDR_MARVELL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y