2022-11-28 15:11:52 +01:00
|
|
|
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 \
|
2024-01-11 14:57:04 +01:00
|
|
|
-M virt,secure=on,acpi=off \
|
2022-11-28 15:11:52 +01:00
|
|
|
-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 \
|
|
|
|
-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
|
2023-07-20 15:17:14 +02:00
|
|
|
[4]: https://developer.arm.com/documentation/DUI1101/latest/
|