mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-09-10 08:14:09 -09:00
configs/arm_fvp_ebbr: new defconfig
Add a defconfig to build an AArch64 U-Boot based firmware implementing the subset of UEFI defined by EBBR[1], as well as a Linux OS disk image booting with UEFI, to run on the Arm A-Profile Base RevC AEM FVP. The generated firmware binaries can also be used to run another OS supporting the EBBR specification. [1]: https://github.com/ARM-software/ebbr Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
committed by
Thomas Petazzoni
parent
654e359512
commit
54be84cb5f
@@ -3212,8 +3212,10 @@ F: package/nss-myhostname/
|
||||
F: package/utp_com/
|
||||
|
||||
N: Vincent Stehlé <vincent.stehle@arm.com>
|
||||
F: board/arm/fvp-ebbr/
|
||||
F: board/qemu/aarch64-ebbr/
|
||||
F: board/qemu/arm-ebbr/
|
||||
F: configs/arm_fvp_ebbr_defconfig
|
||||
F: configs/qemu_aarch64_ebbr_defconfig
|
||||
F: configs/qemu_arm_ebbr_defconfig
|
||||
F: package/edk2-non-osi/
|
||||
|
||||
15
board/arm/fvp-ebbr/fvp-config.txt
Normal file
15
board/arm/fvp-ebbr/fvp-config.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
# Arm A-Profile Base RevC AEM FVP config
|
||||
bp.secure_memory=1
|
||||
bp.ve_sysregs.exit_on_shutdown=1
|
||||
cache_state_modelled=0
|
||||
cluster0.NUM_CORES=4
|
||||
cluster0.cpu0.enable_crc32=1
|
||||
cluster0.cpu1.enable_crc32=1
|
||||
cluster0.cpu2.enable_crc32=1
|
||||
cluster0.cpu3.enable_crc32=1
|
||||
cluster1.NUM_CORES=4
|
||||
cluster1.cpu0.enable_crc32=1
|
||||
cluster1.cpu1.enable_crc32=1
|
||||
cluster1.cpu2.enable_crc32=1
|
||||
cluster1.cpu3.enable_crc32=1
|
||||
pctl.startup=0.0.0.0
|
||||
18
board/arm/fvp-ebbr/fvp-ebbr.dts
Normal file
18
board/arm/fvp-ebbr/fvp-ebbr.dts
Normal file
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
* Copyright (c) 2024, ARM Limited and Contributors. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#include "fvp-base-gicv3-psci-1t.dts"
|
||||
|
||||
/* The TF-A Devicetree does not have the OP-TEE node; let's add it. */
|
||||
|
||||
/ {
|
||||
firmware {
|
||||
optee {
|
||||
compatible = "linaro,optee-tz";
|
||||
method = "smc";
|
||||
};
|
||||
};
|
||||
};
|
||||
31
board/arm/fvp-ebbr/genimage.cfg
Normal file
31
board/arm/fvp-ebbr/genimage.cfg
Normal file
@@ -0,0 +1,31 @@
|
||||
image efi-part.vfat {
|
||||
vfat {
|
||||
file EFI {
|
||||
image = "efi-part/EFI"
|
||||
}
|
||||
|
||||
file Image {
|
||||
image = "Image"
|
||||
}
|
||||
}
|
||||
|
||||
size = 128M
|
||||
}
|
||||
|
||||
image disk.img {
|
||||
hdimage {
|
||||
partition-table-type = "gpt"
|
||||
}
|
||||
|
||||
partition boot {
|
||||
image = "efi-part.vfat"
|
||||
partition-type-uuid = U
|
||||
offset = 32K
|
||||
bootable = true
|
||||
}
|
||||
|
||||
partition root {
|
||||
partition-type-uuid = b921b045-1df0-41c3-af44-4c6f280d3fae
|
||||
image = "rootfs.ext2"
|
||||
}
|
||||
}
|
||||
6
board/arm/fvp-ebbr/grub.cfg
Normal file
6
board/arm/fvp-ebbr/grub.cfg
Normal file
@@ -0,0 +1,6 @@
|
||||
set default="0"
|
||||
set timeout="5"
|
||||
|
||||
menuentry "Buildroot" {
|
||||
linux /Image root=PARTLABEL=root rootwait
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
From 8c30a0c7fe0162de0618b26fb34cc91ea582e5f7 Mon Sep 17 00:00:00 2001
|
||||
From: Debbie Martin <Debbie.Martin@arm.com>
|
||||
Date: Wed, 27 Sep 2023 18:05:26 +0100
|
||||
Subject: [PATCH] feat(fvp): add stdout-path
|
||||
|
||||
Add stdout-path to the fvp-base devicetree to be passed to BL33 (U-Boot)
|
||||
and then to the Linux kernel to be compliant to Arm SystemReady IR:
|
||||
https://developer.arm.com/documentation/DUI1101/2-0/
|
||||
Configure-U-Boot-for-SystemReady/Adapt-the-Devicetree
|
||||
|
||||
This has been tested by booting fvp-base to Linux and ensuring the
|
||||
console is accessible.
|
||||
|
||||
Change-Id: Iae98630f18f735ce344c1158f41f358c2a49eeb6
|
||||
Signed-off-by: Diego Sueiro <Diego.Sueiro@arm.com>
|
||||
Signed-off-by: Debbie Martin <Debbie.Martin@arm.com>
|
||||
Upstream: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/+/8c30a0c7fe0162de0618b26fb34cc91ea582e5f7%5E!/
|
||||
Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com>
|
||||
---
|
||||
fdts/fvp-base-psci-common.dtsi | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/fdts/fvp-base-psci-common.dtsi b/fdts/fvp-base-psci-common.dtsi
|
||||
index 79cf37d3b0..ff31ba7616 100644
|
||||
--- a/fdts/fvp-base-psci-common.dtsi
|
||||
+++ b/fdts/fvp-base-psci-common.dtsi
|
||||
@@ -27,11 +27,12 @@
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
+ chosen {
|
||||
+ stdout-path = "serial0:115200n8";
|
||||
#if (ENABLE_RME == 1)
|
||||
- chosen { bootargs = "console=ttyAMA0 earlycon=pl011,0x1c090000 root=/dev/vda ip=on";};
|
||||
-#else
|
||||
- chosen {};
|
||||
+ bootargs = "console=ttyAMA0 earlycon=pl011,0x1c090000 root=/dev/vda ip=on";
|
||||
#endif
|
||||
+ };
|
||||
|
||||
aliases {
|
||||
serial0 = &v2m_serial0;
|
||||
--
|
||||
2.43.0
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
# Locally calculated
|
||||
sha256 2e18b881ada9198173238cca80086c787b1fa3f698944bde1743142823fc511c arm-trusted-firmware-v2.10.tar.gz
|
||||
1
board/arm/fvp-ebbr/patches/linux-headers/linux-headers.hash
Symbolic link
1
board/arm/fvp-ebbr/patches/linux-headers/linux-headers.hash
Symbolic link
@@ -0,0 +1 @@
|
||||
../linux/linux.hash
|
||||
2
board/arm/fvp-ebbr/patches/linux/linux.hash
Normal file
2
board/arm/fvp-ebbr/patches/linux/linux.hash
Normal file
@@ -0,0 +1,2 @@
|
||||
# Locally calculated
|
||||
sha256 b78dcd09f6b725872a2c0c87a70a064b0fbbcccfe5ce60aa46c669934a9e28b6 linux-6.8.11.tar.xz
|
||||
2
board/arm/fvp-ebbr/patches/uboot/uboot.hash
Normal file
2
board/arm/fvp-ebbr/patches/uboot/uboot.hash
Normal file
@@ -0,0 +1,2 @@
|
||||
# Locally calculated
|
||||
sha256 077cf8ca283411103ad274a3724dacb5068ede824de749beff9c9e5b531b43ea u-boot-2024.07-rc3.tar.bz2
|
||||
7
board/arm/fvp-ebbr/post-image.sh
Executable file
7
board/arm/fvp-ebbr/post-image.sh
Executable file
@@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
BOARD_DIR=$(dirname "$0")
|
||||
|
||||
# Override the default GRUB configuration file with our own.
|
||||
cp -f "${BOARD_DIR}/grub.cfg" "${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg"
|
||||
73
board/arm/fvp-ebbr/readme.txt
Normal file
73
board/arm/fvp-ebbr/readme.txt
Normal file
@@ -0,0 +1,73 @@
|
||||
Introduction
|
||||
============
|
||||
|
||||
The arm_fvp_ebbr_defconfig is meant to illustrate some aspects of the Arm EBBR
|
||||
specification[1] and the Arm SystemReady IR[2] compliance program.
|
||||
It allows building an AArch64 U-Boot based firmware implementing the subset of
|
||||
UEFI defined by EBBR, as well as a Linux OS disk image booting with UEFI, to run
|
||||
on the Arm A-Profile Base RevC AEM FVP.
|
||||
|
||||
Building
|
||||
========
|
||||
|
||||
$ make arm_fvp_ebbr_defconfig
|
||||
$ make
|
||||
|
||||
Generated files under output/images:
|
||||
|
||||
* bl1.bin: A ROM image built from TF-A.
|
||||
* fip.bin: A firmware image comprising TF-A, OP-TEE and the U-Boot bootloader.
|
||||
* disk.img: An OS disk image comprising the GRUB bootloader, the Linux kernel
|
||||
and the root filesystem.
|
||||
|
||||
Running on the FVP
|
||||
==================
|
||||
|
||||
Download the FVP from one of the following sources, corresponding to your host
|
||||
computer:
|
||||
|
||||
- https://developer.arm.com/-/media/Files/downloads/ecosystem-models/FM_11_25/FVP_Base_RevC-2xAEMvA_11.25_15_Linux64.tgz
|
||||
- https://developer.arm.com/-/media/Files/downloads/ecosystem-models/FM_11_25/FVP_Base_RevC-2xAEMvA_11.25_15_Linux64_armv8l.tgz
|
||||
|
||||
The FVP will be located under one of the corresponding folders:
|
||||
|
||||
- Base_RevC_AEMvA_pkg/models/Linux64_GCC-9.3
|
||||
- Base_RevC_AEMvA_pkg/models/Linux64_armv8l_GCC-9.3
|
||||
|
||||
Run the simulation with:
|
||||
|
||||
FVP_Base_RevC-2xAEMvA \
|
||||
--config-file board/arm/fvp-ebbr/fvp-config.txt \
|
||||
-C bp.secureflashloader.fname="output/images/bl1.bin" \
|
||||
-C bp.flashloader0.fname="output/images/fip.bin" \
|
||||
-C bp.virtioblockdevice.image_path="output/images/disk.img"
|
||||
|
||||
The login prompt will appear in a new X terminal.
|
||||
|
||||
Using the EBBR firmware to run another OS on the FVP
|
||||
----------------------------------------------------
|
||||
|
||||
It is possible to use the generated firmware binaries to run another OS
|
||||
supporting the EBBR specification.
|
||||
|
||||
To run another OS on simulation using a live or pre-installed image, use the
|
||||
same FVP command line as for the generated OS but adapt the OS image path in the
|
||||
virtioblockdevice stanza.
|
||||
The image generated by the aarch64_efi_defconfig or the Arm ACS-IR images[3] are
|
||||
examples of pre-installed OS images.
|
||||
Linux distributions such as Debian, Fedora, openSUSE or Ubuntu provide a
|
||||
pre-installed OS image.
|
||||
|
||||
Miscellaneous
|
||||
=============
|
||||
|
||||
This configuration is inspired by the arm_foundationv8_defconfig, the
|
||||
qemu_aarch64_virt_defconfig and the Arm SystemReady IR IoT Integration, Test,
|
||||
and Certification Guide[4].
|
||||
|
||||
Firmware update, MMC and network are currently not supported.
|
||||
|
||||
[1]: https://github.com/ARM-software/ebbr
|
||||
[2]: https://developer.arm.com/Architectures/Arm%20SystemReady%20IR
|
||||
[3]: https://github.com/ARM-software/arm-systemready/tree/main/IR/prebuilt_images
|
||||
[4]: https://developer.arm.com/documentation/DUI1101/latest/
|
||||
49
board/arm/fvp-ebbr/u-boot.fragment
Normal file
49
board/arm/fvp-ebbr/u-boot.fragment
Normal file
@@ -0,0 +1,49 @@
|
||||
# CONFIG_USE_BOOTCOMMAND is not set
|
||||
CONFIG_BOOTCOMMAND="bootflow scan -lb"
|
||||
CONFIG_BOOTMETH_DISTRO=y
|
||||
CONFIG_BOOTM_EFI=y
|
||||
CONFIG_BOOTSTD_BOOTCOMMAND=y
|
||||
CONFIG_BOOTSTD_DEFAULTS=y
|
||||
CONFIG_BOOTSTD_FULL=y
|
||||
CONFIG_CMD_BOOTDEV=y
|
||||
CONFIG_CMD_BOOTEFI=y
|
||||
CONFIG_CMD_BOOTEFI_HELLO=y
|
||||
CONFIG_CMD_BOOTEFI_HELLO_COMPILE=y
|
||||
CONFIG_CMD_BOOTEFI_SELFTEST=y
|
||||
CONFIG_CMD_BOOTMETH=y
|
||||
CONFIG_CMD_DM=y
|
||||
CONFIG_CMD_EFIDEBUG=y
|
||||
CONFIG_CMD_EFI_VARIABLE_FILE_STORE=y
|
||||
CONFIG_CMD_GETTIME=y
|
||||
CONFIG_CMD_GPT=y
|
||||
CONFIG_CMD_NVEDIT_EFI=y
|
||||
CONFIG_CMD_RNG=y
|
||||
CONFIG_CMD_RTC=y
|
||||
CONFIG_CMD_TIME=y
|
||||
CONFIG_DM_RNG=y
|
||||
CONFIG_DM_RTC=y
|
||||
CONFIG_EFI_DEVICE_PATH_TO_TEXT=y
|
||||
CONFIG_EFI_GET_TIME=y
|
||||
CONFIG_EFI_HAVE_RUNTIME_RESET=y
|
||||
CONFIG_EFI_LOADER=y
|
||||
CONFIG_EFI_LOADER_HII=y
|
||||
CONFIG_EFI_MM_COMM_TEE=y
|
||||
CONFIG_EFI_PARTITION=y
|
||||
CONFIG_EFI_SECURE_BOOT=y
|
||||
CONFIG_EFI_SET_TIME=y
|
||||
CONFIG_EFI_UNICODE_CAPITALIZATION=y
|
||||
CONFIG_EFI_UNICODE_COLLATION_PROTOCOL2=y
|
||||
CONFIG_EFI_VARIABLE_FILE_STORE=y
|
||||
CONFIG_FAT_WRITE=y
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FS_FAT=y
|
||||
CONFIG_ISO_PARTITION=y
|
||||
CONFIG_MISC=y
|
||||
CONFIG_OF_CONTROL=y
|
||||
CONFIG_OF_LIBFDT=y
|
||||
CONFIG_OPTEE=y
|
||||
CONFIG_PARTITION_TYPE_GUID=y
|
||||
CONFIG_RNG_OPTEE=y
|
||||
CONFIG_TEE=y
|
||||
CONFIG_USE_BOOTCOMMAND=y
|
||||
CONFIG_VEXPRESS_CONFIG=y
|
||||
56
configs/arm_fvp_ebbr_defconfig
Normal file
56
configs/arm_fvp_ebbr_defconfig
Normal file
@@ -0,0 +1,56 @@
|
||||
# Architecture
|
||||
BR2_aarch64=y
|
||||
|
||||
# Image
|
||||
BR2_GLOBAL_PATCH_DIR="board/arm/fvp-ebbr/patches"
|
||||
BR2_DOWNLOAD_FORCE_CHECK_HASHES=y
|
||||
BR2_ROOTFS_POST_IMAGE_SCRIPT="board/arm/fvp-ebbr/post-image.sh support/scripts/genimage.sh"
|
||||
BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/arm/fvp-ebbr/genimage.cfg"
|
||||
|
||||
# Linux headers
|
||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_8=y
|
||||
|
||||
# Kernel
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.8.11"
|
||||
BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
|
||||
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
|
||||
|
||||
# Packages
|
||||
BR2_PACKAGE_OPTEE_CLIENT=y
|
||||
|
||||
# Filesystem
|
||||
BR2_TARGET_ROOTFS_EXT2=y
|
||||
BR2_TARGET_ROOTFS_EXT2_4=y
|
||||
BR2_TARGET_ROOTFS_EXT2_SIZE="200M"
|
||||
# BR2_TARGET_ROOTFS_TAR is not set
|
||||
|
||||
# Firmware and bootloader
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.10"
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="fvp"
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_DTS_PATH="board/arm/fvp-ebbr/fvp-ebbr.dts"
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="ARM_TSP_RAM_LOCATION=tdram FVP_DT_PREFIX=fvp-ebbr"
|
||||
BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC=y
|
||||
BR2_TARGET_GRUB2=y
|
||||
BR2_TARGET_OPTEE_OS=y
|
||||
BR2_TARGET_OPTEE_OS_NEEDS_DTC=y
|
||||
BR2_TARGET_OPTEE_OS_PLATFORM="vexpress-fvp"
|
||||
BR2_TARGET_OPTEE_OS_ADDITIONAL_VARIABLES="CFG_ARM_GICV3=y"
|
||||
BR2_TARGET_UBOOT=y
|
||||
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
|
||||
BR2_TARGET_UBOOT_CUSTOM_VERSION=y
|
||||
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.07-rc3"
|
||||
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="vexpress_fvp"
|
||||
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/arm/fvp-ebbr/u-boot.fragment"
|
||||
BR2_TARGET_UBOOT_NEEDS_OPENSSL=y
|
||||
|
||||
# Host tools
|
||||
BR2_PACKAGE_HOST_DOSFSTOOLS=y
|
||||
BR2_PACKAGE_HOST_GENIMAGE=y
|
||||
BR2_PACKAGE_HOST_MTOOLS=y
|
||||
Reference in New Issue
Block a user