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