2 # Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
4 # SPDX-License-Identifier: BSD-3-Clause
11 MULTI_CONSOLE_API
:= 1
15 # Not needed for Cortex-A7
16 WORKAROUND_CVE_2017_5715
:= 0
18 # Number of TF-A copies in the device
19 STM32_TF_A_COPIES
:= 2
20 $(eval
$(call add_define
,STM32_TF_A_COPIES
))
21 PLAT_PARTITION_MAX_ENTRIES
:= $(shell echo
$$(($(STM32_TF_A_COPIES
) + 1)))
22 $(eval
$(call add_define
,PLAT_PARTITION_MAX_ENTRIES
))
24 PLAT_INCLUDES
:= -Iplat
/st
/stm32mp1
/include/
25 PLAT_INCLUDES
+= -Iinclude
/common
/tbbr
26 PLAT_INCLUDES
+= -Iinclude
/drivers
/partition
27 PLAT_INCLUDES
+= -Iinclude
/drivers
/st
30 STM32_DTB_FILE_NAME ?
= stm32mp157c-ev1.dtb
31 FDT_SOURCES
:= $(addprefix fdts
/, $(patsubst %.dtb
,%.dts
,$(STM32_DTB_FILE_NAME
)))
32 DTC_FLAGS
+= -Wno-unit_address_vs_reg
34 include lib
/libfdt
/libfdt.mk
36 PLAT_BL_COMMON_SOURCES
:= plat
/st
/stm32mp1
/stm32mp1_common.c
38 PLAT_BL_COMMON_SOURCES
+= drivers
/console
/aarch32
/console.S \
39 drivers
/st
/uart
/aarch32
/stm32_console.S
41 ifneq (${ENABLE_STACK_PROTECTOR},0)
42 PLAT_BL_COMMON_SOURCES
+= plat
/st
/stm32mp1
/stm32mp1_stack_protector.c
45 include lib
/xlat_tables_v2
/xlat_tables.mk
46 PLAT_BL_COMMON_SOURCES
+= ${XLAT_TABLES_LIB_SRCS}
48 PLAT_BL_COMMON_SOURCES
+= lib
/cpus
/aarch32
/cortex_a7.S
50 PLAT_BL_COMMON_SOURCES
+= ${LIBFDT_SRCS} \
51 drivers
/arm
/tzc
/tzc400.c \
52 drivers
/delay_timer
/delay_timer.c \
53 drivers
/delay_timer
/generic_delay_timer.c \
54 drivers
/st
/clk
/stm32mp1_clk.c \
55 drivers
/st
/clk
/stm32mp1_clkfunc.c \
56 drivers
/st
/ddr
/stm32mp1_ddr_helpers.c \
57 drivers
/st
/gpio
/stm32_gpio.c \
58 drivers
/st
/pmic
/stm32_i2c.c \
59 drivers
/st
/pmic
/stm32mp1_pmic.c \
60 drivers
/st
/pmic
/stpmu1.c \
61 drivers
/st
/reset
/stm32mp1_reset.c \
62 plat
/st
/stm32mp1
/stm32mp1_context.c \
63 plat
/st
/stm32mp1
/stm32mp1_dt.c \
64 plat
/st
/stm32mp1
/stm32mp1_helper.S \
65 plat
/st
/stm32mp1
/stm32mp1_security.c
67 BL2_SOURCES
+= drivers
/io
/io_block.c \
68 drivers
/io
/io_dummy.c \
69 drivers
/io
/io_storage.c \
70 drivers
/st
/io
/io_stm32image.c \
71 plat
/st
/stm32mp1
/bl2_io_storage.c \
72 plat
/st
/stm32mp1
/bl2_plat_setup.c
74 BL2_SOURCES
+= drivers
/mmc
/mmc.c \
75 drivers
/partition
/gpt.c \
76 drivers
/partition
/partition.c \
77 drivers
/st
/io
/io_mmc.c \
78 drivers
/st
/mmc
/stm32_sdmmc2.c
80 BL2_SOURCES
+= drivers
/st
/ddr
/stm32mp1_ddr.c \
81 drivers
/st
/ddr
/stm32mp1_ram.c
83 BL2_SOURCES
+= common
/desc_image_load.c \
84 plat
/st
/stm32mp1
/plat_bl2_mem_params_desc.c \
85 plat
/st
/stm32mp1
/plat_image_load.c
87 # For memory footprint optimization, build with thumb and interwork support
88 ASFLAGS
+= -mthumb
-mthumb-interwork
89 TF_CFLAGS
+= -mthumb
-mthumb-interwork
91 # Macros and rules to build TF binary
92 STM32_TF_ELF_LDFLAGS
:= --hash-style
=gnu
--as-needed
93 STM32_DT_BASENAME
:= $(STM32_DTB_FILE_NAME
:.dtb
=)
94 STM32_TF_STM32
:= ${BUILD_PLAT}/tf-a-
${STM32_DT_BASENAME}.stm32
95 STM32_TF_BINARY
:= $(STM32_TF_STM32
:.stm32
=.bin
)
96 STM32_TF_MAPFILE
:= $(STM32_TF_STM32
:.stm32
=.map
)
97 STM32_TF_LINKERFILE
:= $(STM32_TF_STM32
:.stm32
=.
ld)
98 STM32_TF_ELF
:= $(STM32_TF_STM32
:.stm32
=.elf
)
99 STM32_TF_DTBFILE
:= ${BUILD_PLAT}/fdts
/${STM32_DTB_FILE_NAME}
100 STM32_TF_OBJS
:= ${BUILD_PLAT}/stm32mp1.o
102 # Variables for use with stm32image
103 STM32IMAGEPATH ?
= tools
/stm32image
104 STM32IMAGE ?
= ${STM32IMAGEPATH}/stm32image
${BIN_EXT}
106 .PHONY
: ${STM32_TF_STM32}
109 all: check_dtc_version
${STM32_TF_STM32} stm32image
111 ifeq ($(AARCH32_SP
),sp_min
)
112 # BL32 is built only if using SP_MIN
114 BL32_PATH
:= -DBL32_BIN_PATH
=\"${BUILD_PLAT}/bl32.bin
\"
117 distclean realclean clean: clean_stm32image
120 ${Q}${MAKE} CPPFLAGS
="" --no-print-directory
-C
${STM32IMAGEPATH}
123 ${Q}${MAKE} --no-print-directory
-C
${STM32IMAGEPATH} clean
126 $(eval DTC_V
= $(shell $(DTC
) -v | awk
'{print $$NF}'))
127 $(eval DTC_VERSION
= $(shell printf
"%d" $(shell echo
${DTC_V} | cut
-d-
-f1 | sed
"s/\./0/g")))
128 @if
[ ${DTC_VERSION} -lt
10404 ]; then \
129 echo
"dtc version too old (${DTC_V}), you need at least version 1.4.4"; \
134 ${STM32_TF_OBJS}: plat
/st
/stm32mp1
/stm32mp1.S bl2
${BL32_DEP} ${STM32_TF_DTBFILE}
136 ${Q}${AS} ${ASFLAGS} ${TF_CFLAGS} \
138 -DBL2_BIN_PATH
=\"${BUILD_PLAT}/bl2.bin
\" \
139 -DDTB_BIN_PATH
=\"${STM32_TF_DTBFILE}\" \
140 -c plat
/st
/stm32mp1
/stm32mp1.S
-o
$@
142 ${STM32_TF_LINKERFILE}: plat
/st
/stm32mp1
/stm32mp1.
ld.S
144 ${Q}${AS} ${ASFLAGS} ${TF_CFLAGS} -P
-E
$< -o
$@
146 ${STM32_TF_ELF}: ${STM32_TF_OBJS} ${STM32_TF_LINKERFILE}
148 ${Q}${LD} -o
$@
${STM32_TF_ELF_LDFLAGS} -Map
=${STM32_TF_MAPFILE} --script
${STM32_TF_LINKERFILE} ${STM32_TF_OBJS}
150 ${STM32_TF_BINARY}: ${STM32_TF_ELF}
151 ${Q}${OC} -O binary
${STM32_TF_ELF} $@
153 @echo
"Built $@ successfully"
156 ${STM32_TF_STM32}: stm32image
${STM32_TF_BINARY}
159 $(eval LOADADDR
= $(shell cat
${STM32_TF_MAPFILE} | grep RAM | awk
'{print $$2}'))
160 $(eval ENTRY
= $(shell cat
${STM32_TF_MAPFILE} | grep
"__BL2_IMAGE_START" | awk
'{print $$1}'))
161 ${STM32IMAGE} -s
${STM32_TF_BINARY} -d
$@
-l
$(LOADADDR
) -e
${ENTRY} -v
${STM32_TF_VERSION}