qemu/qemu_v8: synchronize build scripts
Qemu and qemu_v8 are almost built the same way. Main differences are
32b/64b modes and u-boot/edk2 as non-secure boot stage.
optee-client targets are removed since now built from the buildroot
target.
This change also ensures on can run 'make run-only' after 'make all'
without rootfs not being copied to the output image directory.
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
diff --git a/qemu.mk b/qemu.mk
index ea5cd9c..a9e483a 100644
--- a/qemu.mk
+++ b/qemu.mk
@@ -55,12 +55,11 @@
ARM_ARCH_MAJOR=7 \
ARCH=aarch32 \
PLAT=qemu \
- DEBUG=$(ARM_TF_DEBUG) \
- ENABLE_ASSERTIONS=$(ARM_TF_DEBUG) \
- LOG_LEVEL=$(ARM_TF_LOGLVL) \
ARM_TSP_RAM_LOCATION=tdram \
BL32_RAM_LOCATION=tdram \
- AARCH32_SP=optee
+ AARCH32_SP=optee \
+ DEBUG=$(ARM_TF_DEBUG) \
+ LOG_LEVEL=$(ARM_TF_LOGLVL) \
arm-tf: optee-os u-boot
$(ARM_TF_EXPORTS) $(MAKE) -C $(ARM_TF_PATH) $(ARM_TF_FLAGS) all fip
@@ -144,10 +143,6 @@
OPTEE_OS_CLEAN_COMMON_FLAGS += PLATFORM=vexpress-qemu_virt
optee-os-clean: optee-os-clean-common
-optee-client: optee-client-common
-
-optee-client-clean: optee-client-clean-common
-
################################################################################
# Soc-term
################################################################################
@@ -163,28 +158,27 @@
.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
QEMU_SMP ?= 2
.PHONY: run-only
run-only:
+ ln -sf $(ROOT)/out-br/images/rootfs.cpio.gz $(BINARIES_PATH)/
$(call check-terminal)
$(call run-help)
$(call launch-terminal,54320,"Normal World")
$(call launch-terminal,54321,"Secure World")
$(call wait-for-ports,54320,54321)
- (cd $(BINARIES_PATH) && $(QEMU_PATH)/arm-softmmu/qemu-system-arm \
+ cd $(BINARIES_PATH) && $(QEMU_PATH)/arm-softmmu/qemu-system-arm \
-nographic \
-serial tcp:localhost:54320 -serial tcp:localhost:54321 \
-smp $(QEMU_SMP) \
- -s -S -machine virt -machine secure=on -cpu cortex-a15 \
- -d unimp -semihosting-config enable,target=native \
+ -s -S -machine virt,secure=on -cpu cortex-a15 \
+ -d unimp -semihosting-config enable,target=native \
-m 1057 \
-bios bl1.bin \
- $(QEMU_EXTRA_ARGS) )
-
+ $(QEMU_EXTRA_ARGS)
ifneq ($(filter check,$(MAKECMDGOALS)),)
CHECK_DEPS := all
diff --git a/qemu_v8.mk b/qemu_v8.mk
index 9c9a44c..8271590 100644
--- a/qemu_v8.mk
+++ b/qemu_v8.mk
@@ -16,23 +16,20 @@
# Paths to git projects and various binaries
################################################################################
ARM_TF_PATH ?= $(ROOT)/arm-trusted-firmware
-
+BINARIES_PATH ?= $(ROOT)/out/bin
EDK2_PATH ?= $(ROOT)/edk2
EDK2_BIN ?= $(EDK2_PATH)/Build/ArmVirtQemuKernel-AARCH64/DEBUG_GCC49/FV/QEMU_EFI.fd
-
QEMU_PATH ?= $(ROOT)/qemu
-
SOC_TERM_PATH ?= $(ROOT)/soc_term
-STRACE_PATH ?= $(ROOT)/strace
DEBUG = 1
################################################################################
# Targets
################################################################################
-all: arm-tf qemu soc-term linux buildroot
-clean: arm-tf-clean edk2-clean linux-clean optee-os-clean qemu-clean \
- soc-term-clean check-clean buildroot-clean
+all: arm-tf buildroot edk2 linux optee-os qemu soc-term
+clean: arm-tf-clean buildroot-clean edk2-clean linux-clean optee-os-clean \
+ qemu-clean soc-term-clean check-clean
include toolchain.mk
@@ -42,27 +39,37 @@
ARM_TF_EXPORTS ?= \
CROSS_COMPILE="$(CCACHE)$(AARCH64_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=$(EDK2_BIN) \
- ARM_TSP_RAM_LOCATION=tdram \
PLAT=qemu \
- DEBUG=0 \
- LOG_LEVEL=50 \
+ ARM_TSP_RAM_LOCATION=tdram \
BL32_RAM_LOCATION=tdram \
- SPD=opteed
+ SPD=opteed \
+ DEBUG=$(ARM_TF_DEBUG) \
+ LOG_LEVEL=$(ARM_TF_LOGLVL)
arm-tf: optee-os edk2
$(ARM_TF_EXPORTS) $(MAKE) -C $(ARM_TF_PATH) $(ARM_TF_FLAGS) all fip
- ln -sf $(OPTEE_OS_HEADER_V2_BIN) \
- $(ARM_TF_PATH)/build/qemu/release/bl32.bin
- ln -sf $(OPTEE_OS_PAGER_V2_BIN) \
- $(ARM_TF_PATH)/build/qemu/release/bl32_extra1.bin
- ln -sf $(OPTEE_OS_PAGEABLE_V2_BIN) \
- $(ARM_TF_PATH)/build/qemu/release/bl32_extra2.bin
- ln -sf $(EDK2_BIN) $(ARM_TF_PATH)/build/qemu/release/bl33.bin
+ mkdir -p $(BINARIES_PATH)
+ ln -sf $(ARM_TF_OUT)/bl1.bin $(BINARIES_PATH)
+ ln -sf $(ARM_TF_OUT)/bl2.bin $(BINARIES_PATH)
+ ln -sf $(ARM_TF_OUT)/bl31.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 $(EDK2_BIN) $(BINARIES_PATH)/bl33.bin
arm-tf-clean:
$(ARM_TF_EXPORTS) $(MAKE) -C $(ARM_TF_PATH) $(ARM_TF_FLAGS) clean
@@ -96,8 +103,6 @@
edk2-clean: edk2-clean-common
-
-
################################################################################
# Linux kernel
################################################################################
@@ -111,6 +116,8 @@
LINUX_COMMON_FLAGS += ARCH=arm64
linux: linux-common
+ mkdir -p $(BINARIES_PATH)
+ ln -sf $(LINUX_PATH)/arch/arm64/boot/Image $(BINARIES_PATH)
linux-defconfig-clean: linux-defconfig-clean-common
@@ -132,10 +139,6 @@
OPTEE_OS_CLEAN_COMMON_FLAGS += PLATFORM=vexpress-qemu_armv8a
optee-os-clean: optee-os-clean-common
-optee-client: optee-client-common
-
-optee-client-clean: optee-client-clean-common
-
################################################################################
# Soc-term
################################################################################
@@ -145,7 +148,6 @@
soc-term-clean:
$(MAKE) -C $(SOC_TERM_PATH) clean
-
################################################################################
# Run targets
################################################################################
@@ -158,20 +160,22 @@
.PHONY: run-only
run-only:
+ ln -sf $(ROOT)/out-br/images/rootfs.cpio.gz $(BINARIES_PATH)/
$(call check-terminal)
$(call run-help)
$(call launch-terminal,54320,"Normal World")
$(call launch-terminal,54321,"Secure World")
$(call wait-for-ports,54320,54321)
- cd $(ARM_TF_PATH)/build/qemu/release && \
- $(QEMU_PATH)/aarch64-softmmu/qemu-system-aarch64 \
+ cd $(BINARIES_PATH) && $(QEMU_PATH)/aarch64-softmmu/qemu-system-aarch64 \
-nographic \
-serial tcp:localhost:54320 -serial tcp:localhost:54321 \
-smp $(QEMU_SMP) \
- -machine virt,secure=on -cpu cortex-a57 -m 1057 -bios $(ARM_TF_PATH)/build/qemu/release/bl1.bin \
- -s -S -semihosting-config enable,target=native -d unimp \
- -initrd $(ROOT)/out-br/images/rootfs.cpio.gz \
- -kernel $(LINUX_PATH)/arch/arm64/boot/Image -no-acpi \
+ -s -S -machine virt,secure=on -cpu cortex-a57 \
+ -d unimp -semihosting-config enable,target=native \
+ -m 1057 \
+ -bios bl1.bin \
+ -initrd rootfs.cpio.gz \
+ -kernel Image -no-acpi \
-append 'console=ttyAMA0,38400 keep_bootcon root=/dev/vda2' \
$(QEMU_EXTRA_ARGS)