[Buildroot] [PATCH 1/1] boot/arm-trusted-firmware: optional Linux as BL33
Jakob Kastelic
jkastelic at thinksrs.com
Thu Dec 19 21:45:55 UTC 2024
Arm Trusted Firmware (TF-A) can be used to load U-Boot or another
bootloader, which in turn loads the Linux kernel. However, TF-A is
capable of loading the kernel directly. To this end, we need to define
the BL33 and BL33_CFG compile options containing, respectively, the
zImage and the DTB.
This config introduces a new config option,
BR2_TARGET_ARM_TRUSTED_FIRMWARE_LINUX_AS_BL33, which sets the BL33 and
BL33_CFG parameters, and ensures that the kernel is built before the
TF-A by having linux as a _DEPENDENCY of the TF-A.
Signed-off-by: Jakob Kastelic <jkastelic at thinksrs.com>
---
boot/arm-trusted-firmware/Config.in | 19 +++++++++++++++++++
.../arm-trusted-firmware.mk | 6 ++++++
2 files changed, 25 insertions(+)
diff --git a/boot/arm-trusted-firmware/Config.in b/boot/arm-trusted-firmware/Config.in
index c8deede9cd..929561fc87 100644
--- a/boot/arm-trusted-firmware/Config.in
+++ b/boot/arm-trusted-firmware/Config.in
@@ -182,6 +182,25 @@ config BR2_TARGET_ARM_TRUSTED_FIRMWARE_EDK2_AS_BL33
for the 'qemu_sbsa' platform. In this case, due to the EDK2
build system, the dependency between ATF and EDK is reversed.
+config BR2_TARGET_ARM_TRUSTED_FIRMWARE_LINUX_AS_BL33
+ bool "Linux kernel"
+ depends on BR2_LINUX_KERNEL
+ help
+ This option allows to embed the Linux kernel as the BL33 part
+ of the ARM Trusted Firmware.
+
+ Do not choose this option if you intend to use U-Boot or
+ another second-stage bootloader. With this option, TF-A starts
+ Linux directly.
+
+ With this option chosen, whenever the Linux zImage changes,
+ TF-A may need need to be re-built to create the latest FIP
+ file. Since Buildroot does not track package dependencies,
+ this has to be done manually by invoking `make
+ arm-trusted-firmware-rebuild`. The final boot medium image may
+ need to be re-generated as well to include the latest FIP file
+ version.
+
endchoice
if BR2_TARGET_ARM_TRUSTED_FIRMWARE_BAREBOX_AS_BL33
diff --git a/boot/arm-trusted-firmware/arm-trusted-firmware.mk b/boot/arm-trusted-firmware/arm-trusted-firmware.mk
index 172a930b5c..6fc15ab700 100644
--- a/boot/arm-trusted-firmware/arm-trusted-firmware.mk
+++ b/boot/arm-trusted-firmware/arm-trusted-firmware.mk
@@ -132,6 +132,12 @@ ARM_TRUSTED_FIRMWARE_MAKE_OPTS += BL33=$(BINARIES_DIR)/$(ARM_TRUSTED_FIRMWARE_UB
ARM_TRUSTED_FIRMWARE_DEPENDENCIES += uboot
endif
+ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_LINUX_AS_BL33),y)
+ARM_TRUSTED_FIRMWARE_MAKE_OPTS += BL33=$(BINARIES_DIR)/zImage
+ARM_TRUSTED_FIRMWARE_MAKE_OPTS += BL33_CFG=$(BINARIES_DIR)/$(LINUX_DTBS)
+ARM_TRUSTED_FIRMWARE_DEPENDENCIES += linux
+endif
+
ifeq ($(BR2_TARGET_VEXPRESS_FIRMWARE),y)
ARM_TRUSTED_FIRMWARE_MAKE_OPTS += SCP_BL2=$(BINARIES_DIR)/scp-fw.bin
ARM_TRUSTED_FIRMWARE_DEPENDENCIES += vexpress-firmware
--
2.34.1
More information about the buildroot
mailing list