fvp: add support for base platform
This commit introduces support for a base platform model, the AEMv8-A
Base Platform RevC FVP. It can be enabled using the USE_FVP_BASE_PLAT
build option. The model is freely available, just like the Foundation
platform.
Change-Id: I60ee4d958f05ccdaac8d728b29a773f68fc014bb
Signed-off-by: Balint Dobszay <balint.dobszay@arm.com>
diff --git a/fvp.mk b/fvp.mk
index db06df9..ffed69c 100644
--- a/fvp.mk
+++ b/fvp.mk
@@ -32,10 +32,16 @@
EDK2_BUILD ?= RELEASE
endif
EDK2_BIN ?= $(EDK2_PLATFORMS_PATH)/Build/ArmVExpress-FVP-AArch64/$(EDK2_BUILD)_$(EDK2_TOOLCHAIN)/FV/FVP_$(EDK2_ARCH)_EFI.fd
+USE_FVP_BASE_PLAT ?= 0
+ifeq ($(USE_FVP_BASE_PLAT),1)
+FVP_PATH ?= /opt/fvp/latest
+FVP_BIN ?= FVP_Base_RevC-2xAEMv8A
+else
FOUNDATION_PATH ?= $(ROOT)/Foundation_Platformpkg
ifeq ($(wildcard $(FOUNDATION_PATH)),)
$(error $(FOUNDATION_PATH) does not exist)
endif
+endif
GRUB_PATH ?= $(ROOT)/grub
GRUB_CONFIG_PATH ?= $(BUILD_PATH)/fvp/grub
OUT_PATH ?= $(ROOT)/out
@@ -174,11 +180,11 @@
# Boot Image
################################################################################
.PHONY: boot-img
-boot-img: linux grub buildroot
+boot-img: linux grub buildroot dtb
rm -f $(BOOT_IMG)
mformat -i $(BOOT_IMG) -n 64 -h 255 -T 131072 -v "BOOT IMG" -C ::
mcopy -i $(BOOT_IMG) $(LINUX_PATH)/arch/arm64/boot/Image ::
- mcopy -i $(BOOT_IMG) $(LINUX_PATH)/arch/arm64/boot/dts/arm/foundation-v8-gicv3-psci.dtb ::
+ mcopy -i $(BOOT_IMG) $(DTB) ::/fvp.dtb
mmd -i $(BOOT_IMG) ::/EFI
mmd -i $(BOOT_IMG) ::/EFI/BOOT
mcopy -i $(BOOT_IMG) $(ROOT)/out-br/images/rootfs.cpio.gz ::/initrd.img
@@ -190,6 +196,31 @@
rm -f $(BOOT_IMG)
################################################################################
+# DTB
+################################################################################
+ifeq ($(USE_FVP_BASE_PLAT),1)
+DTSI_PATH ?= $(TF_A_PATH)/fdts
+DTS_PATH ?= $(TF_A_PATH)/fdts
+DTS ?= fvp-base-gicv3-psci-1t
+DTS_PRE ?= $(OUT_PATH)/$(DTS).pre.dts
+DTB ?= $(OUT_PATH)/$(DTS).dtb
+
+$(DTB): $(DTS_PATH)/$(DTS).dts
+ gcc -E -P -nostdinc -undef -x assembler-with-cpp -I$(DTSI_PATH) \
+ -I$(TF_A_PATH)/include -o $(DTS_PRE) $(DTS_PATH)/$(DTS).dts
+ dtc -i$(DTSI_PATH) -I dts -O dtb -o $(DTB) $(DTS_PRE)
+
+.PHONY: dtb-clean
+dtb-clean:
+ @rm -f $(DTB) $(DTS_PRE)
+else
+DTB := $(LINUX_PATH)/arch/arm64/boot/dts/arm/foundation-v8-gicv3-psci.dtb
+endif
+
+.PHONY: dtb
+dtb: $(DTB)
+
+################################################################################
# Run targets
################################################################################
# This target enforces updating root fs etc
@@ -197,6 +228,18 @@
$(MAKE) run-only
run-only:
+ifeq ($(USE_FVP_BASE_PLAT),1)
+ $(FVP_PATH)/$(FVP_BIN) \
+ -C bp.flashloader0.fname=$(TF_A_PATH)/build/fvp/$(TF_A_BUILD)/fip.bin \
+ -C bp.secureflashloader.fname=$(TF_A_PATH)/build/fvp/$(TF_A_BUILD)/bl1.bin \
+ -C bp.secure_memory=1 \
+ -C bp.ve_sysregs.exit_on_shutdown=1 \
+ -C bp.virtioblockdevice.image_path=$(BOOT_IMG) \
+ -C cache_state_modelled=0 \
+ -C cluster0.NUM_CORES=4 \
+ -C cluster1.NUM_CORES=4 \
+ -C pctl.startup=0.0.0.0
+else
@cd $(FOUNDATION_PATH); \
$(FOUNDATION_PATH)/models/Linux64_GCC-6.4/Foundation_Platform \
--arm-v8.0 \
@@ -207,4 +250,4 @@
--data="$(TF_A_PATH)/build/fvp/$(TF_A_BUILD)/bl1.bin"@0x0 \
--data="$(TF_A_PATH)/build/fvp/$(TF_A_BUILD)/fip.bin"@0x8000000 \
--block-device=$(BOOT_IMG)
-
+endif