blob: 1ca7fceb9fc4250cef62cf41a7f59d910a1d2da5 [file] [log] [blame]
Ibai Erkiaga236a7812021-08-19 15:10:34 +01001################################################################################
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
Michael Grandb76287b2019-02-24 23:38:57 +010010
Ibai Erkiaga5df77892022-09-19 15:30:02 +010011PLATFORM := zynqmp-zcu102
Ibai Erkiagab7d601d2022-11-14 20:45:22 +000012OPTEE_OS_PLATFORM = $(PLATFORM)
Ibai Erkiaga5df77892022-09-19 15:30:02 +010013
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))
Ibai Erkiagad7c761d2021-03-31 10:54:12 +010019
Ibai Erkiaga236a7812021-08-19 15:10:34 +010020################################################################################
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
Michael Grandb76287b2019-02-24 23:38:57 +010027
Ibai Erkiaga236a7812021-08-19 15:10:34 +010028include common.mk
Michael Grandb76287b2019-02-24 23:38:57 +010029
Ibai Erkiaga236a7812021-08-19 15:10:34 +010030################################################################################
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
Ibai Erkiaga236a7812021-08-19 15:10:34 +010069
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))
Michael Grand08b8dde2019-03-13 17:56:04 +0100168else
Ibai Erkiaga236a7812021-08-19 15:10:34 +0100169 mkdir -p ../$(PLATFORM)-release && tar -xvf ../$(FIRMWARE_TARBALL) -C ../$(PLATFORM)-release --strip-components=1
Michael Grand08b8dde2019-03-13 17:56:04 +0100170endif
Michael Grandb76287b2019-02-24 23:38:57 +0100171
Ibai Erkiaga236a7812021-08-19 15:10:34 +0100172firmware-clean:
Ibai Erkiaga5df77892022-09-19 15:30:02 +0100173 rm -rf ../$(PLATFORM)-release
Michael Grand08b8dde2019-03-13 17:56:04 +0100174
Ibai Erkiaga236a7812021-08-19 15:10:34 +0100175###############################################################################
176# FIT Image
177###############################################################################
Michael Grandb76287b2019-02-24 23:38:57 +0100178
Ibai Erkiaga236a7812021-08-19 15:10:34 +0100179fitimage: linux dtbo buildroot
180 ${U-BOOT_PATH}/tools/mkimage -f zynqmp/fitImage-${PLATFORM}.its zynqmp/${PLATFORM}.ub
Michael Grandb76287b2019-02-24 23:38:57 +0100181
Ibai Erkiaga236a7812021-08-19 15:10:34 +0100182fitimage-clean: linux-clean dtbo-clean buildroot-clean
183 rm -f zynqmp/${PLATFORM}.ub
Ibai Erkiagad7c761d2021-03-31 10:54:12 +0100184