blob: b4ce817a5155c4ef1a5a5fc5aaac44f0835058e5 [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
12
13ifeq ($(PLATFORM),zynqmp-ultra96)
14OPTEE_OS_PLATFORM = zynqmp-ultra96
15else
Ibai Erkiaga236a7812021-08-19 15:10:34 +010016OPTEE_OS_PLATFORM = zynqmp-zcu102
Ibai Erkiaga5df77892022-09-19 15:30:02 +010017endif
18
19DTS_zynqmp-zcu102 = zynqmp-zcu102-rev1.0
20DTS_zynqmp-zcu104 = zynqmp-zcu104-revC
21DTS_zynqmp-zcu106 = zynqmp-zcu106-revA
22DTS_zynqmp-ultra96 = avnet-ultra96-rev1
23U-BOOT_DTS = $(DTS_$(PLATFORM))
Ibai Erkiagad7c761d2021-03-31 10:54:12 +010024
Ibai Erkiaga236a7812021-08-19 15:10:34 +010025################################################################################
26# Paths to git projects and various binaries
27################################################################################
28TF_A_PATH ?= $(ROOT)/arm-trusted-firmware
29U-BOOT_PATH ?= $(ROOT)/u-boot-xlnx
30BOOTGEN_PATH ?= $(ROOT)/bootgen
31LINUX_PATH ?= $(ROOT)/linux-xlnx
Michael Grandb76287b2019-02-24 23:38:57 +010032
Ibai Erkiaga236a7812021-08-19 15:10:34 +010033include common.mk
Michael Grandb76287b2019-02-24 23:38:57 +010034
Ibai Erkiaga236a7812021-08-19 15:10:34 +010035################################################################################
36# Targets
37################################################################################
38
39all: tfa optee-os u-boot linux dtbo buildroot
40clean: tfa-clean optee-os-clean u-boot-clean linux-clean dtbo-clean buildroot-clean
41
42include toolchain.mk
43
44################################################################################
45# ARM Trusted Firmware
46################################################################################
47
48TF_A_EXPORTS = CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)"
49TF_A_FLAGS = PLAT=zynqmp RESET_TO_BL31=1 NEED_BL32=yes SPD=opteed LOG_LEVEL=LOG_LEVEL_INFO
50
51
52tfa:
53 $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) bl31
54
55tfa-clean:
56 $(TF_A_EXPORTS) $(MAKE) -C $(TF_A_PATH) $(TF_A_FLAGS) clean
57
58################################################################################
59# OP-TEE
60#################################################################################
61
62optee-os: optee-os-common
63 ${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
64
65optee-os-clean: optee-os-clean-common
66 rm -f ${OPTEE_OS_PATH}/out/arm/core/tee_raw.bin
67
68################################################################################
69# U-Boot
70################################################################################
71
72U-BOOT_EXPORTS = CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)"
73U-BOOT_CONFIG = xilinx_zynqmp_virt_defconfig
Ibai Erkiaga236a7812021-08-19 15:10:34 +010074
75u-boot:
76 $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) $(U-BOOT_CONFIG)
77 $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) DEVICE_TREE=$(U-BOOT_DTS) DTC_FLAGS="-@"
78
79u-boot-clean:
80 $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) clean
81
82###############################################################################
83# Device-Tree
84###############################################################################
85dtbo: linux
86 ${LINUX_PATH}/scripts/dtc/dtc -@ -I dts -O dtb -o zynqmp/zynqmp-optee.dtbo zynqmp/zynqmp-optee.dtso
87
88dtbo-clean:
89 rm -f zynqmp/zynqmp-optee.dtbo
90
91################################################################################
92# Linux kernel
93################################################################################
94
95LINUX_DEFCONFIG_COMMON_ARCH := arm64
96LINUX_DEFCONFIG_COMMON_FILES := \
97 $(LINUX_PATH)/arch/arm64/configs/xilinx_zynqmp_defconfig \
98 $(CURDIR)/kconfigs/zynqmp.conf
99
100linux-defconfig: $(LINUX_PATH)/.config
101
102LINUX_COMMON_FLAGS += ARCH=arm64
103
104linux: linux-common
105
106linux-defconfig-clean: linux-defconfig-clean-common
107
108LINUX_CLEAN_COMMON_FLAGS += ARCH=arm64
109
110linux-clean: linux-clean-common
111
112LINUX_CLEANER_COMMON_FLAGS += ARCH=arm64
113
114linux-cleaner: linux-cleaner-common
115
116###############################################################################
117# Bouildroot
118###############################################################################
119
120BR2_TARGET_GENERIC_ISSUE="OP-TEE embedded distrib for $(PLATFORM)"
121BR2_TARGET_ROOTFS_EXT2=y
122BR2_PACKAGE_BUSYBOX_WATCHDOG=y
123BR2_TARGET_GENERIC_GETTY_PORT=ttyPS0
124
125# TF-A, Linux kernel, U-Boot and OP-TEE OS/Client/... are not built from their
126# related Buildroot native package.
127BR2_TARGET_ARM_TRUSTED_FIRMWARE=n
128BR2_LINUX_KERNEL=n
129BR2_TARGET_OPTEE_OS=n
130BR2_TARGET_UBOOT=n
131BR2_PACKAGE_OPTEE_CLIENT=n
132BR2_PACKAGE_OPTEE_TEST=n
133BR2_PACKAGE_OPTEE_EXAMPLES=n
134BR2_PACKAGE_OPTEE_BENCHMARK=n
135
136
137###############################################################################
138# Images
139###############################################################################
140image: bootimage fitimage
141image-clean: bootimage-clean fitimage-clean
142
143###############################################################################
144# Boot Image
145###############################################################################
146FIRMWARE_TARBALL = $(subst zynqmp-,2021.1-,$(PLATFORM))-release.tar.xz
147
148bootimage: bootgen firmware tfa optee-os u-boot
149 $(BOOTGEN_PATH)/bootgen -arch zynqmp -image zynqmp/bootImage-${PLATFORM}.bif -w -o zynqmp/BOOT.bin
150
151bootimage-clean: bootgen-clean firmware-clean tfa-clean optee-os-clean u-boot-clean
152 rm -f zynqmp/BOOT.bin
153
154
155###############################################################################
156# Bootgen
157###############################################################################
158
159bootgen:
160 make -C $(BOOTGEN_PATH)
161
162bootgen-clean:
163 make -C $(BOOTGEN_PATH) clean
164
165
166################################################################################
167# ZynqMPSoC Firmware mandatory for the boot
168################################################################################
169
170firmware:
171ifeq ("$(wildcard ../$(FIRMWARE_TARBALL))","")
172 $(error Release image tarball not present ../$(FIRMWARE_TARBALL))
Michael Grand08b8dde2019-03-13 17:56:04 +0100173else
Ibai Erkiaga236a7812021-08-19 15:10:34 +0100174 mkdir -p ../$(PLATFORM)-release && tar -xvf ../$(FIRMWARE_TARBALL) -C ../$(PLATFORM)-release --strip-components=1
Michael Grand08b8dde2019-03-13 17:56:04 +0100175endif
Michael Grandb76287b2019-02-24 23:38:57 +0100176
Ibai Erkiaga236a7812021-08-19 15:10:34 +0100177firmware-clean:
Ibai Erkiaga5df77892022-09-19 15:30:02 +0100178 rm -rf ../$(PLATFORM)-release
Michael Grand08b8dde2019-03-13 17:56:04 +0100179
Ibai Erkiaga236a7812021-08-19 15:10:34 +0100180###############################################################################
181# FIT Image
182###############################################################################
Michael Grandb76287b2019-02-24 23:38:57 +0100183
Ibai Erkiaga236a7812021-08-19 15:10:34 +0100184fitimage: linux dtbo buildroot
185 ${U-BOOT_PATH}/tools/mkimage -f zynqmp/fitImage-${PLATFORM}.its zynqmp/${PLATFORM}.ub
Michael Grandb76287b2019-02-24 23:38:57 +0100186
Ibai Erkiaga236a7812021-08-19 15:10:34 +0100187fitimage-clean: linux-clean dtbo-clean buildroot-clean
188 rm -f zynqmp/${PLATFORM}.ub
Ibai Erkiagad7c761d2021-03-31 10:54:12 +0100189