1################################################################################ 2# Following variables defines how the NS_USER (Non Secure User - Client 3# Application), NS_KERNEL (Non Secure Kernel), S_KERNEL (Secure Kernel) and 4# S_USER (Secure User - TA) are compiled 5################################################################################ 6override COMPILE_NS_USER := 64 7override COMPILE_NS_KERNEL := 64 8override COMPILE_S_USER := 64 9override COMPILE_S_KERNEL := 64 10 11PLATFORM := zynqmp-zcu102 12OPTEE_OS_PLATFORM = $(PLATFORM) 13 14DTS_zynqmp-zcu102 = zynqmp-zcu102-rev1.0 15DTS_zynqmp-zcu104 = zynqmp-zcu104-revC 16DTS_zynqmp-zcu106 = zynqmp-zcu106-revA 17DTS_zynqmp-ultra96 = avnet-ultra96-rev1 18U-BOOT_DTS = $(DTS_$(PLATFORM)) 19 20################################################################################ 21# Paths to git projects and various binaries 22################################################################################ 23TF_A_PATH ?= $(ROOT)/arm-trusted-firmware 24U-BOOT_PATH ?= $(ROOT)/u-boot-xlnx 25BOOTGEN_PATH ?= $(ROOT)/bootgen 26LINUX_PATH ?= $(ROOT)/linux-xlnx 27 28include common.mk 29 30################################################################################ 31# Targets 32################################################################################ 33 34all: tfa optee-os u-boot linux dtbo buildroot 35clean: tfa-clean optee-os-clean u-boot-clean linux-clean dtbo-clean buildroot-clean 36 37include toolchain.mk 38 39################################################################################ 40# ARM Trusted Firmware 41################################################################################ 42 43TF_A_EXPORTS = CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)" 44TF_A_FLAGS = PLAT=zynqmp RESET_TO_BL31=1 NEED_BL32=yes SPD=opteed LOG_LEVEL=LOG_LEVEL_INFO 45 46 47tfa: 48 $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) bl31 49 50tfa-clean: 51 $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) clean 52 53################################################################################ 54# OP-TEE 55################################################################################# 56 57optee-os: optee-os-common 58 ${OPTEE_OS_PATH}/scripts/gen_tee_bin.py --input ${OPTEE_OS_PATH}/out/arm/core/tee.elf --out_tee_raw_bin ${OPTEE_OS_PATH}/out/arm/core/tee_raw.bin 59 60optee-os-clean: optee-os-clean-common 61 rm -f ${OPTEE_OS_PATH}/out/arm/core/tee_raw.bin 62 63################################################################################ 64# U-Boot 65################################################################################ 66 67U-BOOT_EXPORTS = CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)" 68U-BOOT_CONFIG = xilinx_zynqmp_virt_defconfig 69 70u-boot: 71 $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) $(U-BOOT_CONFIG) 72 $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) DEVICE_TREE=$(U-BOOT_DTS) DTC_FLAGS="-@" 73 74u-boot-clean: 75 $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) clean 76 77############################################################################### 78# Device-Tree 79############################################################################### 80dtbo: linux 81 ${LINUX_PATH}/scripts/dtc/dtc -@ -I dts -O dtb -o zynqmp/zynqmp-optee.dtbo zynqmp/zynqmp-optee.dtso 82 83dtbo-clean: 84 rm -f zynqmp/zynqmp-optee.dtbo 85 86################################################################################ 87# Linux kernel 88################################################################################ 89 90LINUX_DEFCONFIG_COMMON_ARCH := arm64 91LINUX_DEFCONFIG_COMMON_FILES := \ 92 $(LINUX_PATH)/arch/arm64/configs/xilinx_zynqmp_defconfig \ 93 $(CURDIR)/kconfigs/zynqmp.conf 94 95linux-defconfig: $(LINUX_PATH)/.config 96 97LINUX_COMMON_FLAGS += ARCH=arm64 98 99linux: linux-common 100 101linux-defconfig-clean: linux-defconfig-clean-common 102 103LINUX_CLEAN_COMMON_FLAGS += ARCH=arm64 104 105linux-clean: linux-clean-common 106 107LINUX_CLEANER_COMMON_FLAGS += ARCH=arm64 108 109linux-cleaner: linux-cleaner-common 110 111############################################################################### 112# Bouildroot 113############################################################################### 114 115BR2_TARGET_GENERIC_ISSUE="OP-TEE embedded distrib for $(PLATFORM)" 116BR2_TARGET_ROOTFS_EXT2=y 117BR2_PACKAGE_BUSYBOX_WATCHDOG=y 118BR2_TARGET_GENERIC_GETTY_PORT=ttyPS0 119 120# TF-A, Linux kernel, U-Boot and OP-TEE OS/Client/... are not built from their 121# related Buildroot native package. 122BR2_TARGET_ARM_TRUSTED_FIRMWARE=n 123BR2_LINUX_KERNEL=n 124BR2_TARGET_OPTEE_OS=n 125BR2_TARGET_UBOOT=n 126BR2_PACKAGE_OPTEE_CLIENT=n 127BR2_PACKAGE_OPTEE_TEST=n 128BR2_PACKAGE_OPTEE_EXAMPLES=n 129BR2_PACKAGE_OPTEE_BENCHMARK=n 130 131 132############################################################################### 133# Images 134############################################################################### 135image: bootimage fitimage 136image-clean: bootimage-clean fitimage-clean 137 138############################################################################### 139# Boot Image 140############################################################################### 141FIRMWARE_TARBALL = $(subst zynqmp-,2021.1-,$(PLATFORM))-release.tar.xz 142 143bootimage: bootgen firmware tfa optee-os u-boot 144 $(BOOTGEN_PATH)/bootgen -arch zynqmp -image zynqmp/bootImage-${PLATFORM}.bif -w -o zynqmp/BOOT.bin 145 146bootimage-clean: bootgen-clean firmware-clean tfa-clean optee-os-clean u-boot-clean 147 rm -f zynqmp/BOOT.bin 148 149 150############################################################################### 151# Bootgen 152############################################################################### 153 154bootgen: 155 make -C $(BOOTGEN_PATH) 156 157bootgen-clean: 158 make -C $(BOOTGEN_PATH) clean 159 160 161################################################################################ 162# ZynqMPSoC Firmware mandatory for the boot 163################################################################################ 164 165firmware: 166ifeq ("$(wildcard ../$(FIRMWARE_TARBALL))","") 167 $(error Release image tarball not present ../$(FIRMWARE_TARBALL)) 168else 169 mkdir -p ../$(PLATFORM)-release && tar -xvf ../$(FIRMWARE_TARBALL) -C ../$(PLATFORM)-release --strip-components=1 170endif 171 172firmware-clean: 173 rm -rf ../$(PLATFORM)-release 174 175############################################################################### 176# FIT Image 177############################################################################### 178 179fitimage: linux dtbo buildroot 180 ${U-BOOT_PATH}/tools/mkimage -f zynqmp/fitImage-${PLATFORM}.its zynqmp/${PLATFORM}.ub 181 182fitimage-clean: linux-clean dtbo-clean buildroot-clean 183 rm -f zynqmp/${PLATFORM}.ub 184 185