qemu: boot from arm-tf
Arm-tf is used as secure bootloader and bios_qemu_tz_arm as non-secure
bootloader.
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
diff --git a/qemu.mk b/qemu.mk
index 6a0402c..05ff887 100644
--- a/qemu.mk
+++ b/qemu.mk
@@ -13,6 +13,7 @@
################################################################################
# Paths to git projects and various binaries
################################################################################
+ARM_TF_PATH ?= $(ROOT)/arm-trusted-firmware
BIOS_QEMU_PATH ?= $(ROOT)/bios_qemu_tz_arm
QEMU_PATH ?= $(ROOT)/qemu
BINARIES_PATH ?= $(ROOT)/out/bin
@@ -24,13 +25,56 @@
################################################################################
# Targets
################################################################################
-all: bios-qemu qemu soc-term linux
-clean: bios-qemu-clean linux-clean optee-os-clean \
+all: arm-tf bios-qemu qemu soc-term linux
+clean: arm-tf-clean bios-qemu-clean linux-clean optee-os-clean \
qemu-clean soc-term-clean check-clean buildroot-clean
include toolchain.mk
################################################################################
+# ARM Trusted Firmware
+################################################################################
+ARM_TF_EXPORTS ?= \
+ CROSS_COMPILE="$(CCACHE)$(AARCH32_CROSS_COMPILE)"
+
+ARM_TF_DEBUG ?= $(DEBUG)
+ifeq ($(ARM_TF_DEBUG),0)
+ARM_TF_LOGLVL ?= 30
+ARM_TF_OUT = $(ARM_TF_PATH)/build/qemu/release
+else
+ARM_TF_LOGLVL ?= 50
+ARM_TF_OUT = $(ARM_TF_PATH)/build/qemu/debug
+endif
+
+ARM_TF_FLAGS ?= \
+ BL32=$(OPTEE_OS_HEADER_V2_BIN) \
+ BL32_EXTRA1=$(OPTEE_OS_PAGER_V2_BIN) \
+ BL32_EXTRA2=$(OPTEE_OS_PAGEABLE_V2_BIN) \
+ BL33=$(ROOT)/out/bios-qemu/bios.bin \
+ ARM_ARCH_MAJOR=7 \
+ ARCH=aarch32 \
+ PLAT=qemu \
+ DEBUG=$(ARM_TF_DEBUG) \
+ ENABLE_ASSERTIONS=$(ARM_TF_DEBUG) \
+ LOG_LEVEL=$(ARM_TF_LOGLVL) \
+ MULTI_CONSOLE_API=0 \
+ ARM_TSP_RAM_LOCATION=tdram \
+ BL32_RAM_LOCATION=tdram \
+ AARCH32_SP=optee
+
+arm-tf: optee-os bios-qemu
+ $(ARM_TF_EXPORTS) $(MAKE) -C $(ARM_TF_PATH) $(ARM_TF_FLAGS) all fip
+ ln -sf $(ARM_TF_OUT)/bl1.bin $(BINARIES_PATH)
+ ln -sf $(ARM_TF_OUT)/bl2.bin $(BINARIES_PATH)
+ ln -sf $(OPTEE_OS_HEADER_V2_BIN) $(BINARIES_PATH)/bl32.bin
+ ln -sf $(OPTEE_OS_PAGER_V2_BIN) $(BINARIES_PATH)/bl32_extra1.bin
+ ln -sf $(OPTEE_OS_PAGEABLE_V2_BIN) $(BINARIES_PATH)/bl32_extra2.bin
+ ln -sf $(ROOT)/out/bios-qemu/bios.bin $(BINARIES_PATH)/bl33.bin
+
+arm-tf-clean:
+ $(ARM_TF_EXPORTS) $(MAKE) -C $(ARM_TF_PATH) $(ARM_TF_FLAGS) clean
+
+################################################################################
# QEMU
################################################################################
define bios-qemu-common
@@ -41,13 +85,8 @@
endef
bios-qemu: buildroot optee-os linux
- mkdir -p $(BINARIES_PATH)
- ln -sf $(OPTEE_OS_HEADER_V2_BIN) $(BINARIES_PATH)
- ln -sf $(OPTEE_OS_PAGER_V2_BIN) $(BINARIES_PATH)
- ln -sf $(OPTEE_OS_PAGEABLE_V2_BIN) $(BINARIES_PATH)
- ln -sf $(LINUX_PATH)/arch/arm/boot/zImage $(BINARIES_PATH)
- ln -sf $(ROOT)/out-br/images/rootfs.cpio.gz $(BINARIES_PATH)
$(call bios-qemu-common)
+ ln -sf $(ROOT)/out/bios-qemu/bios.bin $(BINARIES_PATH)
bios-qemu-clean:
$(call bios-qemu-common) clean
@@ -73,6 +112,8 @@
LINUX_COMMON_FLAGS += ARCH=arm
linux: linux-common
+ mkdir -p $(BINARIES_PATH)
+ ln -sf $(LINUX_PATH)/arch/arm/boot/zImage $(BINARIES_PATH)
linux-defconfig-clean: linux-defconfig-clean-common
@@ -112,6 +153,7 @@
.PHONY: run
# This target enforces updating root fs etc
run: all
+ ln -sf $(ROOT)/out-br/images/rootfs.cpio.gz $(BINARIES_PATH)/
$(MAKE) run-only
.PHONY: run-only
@@ -127,7 +169,7 @@
-s -S -machine virt -machine secure=on -cpu cortex-a15 \
-d unimp -semihosting-config enable,target=native \
-m 1057 \
- -bios $(ROOT)/out/bios-qemu/bios.bin \
+ -bios bl1.bin \
$(QEMU_EXTRA_ARGS) )