blob: 008a52b94f8dabc9ffcc17f0cd56f95230bba06a [file] [log] [blame]
Etienne Carrierebba59722020-05-16 13:42:36 +02001################################################################################
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 := 32
7override COMPILE_NS_KERNEL := 32
8override COMPILE_S_USER := 32
9override COMPILE_S_KERNEL := 32
10
Etienne Carrierea155d662023-12-11 16:13:57 +010011PLATFORM ?= stm32mp1-157C_DK2_SCMI
Etienne Carrierebba59722020-05-16 13:42:36 +020012OPTEE_OS_PLATFORM := $(PLATFORM)
13
14include common.mk
15
16ifeq ($(PLATFORM),stm32mp1-157A_DK1)
17BREXT_FLAVOR = STM32MP157A-DK1
18STM32MP1_DTS_BASENAME = stm32mp157a-dk1
Etienne Carrierea155d662023-12-11 16:13:57 +010019else ifeq ($(PLATFORM),stm32mp1-157A_DK1_SCMI)
20BREXT_FLAVOR = STM32MP157A-DK1_SCMI
21STM32MP1_DTS_BASENAME = stm32mp157a-dk1
Etienne Carrierec2a4d272023-11-15 14:57:23 +010022STM32MP1_DTS_LINUX ?= $(STM32MP1_DTS_BASENAME)-scmi
23STM32MP1_DTS_U_BOOT ?= $(STM32MP1_DTS_BASENAME)-scmi
Etienne Carrierea0a090a2023-11-24 14:11:23 +010024WITH_SRAM1_PAGER_POOL ?= y
Johann Neuhausere43efa52022-09-08 15:48:29 +020025else ifeq ($(PLATFORM),stm32mp1-157A_DHCOR_AVENGER96)
26BREXT_FLAVOR = STM32MP157A-DHCOR-AVENGER96
27STM32MP1_DTS_BASENAME = stm32mp157a-dhcor-avenger96
Etienne Carriered7c32d42023-11-15 14:53:59 +010028STM32MP1_DTS_U_BOOT = stm32mp15xx-dhcor-avenger96
Johann Neuhauser59146392022-09-08 15:49:00 +020029else ifeq ($(PLATFORM),stm32mp1-157C_DHCOM_PDK2)
30BREXT_FLAVOR = STM32MP157C-DHCOM-PDK2
31STM32MP1_DTS_BASENAME = stm32mp157c-dhcom-pdk2
Etienne Carriered7c32d42023-11-15 14:53:59 +010032STM32MP1_DTS_U_BOOT = stm32mp15xx-dhcom-pdk2
Etienne Carrierebba59722020-05-16 13:42:36 +020033else ifeq ($(PLATFORM),stm32mp1-157C_DK2)
34BREXT_FLAVOR = STM32MP157C-DK2
35STM32MP1_DTS_BASENAME = stm32mp157c-dk2
Etienne Carrierea155d662023-12-11 16:13:57 +010036else ifeq ($(PLATFORM),stm32mp1-157C_DK2_SCMI)
37BREXT_FLAVOR = STM32MP157C-DK2_SCMI
38STM32MP1_DTS_BASENAME = stm32mp157c-dk2
Etienne Carrierec2a4d272023-11-15 14:57:23 +010039STM32MP1_DTS_LINUX ?= $(STM32MP1_DTS_BASENAME)-scmi
40STM32MP1_DTS_U_BOOT ?= $(STM32MP1_DTS_BASENAME)-scmi
Etienne Carrierea0a090a2023-11-24 14:11:23 +010041WITH_SRAM1_PAGER_POOL ?= y
Etienne Carrierebba59722020-05-16 13:42:36 +020042else ifeq ($(PLATFORM),stm32mp1-157C_EV1)
43BREXT_FLAVOR = STM32MP157C-EV1
44STM32MP1_DTS_BASENAME = stm32mp157c-ev1
Etienne Carrierea155d662023-12-11 16:13:57 +010045else ifeq ($(PLATFORM),stm32mp1-157C_EV1_SCMI)
46BREXT_FLAVOR = STM32MP157C-EV1_SCMI
47STM32MP1_DTS_BASENAME = stm32mp157c-ev1
Etienne Carrierec2a4d272023-11-15 14:57:23 +010048STM32MP1_DTS_LINUX ?= $(STM32MP1_DTS_BASENAME)-scmi
49STM32MP1_DTS_U_BOOT ?= $(STM32MP1_DTS_BASENAME)-scmi
Etienne Carrierea0a090a2023-11-24 14:11:23 +010050WITH_SRAM1_PAGER_POOL ?= y
Etienne Carriereb7970d02022-09-20 18:45:50 +020051CFG_RPMB_FS_DEV_ID = 1
Etienne Carriere4dc69082021-04-08 12:41:11 +020052else ifeq ($(PLATFORM),stm32mp1-157C_ED1)
53BREXT_FLAVOR = STM32MP157C-ED1
54STM32MP1_DTS_BASENAME = stm32mp157c-ed1
Etienne Carrierea155d662023-12-11 16:13:57 +010055else ifeq ($(PLATFORM),stm32mp1-157C_ED1_SCMI)
56BREXT_FLAVOR = STM32MP157C-ED1_SCMI
57STM32MP1_DTS_BASENAME = stm32mp157c-ed1
Etienne Carrierec2a4d272023-11-15 14:57:23 +010058STM32MP1_DTS_LINUX ?= $(STM32MP1_DTS_BASENAME)-scmi
59STM32MP1_DTS_U_BOOT ?= $(STM32MP1_DTS_BASENAME)-scmi
Etienne Carrierea0a090a2023-11-24 14:11:23 +010060WITH_SRAM1_PAGER_POOL ?= y
Etienne Carriere4b263e22022-06-30 10:02:06 +020061else ifeq ($(PLATFORM),stm32mp1-135F_DK)
62BREXT_FLAVOR = STM32MP135F-DK
63STM32MP1_DTS_BASENAME = stm32mp135f-dk
64STM32MP1_DEFCONFIG_U_BOOT = stm32mp13_defconfig
Etienne Carrierebba59722020-05-16 13:42:36 +020065else
66$(error Unknown PLATFORM $(PLATFORM))
67endif
68
Etienne Carriere0875f532023-11-13 20:18:31 +010069STM32MP1_DTS_LINUX ?= $(STM32MP1_DTS_BASENAME)
Johann Neuhauser0509e682022-09-08 15:42:30 +020070STM32MP1_DTS_U_BOOT ?= $(STM32MP1_DTS_BASENAME)
Etienne Carriere4b263e22022-06-30 10:02:06 +020071STM32MP1_DEFCONFIG_U_BOOT ?= stm32mp15_defconfig
Johann Neuhauser0509e682022-09-08 15:42:30 +020072
Etienne Carriereb7970d02022-09-20 18:45:50 +020073# When enabled WITH_RPMB_TEST enables RPMB secure storage test configuration.
74# The configuraiton enables OP-TEE RPMB test key (CFG_RPMB_TESTKEY=y)
75# and CFG_REE_FS_ALLOW_RESET to allow testing with an empty REE_FS secure
76# storage content wihtout needing to reset the full RPMB_FS secure storage.
77# This configuration switch is intended to platforms with an eMMC device.
78WITH_RPMB_TEST ?= n
79
Etienne Carrierea0a090a2023-11-24 14:11:23 +010080# When enabled WITH_SRAM1_PAGER_POOL makes OP-TEE pager core to use secure
81# SYSRAM and SRAM1. This switch concerns STM32MP15 based platforms only.
82WITH_SRAM1_PAGER_POOL ?= n
83
Etienne Carrierebba59722020-05-16 13:42:36 +020084################################################################################
85# Binary images names
86################################################################################
87
88TFA_BIN := tf-a-$(STM32MP1_DTS_BASENAME).stm32
Etienne Carrierefd392b82022-03-10 20:24:56 +010089TFA_FIP_BIN := fip.bin
90OPTEE_HEADER_BIN := tee-header_v2.bin
91OPTEE_PAGER_BIN := tee-pager_v2.bin
92OPTEE_PAGEABLE_BIN := tee-pageable_v2.bin
93U_BOOT_BIN := u-boot.bin
94U_BOOT_DTB := u-boot.dtb
Etienne Carrierebba59722020-05-16 13:42:36 +020095LINUX_KERNEL_BIN := uImage
Etienne Carrierebba59722020-05-16 13:42:36 +020096
97################################################################################
98# Paths to git projects and various binaries
99################################################################################
100BINARIES_PATH ?= $(ROOT)/out/bin
101TFA_PATH ?= $(ROOT)/trusted-firmware-a
102U_BOOT_PATH ?= $(ROOT)/u-boot
Etienne Carriere47ba0072022-11-04 13:52:10 +0100103SCPFW_PATH ?= $(ROOT)/scp-firmware
Etienne Carrierebba59722020-05-16 13:42:36 +0200104
105define install_in_binaries
106 echo " INSTALL $(shell basename $1) to $(BINARIES_PATH)" && \
107 mkdir -p $(BINARIES_PATH) && \
108 ln -sf $1 $(BINARIES_PATH)
109endef
110
111################################################################################
112# Main targets
113################################################################################
114all: tfa optee-os u-boot linux buildroot
115 @$(call install_in_binaries,$(ROOT)/out-br/images/sdcard.img)
116 @echo Build for platform $(PLATFORM) completed
117
Etienne Carrierea32b9b92020-09-22 10:17:09 +0200118clean: tfa-clean optee-os-clean u-boot-clean linux-clean buildroot-clean
Etienne Carrierebba59722020-05-16 13:42:36 +0200119
120include toolchain.mk
121
122################################################################################
123# OP-TEE OS
124################################################################################
Etienne Carriereb7970d02022-09-20 18:45:50 +0200125ifeq ($(WITH_RPMB_TEST),y)
126CFG_RPMB_FS_DEV_ID ?= 1
127OPTEE_OS_COMMON_FLAGS += \
128 CFG_RPMB_FS_DEV_ID=$(CFG_RPMB_FS_DEV_ID) \
129 CFG_RPMB_FS=y \
130 CFG_RPMB_TESTKEY=y \
131 CFG_REE_FS_ALLOW_RESET=y
132endif # WITH_RPMB_TEST
Etienne Carriere47ba0072022-11-04 13:52:10 +0100133
Etienne Carrierea0a090a2023-11-24 14:11:23 +0100134ifeq ($(WITH_SRAM1_PAGER_POOL),y)
135OPTEE_OS_COMMON_FLAGS += CFG_TZSRAM_SIZE=0x60000
136endif # WITH_SRAM1_PAGER_POOL
137
Etienne Carriere47ba0072022-11-04 13:52:10 +0100138# Provide scp-firmware source tree path in case CFG_SCMI_SERVER is enabled
139OPTEE_OS_COMMON_FLAGS += CFG_SCP_FIRMWARE=$(SCPFW_PATH)
140
Etienne Carrierebba59722020-05-16 13:42:36 +0200141optee-os: optee-os-common
142 @$(call install_in_binaries,$(OPTEE_OS_PATH)/out/arm/core/$(OPTEE_HEADER_BIN))
143 @$(call install_in_binaries,$(OPTEE_OS_PATH)/out/arm/core/$(OPTEE_PAGER_BIN))
144 @$(call install_in_binaries,$(OPTEE_OS_PATH)/out/arm/core/$(OPTEE_PAGEABLE_BIN))
145
146optee-os-clean: optee-os-clean-common
147
148################################################################################
149# TrustedFirmware-A
150################################################################################
151TFA_EXPORTS ?= CROSS_COMPILE="$(CCACHE)$(AARCH32_CROSS_COMPILE)"
152
153TFA_DEBUG ?= $(DEBUG)
154ifeq ($(TFA_DEBUG),0)
155TFA_LOGLVL ?= 30
156TFA_OUT = $(TFA_PATH)/build/stm32mp1/release
157else
158TFA_LOGLVL ?= 50
159TFA_OUT = $(TFA_PATH)/build/stm32mp1/debug
160endif
161
162TFA_FLAGS ?= \
163 BL32=$(BINARIES_PATH)/$(OPTEE_HEADER_BIN) \
164 BL32_EXTRA1=$(BINARIES_PATH)/$(OPTEE_PAGER_BIN) \
165 BL32_EXTRA2=$(BINARIES_PATH)/$(OPTEE_PAGEABLE_BIN) \
166 BL33=$(BINARIES_PATH)/$(U_BOOT_BIN) \
Etienne Carrierefd392b82022-03-10 20:24:56 +0100167 BL33_CFG=$(BINARIES_PATH)/$(U_BOOT_DTB) \
Etienne Carrierebba59722020-05-16 13:42:36 +0200168 ARM_ARCH_MAJOR=7 \
169 ARCH=aarch32 \
170 PLAT=stm32mp1 \
171 DTB_FILE_NAME=$(STM32MP1_DTS_BASENAME).dtb \
172 AARCH32_SP=optee \
173 DEBUG=$(TFA_DEBUG) \
174 LOG_LEVEL=$(TFA_LOGLVL) \
Etienne Carrieref122ebb2023-11-07 13:48:26 +0100175 STM32MP15_OPTEE_RSV_SHM=0 \
Etienne Carrierebba59722020-05-16 13:42:36 +0200176 STM32MP_EMMC=1 STM32MP_SDMMC=1 \
Etienne Carrierebba59722020-05-16 13:42:36 +0200177 STM32MP_RAW_NAND=0 STM32MP_SPI_NAND=0 STM32MP_SPI_NOR=0
178
179tfa: optee-os u-boot
Etienne Carrierefd392b82022-03-10 20:24:56 +0100180 $(TFA_EXPORTS) $(MAKE) -C $(TFA_PATH) $(TFA_FLAGS) all fip
Etienne Carrierebba59722020-05-16 13:42:36 +0200181 @$(call install_in_binaries,$(TFA_OUT)/$(TFA_BIN))
Etienne Carrierefd392b82022-03-10 20:24:56 +0100182 @$(call install_in_binaries,$(TFA_OUT)/$(TFA_FIP_BIN))
Etienne Carrierebba59722020-05-16 13:42:36 +0200183
184tfa-clean:
185 $(TFA_EXPORTS) $(MAKE) -C $(TFA_PATH) $(TFA_FLAGS) clean
186
187################################################################################
188# U-Boot
189################################################################################
190U_BOOT_EXPORTS ?= CROSS_COMPILE="$(CCACHE)$(AARCH32_CROSS_COMPILE)"
191
Etienne Carrierebba59722020-05-16 13:42:36 +0200192u-boot:
Etienne Carriere4b263e22022-06-30 10:02:06 +0200193 $(U_BOOT_EXPORTS) $(MAKE) -C $(U_BOOT_PATH) $(STM32MP1_DEFCONFIG_U_BOOT)
Johann Neuhauser076b93f2023-10-06 11:21:06 +0200194 $(U_BOOT_EXPORTS) $(MAKE) -C $(U_BOOT_PATH) DEVICE_TREE=$(STM32MP1_DTS_U_BOOT) all
Etienne Carrierebba59722020-05-16 13:42:36 +0200195 @$(call install_in_binaries,$(U_BOOT_PATH)/$(U_BOOT_BIN))
Etienne Carrierefd392b82022-03-10 20:24:56 +0100196 @$(call install_in_binaries,$(U_BOOT_PATH)/$(U_BOOT_DTB))
Etienne Carrierebba59722020-05-16 13:42:36 +0200197
198u-boot-clean:
199 $(U_BOOT_EXPORTS) $(MAKE) -C $(U_BOOT_PATH) clean
200
201################################################################################
202# Linux kernel
203################################################################################
204LINUX_DEFCONFIG_COMMON_ARCH := arm
205LINUX_DEFCONFIG_COMMON_FILES := \
206 $(LINUX_PATH)/arch/arm/configs/multi_v7_defconfig \
207 $(CURDIR)/kconfigs/stm32mp1.conf
208
209linux-defconfig: $(LINUX_PATH)/.config
210
211LINUX_COMMON_FLAGS += ARCH=arm uImage LOADADDR=0xc2000000 \
212 CROSS_COMPILE=$(CROSS_COMPILE_NS_KERNEL) \
Etienne Carriere0875f532023-11-13 20:18:31 +0100213 st/$(STM32MP1_DTS_LINUX).dtb \
Etienne Carrierebba59722020-05-16 13:42:36 +0200214 PATH=$$PATH:$(U_BOOT_PATH)/tools
215
216linux: linux-common
217 @$(call install_in_binaries,$(LINUX_PATH)/arch/arm/boot/$(LINUX_KERNEL_BIN))
Etienne Carriere0875f532023-11-13 20:18:31 +0100218 @$(call install_in_binaries,$(LINUX_PATH)/arch/arm/boot/dts/st/$(STM32MP1_DTS_LINUX).dtb)
Etienne Carrierebba59722020-05-16 13:42:36 +0200219
220linux-defconfig-clean: linux-defconfig-clean-common
221
222LINUX_CLEAN_COMMON_FLAGS += ARCH=arm
223
224linux-clean: linux-clean-common
225
226LINUX_CLEANER_COMMON_FLAGS += ARCH=arm
227
228linux-cleaner: linux-cleaner-common
229
230################################################################################
231# Buildroot
232################################################################################
233
234BR2_TARGET_GENERIC_ISSUE="OP-TEE embedded distrib for $(PLATFORM)"
235BR2_TARGET_GENERIC_GETTY_PORT=ttySTM0
236BR2_TARGET_ROOTFS_EXT2=y
237BR2_PACKAGE_BUSYBOX_WATCHDOG=y
238
239BREXT_BOARD_PATH=$(ROOT)/build/br-ext/board/stmicroelectronics/stm32mp1-tz
Etienne Carriere1cfb2242023-12-12 14:54:32 +0100240BREXT_GENIMAGE_CONFIG=$(BREXT_BOARD_PATH)/genimage.cfg
Etienne Carriere54330202023-12-12 14:55:15 +0100241BREXT_BOOTFS_OVERLAY=$(BREXT_BOARD_PATH)/overlay
Etienne Carrierebba59722020-05-16 13:42:36 +0200242
243BR2_PACKAGE_HOST_GENIMAGE=y
Etienne Carriere54330202023-12-12 14:55:15 +0100244BR2_ROOTFS_POST_SCRIPT_ARGS="$(BREXT_GENIMAGE_CONFIG) $(BINARIES_PATH) $(BREXT_BOOTFS_OVERLAY) $(STM32MP1_DTS_BASENAME) $(STM32MP1_DTS_LINUX)"
Etienne Carrierebba59722020-05-16 13:42:36 +0200245BR2_ROOTFS_POST_IMAGE_SCRIPT=$(BREXT_BOARD_PATH)/post-image.sh
246
Etienne Carriereb7970d02022-09-20 18:45:50 +0200247ifeq ($(WITH_RPMB_TEST),y)
248# Use S30optee init.d script that runs tee-supplicant as root
Etienne Carriere0a6733d2024-01-17 17:09:34 +0100249BR2_ROOTFS_OVERLAY=$(BREXT_BOARD_PATH)/overlay-rootfs-rpmb
Etienne Carriereb7970d02022-09-20 18:45:50 +0200250# Disable RPMB emulation in tee-supplicant
251BR2_PACKAGE_OPTEE_CLIENT_EXT_RPMB_EMU=n
252endif # WITH_RPMB_TEST
253
Etienne Carrierebba59722020-05-16 13:42:36 +0200254# TF-A, Linux kernel, U-Boot and OP-TEE OS/Client/... are not built from their
255# related Buildroot native package.
256BR2_TARGET_ARM_TRUSTED_FIRMWARE=n
257BR2_LINUX_KERNEL=n
258BR2_TARGET_OPTEE_OS=n
259BR2_TARGET_UBOOT=n
260BR2_PACKAGE_OPTEE_CLIENT=n
261BR2_PACKAGE_OPTEE_TEST=n
262BR2_PACKAGE_OPTEE_EXAMPLES=n
263BR2_PACKAGE_OPTEE_BENCHMARK=n
264
265################################################################################
266# We build the SD card image from Builroot but TF-A, OP-TEE OS, U-Boot and
267# Linux kernel are build outside Buildroot. The get a clear picture of built
268# images, images built outside Buildroot are installed (ln -s) in BINARIES_PATH
269# and copied (cp -f) to Buildroot output images/ directory before make taget
270# buildroot is processed.
271################################################################################
272define install_in_br_images
273 cp -f $(BINARIES_PATH)/$1 $(ROOT)/out-br/images
274endef
275
276.PHONY: optee-os optee-os-clean
277.PHONY: u-boot u-boot-clean
278.PHONY: copy_images_to_br
279
280buildroot: copy_images_to_br
281copy_images_to_br: tfa optee-os u-boot linux
282 @mkdir -p $(ROOT)/out-br/images
283 $(call install_in_br_images,$(TFA_BIN))
Etienne Carrierefd392b82022-03-10 20:24:56 +0100284 $(call install_in_br_images,$(TFA_FIP_BIN))
Etienne Carrierebba59722020-05-16 13:42:36 +0200285 $(call install_in_br_images,$(U_BOOT_BIN))
Etienne Carrierefd392b82022-03-10 20:24:56 +0100286 $(call install_in_br_images,$(U_BOOT_DTB))
Etienne Carrierebba59722020-05-16 13:42:36 +0200287 $(call install_in_br_images,$(LINUX_KERNEL_BIN))
Etienne Carriere0875f532023-11-13 20:18:31 +0100288 $(call install_in_br_images,$(STM32MP1_DTS_LINUX).dtb)
Etienne Carrierebba59722020-05-16 13:42:36 +0200289 $(call install_in_br_images,$(OPTEE_HEADER_BIN))
290 $(call install_in_br_images,$(OPTEE_PAGER_BIN))
291 $(call install_in_br_images,$(OPTEE_PAGEABLE_BIN))