* [Buildroot] [PATCH next] configs/qemu_arm_ebbr: new defconfig
@ 2022-11-28 14:11 Vincent Stehlé
2023-01-30 21:55 ` Thomas Petazzoni via buildroot
0 siblings, 1 reply; 2+ messages in thread
From: Vincent Stehlé @ 2022-11-28 14:11 UTC (permalink / raw)
To: buildroot
Cc: Romain Naour, Giulio Benetti, Vincent Stehlé,
Etienne Carriere
Add a defconfig to build a 32b ARMv7-A 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 Qemu.
The generated firmware binary can also be used to install or run another OS
supporting the EBBR specification.
[1]: https://github.com/ARM-software/ebbr
Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com>
Cc: Romain Naour <romain.naour@gmail.com>
---
Hi,
This is for the "next" branch, please.
Giulio, Etienne, adding you in Cc: as you might be interested, but feel free to
ignore.
Best regards,
Vincent.
DEVELOPERS | 2 +
board/qemu/arm-ebbr/genimage.cfg | 31 +++++++++++++
board/qemu/arm-ebbr/grub.cfg | 6 +++
board/qemu/arm-ebbr/linux.fragment | 2 +
board/qemu/arm-ebbr/post-image.sh | 11 +++++
board/qemu/arm-ebbr/readme.txt | 71 +++++++++++++++++++++++++++++
board/qemu/arm-ebbr/u-boot.fragment | 35 ++++++++++++++
configs/qemu_arm_ebbr_defconfig | 57 +++++++++++++++++++++++
8 files changed, 215 insertions(+)
create mode 100644 board/qemu/arm-ebbr/genimage.cfg
create mode 100644 board/qemu/arm-ebbr/grub.cfg
create mode 100644 board/qemu/arm-ebbr/linux.fragment
create mode 100755 board/qemu/arm-ebbr/post-image.sh
create mode 100644 board/qemu/arm-ebbr/readme.txt
create mode 100644 board/qemu/arm-ebbr/u-boot.fragment
create mode 100644 configs/qemu_arm_ebbr_defconfig
diff --git a/DEVELOPERS b/DEVELOPERS
index 569d58407a5..3ab352a8495 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2946,7 +2946,9 @@ F: package/utp_com/
N: Vincent Stehlé <vincent.stehle@arm.com>
F: board/qemu/aarch64-ebbr/
+F: board/qemu/arm-ebbr/
F: configs/qemu_aarch64_ebbr_defconfig
+F: configs/qemu_arm_ebbr_defconfig
N: Vincent Stehlé <vincent.stehle@laposte.net>
F: board/bananapi/bananapi-m2-zero/
diff --git a/board/qemu/arm-ebbr/genimage.cfg b/board/qemu/arm-ebbr/genimage.cfg
new file mode 100644
index 00000000000..3d4c9cff1ad
--- /dev/null
+++ b/board/qemu/arm-ebbr/genimage.cfg
@@ -0,0 +1,31 @@
+image efi-part.vfat {
+ vfat {
+ file EFI {
+ image = "efi-part/EFI"
+ }
+
+ file zImage {
+ image = "zImage"
+ }
+ }
+
+ 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 = 69dad710-2ce4-4e3c-b16c-21a1d49abed3
+ image = "rootfs.ext2"
+ }
+}
diff --git a/board/qemu/arm-ebbr/grub.cfg b/board/qemu/arm-ebbr/grub.cfg
new file mode 100644
index 00000000000..ab3a6ec26b0
--- /dev/null
+++ b/board/qemu/arm-ebbr/grub.cfg
@@ -0,0 +1,6 @@
+set default="0"
+set timeout="5"
+
+menuentry "Buildroot" {
+ linux /zImage root=PARTLABEL=root rootwait
+}
diff --git a/board/qemu/arm-ebbr/linux.fragment b/board/qemu/arm-ebbr/linux.fragment
new file mode 100644
index 00000000000..07554cf843d
--- /dev/null
+++ b/board/qemu/arm-ebbr/linux.fragment
@@ -0,0 +1,2 @@
+CONFIG_TEE=y
+CONFIG_OPTEE=y
diff --git a/board/qemu/arm-ebbr/post-image.sh b/board/qemu/arm-ebbr/post-image.sh
new file mode 100755
index 00000000000..c884a8b6f66
--- /dev/null
+++ b/board/qemu/arm-ebbr/post-image.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+set -eu
+
+BOARD_DIR=$(dirname "$0")
+
+# Create flash.bin TF-A FIP image from bl1.bin and fip.bin
+dd if="${BINARIES_DIR}/bl1.bin" of="${BINARIES_DIR}/flash.bin" bs=1M
+dd if="${BINARIES_DIR}/fip.bin" of="${BINARIES_DIR}/flash.bin" seek=64 bs=4096 conv=notrunc
+
+# Override the default GRUB configuration file with our own.
+cp -f "${BOARD_DIR}/grub.cfg" "${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg"
diff --git a/board/qemu/arm-ebbr/readme.txt b/board/qemu/arm-ebbr/readme.txt
new file mode 100644
index 00000000000..085e723fe6c
--- /dev/null
+++ b/board/qemu/arm-ebbr/readme.txt
@@ -0,0 +1,71 @@
+Introduction
+============
+
+The qemu_arm_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 a 32b ARMv7-A 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 Qemu.
+
+Building
+========
+
+ $ make qemu_arm_ebbr_defconfig
+ $ make
+
+Generated files under output/images:
+
+* flash.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 under Qemu
+==================
+
+Run the emulation with:
+
+ qemu-system-arm \
+ -M virt,secure=on \
+ -bios output/images/flash.bin \
+ -cpu cortex-a15 \
+ -device virtio-blk-device,drive=hd0 \
+ -device virtio-net-device,netdev=eth0 \
+ -device virtio-rng-device,rng=rng0 \
+ -drive file=output/images/disk.img,if=none,format=raw,id=hd0 \
+ -m 1024 \
+ -netdev user,id=eth0 \
+ -no-acpi \
+ -nographic \
+ -object rng-random,filename=/dev/urandom,id=rng0 \
+ -rtc base=utc,clock=host \
+ -smp 2 # qemu_arm_ebbr_defconfig
+
+The login prompt will appear in the terminal that started Qemu.
+
+Using the EBBR firmware to run another OS under Qemu
+----------------------------------------------------
+
+It is possible to use the generated firmware binary to run another OS
+supporting the EBBR specification.
+
+To run another OS on emulation using a live or pre-installed image, use the same
+Qemu command line as for the generated OS but adapt the OS image path in the
+-drive stanza.
+The 32b Arm ACS-IR image[3] is an example of a pre-installed OS image.
+Linux distributions such as Debian or openSUSE provide a pre-installed OS
+image.
+
+Miscellaneous
+=============
+
+This configuration is inspired by the qemu_arm_vexpress_tz_defconfig, the
+qemu_aarch64_ebbr_defconfig and the Arm SystemReady IR IoT Integration, Test,
+and Certification Guide[4].
+
+Firmware update is 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/1-1/?lang=en
diff --git a/board/qemu/arm-ebbr/u-boot.fragment b/board/qemu/arm-ebbr/u-boot.fragment
new file mode 100644
index 00000000000..bfc382cde90
--- /dev/null
+++ b/board/qemu/arm-ebbr/u-boot.fragment
@@ -0,0 +1,35 @@
+CONFIG_BOOTM_EFI=y
+CONFIG_CMD_BOOTEFI=y
+CONFIG_CMD_BOOTEFI_HELLO=y
+CONFIG_CMD_BOOTEFI_HELLO_COMPILE=y
+CONFIG_CMD_BOOTEFI_SELFTEST=y
+CONFIG_CMD_EFIDEBUG=y
+CONFIG_CMD_EFI_VARIABLE_FILE_STORE=y
+CONFIG_CMD_GPT=y
+CONFIG_CMD_NVEDIT_EFI=y
+CONFIG_CMD_RNG=y
+CONFIG_CMD_RTC=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_OF_LIBFDT=y
+CONFIG_OPTEE=y
+CONFIG_PARTITION_TYPE_GUID=y
+CONFIG_RNG_OPTEE=y
+CONFIG_RTC_EMULATION=y
+CONFIG_SCMI_FIRMWARE=y
+CONFIG_SYS_TEXT_BASE=0x60000000
+CONFIG_TEE=y
diff --git a/configs/qemu_arm_ebbr_defconfig b/configs/qemu_arm_ebbr_defconfig
new file mode 100644
index 00000000000..f3e2d42a54b
--- /dev/null
+++ b/configs/qemu_arm_ebbr_defconfig
@@ -0,0 +1,57 @@
+# Architecture
+BR2_arm=y
+BR2_cortex_a15=y
+
+# Image
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/qemu/post-image.sh board/qemu/arm-ebbr/post-image.sh support/scripts/genimage.sh"
+BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_DEFCONFIG) -c board/qemu/arm-ebbr/genimage.cfg"
+
+# Linux headers
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_0=y
+
+# Kernel
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.0.9"
+BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
+BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/arm-ebbr/linux.fragment"
+
+# 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.7"
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="qemu"
+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="BL32_RAM_LOCATION=tdram"
+BR2_TARGET_GRUB2=y
+BR2_TARGET_GRUB2_ARM_EFI=y
+BR2_TARGET_OPTEE_OS=y
+BR2_TARGET_OPTEE_OS_NEEDS_DTC=y
+BR2_TARGET_OPTEE_OS_PLATFORM="vexpress-qemu_virt"
+BR2_TARGET_UBOOT=y
+BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.10"
+BR2_TARGET_UBOOT_BOARD_DEFCONFIG="qemu_arm"
+BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/qemu/arm-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
+
+# host-qemu for gitlab testing
+BR2_PACKAGE_HOST_QEMU=y
+BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y
--
2.35.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [Buildroot] [PATCH next] configs/qemu_arm_ebbr: new defconfig
2022-11-28 14:11 [Buildroot] [PATCH next] configs/qemu_arm_ebbr: new defconfig Vincent Stehlé
@ 2023-01-30 21:55 ` Thomas Petazzoni via buildroot
0 siblings, 0 replies; 2+ messages in thread
From: Thomas Petazzoni via buildroot @ 2023-01-30 21:55 UTC (permalink / raw)
To: Vincent Stehlé
Cc: Romain Naour, Etienne Carriere, Giulio Benetti, buildroot
On Mon, 28 Nov 2022 15:11:52 +0100
Vincent Stehlé <vincent.stehle@arm.com> wrote:
> Add a defconfig to build a 32b ARMv7-A 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 Qemu.
>
> The generated firmware binary can also be used to install or run another OS
> supporting the EBBR specification.
>
> [1]: https://github.com/ARM-software/ebbr
>
> Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com>
> Cc: Romain Naour <romain.naour@gmail.com>
> ---
Applied to master, thanks.
Thomas
--
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-01-30 21:55 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-28 14:11 [Buildroot] [PATCH next] configs/qemu_arm_ebbr: new defconfig Vincent Stehlé
2023-01-30 21:55 ` Thomas Petazzoni via buildroot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox