mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-08-01 21:23:51 -09:00
- Bump Linux kernel to 6.18. - Bump U-Boot to 2025.10. Add the dependency on GNU TLS. Refresh the config fragment: add smc & poweroff commands, add ESRT and dummy capsule update, add SMCCC features discovery. - Bump OP-TEE to 4.8.0. Add the dependency on python-cryptography. Lock optee-client version to be the same as optee-os. Add a patch to output logs to the same UART as all the other components and increase log level. Remove the unnecessary dependency on dtc. - Bump TF-A to v2.14.0. - Bump FVP to 11.30_27. Disable terminal 1, now that all the logs go to a single terminal. Enable virtio network. Rate limit the simulation by default, for convenience at U-Boot and GRUB countdown, and for more realistic delays inside the simulation. - Switch to Bootlin pre-built toolchain. - Add more modules to GRUB, to have more commands available: efi commands, plus reboot & halt. - Add eudev to probe Linux modules during boot, for LCD support. - Configure eth0 with DHCP automatically during boot. - Refresh the documentation. This configuration has been tested on an x86 and on an AArch64 machine. The firmware and FVP of this configuration have also been tested successfully with other OSes: Debian Live, openSUSE Tumbleweed, Yocto, OpenWrt, Buildroot AArch64 EFI and FreeBSD. Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com> Signed-off-by: Julien Olivain <ju.o@free.fr>
111 lines
3.9 KiB
Plaintext
111 lines
3.9 KiB
Plaintext
Introduction
|
|
============
|
|
|
|
The arm_fvp_ebbr_defconfig is meant to illustrate some aspects of the Arm EBBR
|
|
specification[1] and the Arm SystemReady Devicetree band[2].
|
|
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/-/cdn-downloads/permalink/FVPs-Architecture/FM-11.30/FVP_Base_RevC-2xAEMvA_11.30_27_Linux64.tgz
|
|
- https://developer.arm.com/-/cdn-downloads/permalink/FVPs-Architecture/FM-11.30/FVP_Base_RevC-2xAEMvA_11.30_27_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 Devicetree
|
|
images[3] are examples of pre-installed OS images.
|
|
Linux distributions such as Debian, Fedora, openSUSE or Ubuntu, or FreeBSD
|
|
provide live or pre-installed OS image.
|
|
|
|
Firmware details
|
|
================
|
|
|
|
Noteworthy firmware features:
|
|
|
|
- TF-A, OP-TEE & U-Boot
|
|
- UEFI, with EFI variables stored on disk in the ESP
|
|
- Support for ethernet, RTC and LCD
|
|
|
|
Architecture diagram:
|
|
|
|
Non-Secure : Secure
|
|
:
|
|
+---------------------------+ :
|
|
EL0 | Busybox | :
|
|
+---------------------------+ : +--------+
|
|
EL1 | Linux | : | OP-TEE | S-EL1
|
|
+---------------------------+ : +--------+
|
|
EL2 | U-Boot, GRUB, Linux (kvm) | :
|
|
+---------------------------+ :
|
|
...................................:
|
|
+----------------------------------------+
|
|
| TF-A | EL3
|
|
+----------------------------------------+
|
|
|
|
Boot flow:
|
|
|
|
TF-A -+-> OP-TEE
|
|
`-> U-Boot -> GRUB -> Linux -> Busybox
|
|
|
|
TF-A BL1 loads the fit image with the remaining pieces of TF-A, OP-TEE and
|
|
U-Boot.
|
|
OP-TEE boots, calls back TF-A to go to normal world.
|
|
U-Boot loads GRUB with UEFI, boots Linux at EL2.
|
|
|
|
In this configuration, the Devicetree is static and fully contained in TF-A.
|
|
|
|
Miscellaneous
|
|
=============
|
|
|
|
This configuration is inspired by the arm_foundationv8_defconfig, the
|
|
qemu_aarch64_virt_defconfig and the Arm SystemReady Devicetree Band Integration
|
|
and Testing Guide[4].
|
|
|
|
Firmware update, GOP, MMC and RNG are currently not supported.
|
|
|
|
[1] https://github.com/ARM-software/ebbr
|
|
[2] https://www.arm.com/architecture/system-architectures/systemready-compliance-program/systemready-devicetree-band
|
|
[3] https://github.com/ARM-software/arm-systemready/tree/main/SystemReady-devicetree-band/prebuilt_images
|
|
[4] https://developer.arm.com/documentation/DUI1101/latest/
|