TF-A-STM32MP: update to v2.4-stm32mp-r1
Signed-off-by: Romuald JEANNE <romuald.jeanne@st.com> Change-Id: I1cbb828422280231c17e9673e8a85600ab6041e4
This commit is contained in:
parent
a95cc1ec39
commit
b986ba2af3
|
|
@ -10,115 +10,179 @@ COPYLEFT_LICENSE_INCLUDE_append = " BSD-3* "
|
|||
inherit archiver_stm32mp_clean
|
||||
|
||||
archiver_create_makefile_for_sdk() {
|
||||
. ${T}/tfaconfig_env
|
||||
|
||||
# Init internal var for tfa_config_oemake: should be 'config,extraoemake'
|
||||
for config in ${TF_A_CONFIG}; do
|
||||
tf_a_config_oemake="${tf_a_config_oemake} ${config},\"$(eval echo \$TF_A_CONFIG_${config})\""
|
||||
done
|
||||
|
||||
mkdir -p ${ARCHIVER_OUTDIR}
|
||||
cat << EOF > ${ARCHIVER_OUTDIR}/Makefile.sdk
|
||||
#remove default variable
|
||||
LDFLAGS=
|
||||
CFLAGS=
|
||||
CPPFLAGS=
|
||||
CC=
|
||||
CPP=
|
||||
AS=
|
||||
AR=
|
||||
LD=
|
||||
NM=
|
||||
# Set default path
|
||||
SRC_PATH ?= \$(PWD)
|
||||
BLD_PATH ?= \$(SRC_PATH)/../build
|
||||
DEPLOYDIR ?= \$(SRC_PATH)/../deploy
|
||||
|
||||
LOCAL_PATH=\$(PWD)
|
||||
BL32_DEPLOYDIR ?= \$(DEPLOYDIR)/bl32
|
||||
FWCONFIG_DEPLOYDIR ?= \$(DEPLOYDIR)/fwconfig
|
||||
|
||||
EXTRA_OEMAKE=${EXTRA_OEMAKE}
|
||||
EXTRA_OEMAKE_SERIAL=\$(filter-out STM32MP_SDMMC=1 STM32MP_EMMC=1 STM32MP_SPI_NOR=1 STM32MP_RAW_NAND=1 STM32MP_SPI_NAND=1,\$(EXTRA_OEMAKE)) STM32MP_UART_PROGRAMMER=1 STM32MP_USB_PROGRAMMER=1
|
||||
|
||||
# Set default config
|
||||
ELF_DEBUG_ENABLE ?= ${ELF_DEBUG_ENABLE}
|
||||
TF_A_CONFIG ?= ${TF_A_CONFIG} serialboot
|
||||
|
||||
# Set specific OEMAKE config
|
||||
TF_A_CONFIG_OEMAKE = ${tf_a_config_oemake} serialboot,"AARCH32_SP=sp_min"
|
||||
# Set default TFA_DEVICETREE
|
||||
TFA_DEVICETREE ?= ${TF_A_DEVICETREE}
|
||||
|
||||
#Set default TF_A_ENABLE_DEBUG_WRAPPER
|
||||
# Configure default TF-A features
|
||||
TF_A_ENABLE_DEBUG_WRAPPER ?= ${TF_A_ENABLE_DEBUG_WRAPPER}
|
||||
|
||||
# Configure FIP
|
||||
ENABLE_FIP ?= ${@bb.utils.contains('MACHINE_FEATURES', 'fip', '1', '', d)}
|
||||
|
||||
# Set default TF-A config
|
||||
TF_A_CONFIG ?= ${TF_A_CONFIG}
|
||||
|
||||
# Default TF-A overall settings to null
|
||||
TF_A_BINARY ?=
|
||||
TF_A_DEVICETREE ?=
|
||||
TF_A_MAKE_TARGET ?=
|
||||
TF_A_EXTRA_OPTFLAGS ?=
|
||||
|
||||
EOF
|
||||
unset i
|
||||
for config in ${TF_A_CONFIG}; do
|
||||
i=$(expr $i + 1)
|
||||
cat << EOF >> ${ARCHIVER_OUTDIR}/Makefile.sdk
|
||||
# Init default config settings
|
||||
TF_A_DEVICETREE_$config ?= $(echo ${TF_A_DEVICETREE} | cut -d',' -f${i})
|
||||
TF_A_EXTRA_OPTFLAGS_$config ?= $(echo ${TF_A_EXTRA_OPTFLAGS} | cut -d',' -f${i})
|
||||
TF_A_BINARY_$config ?= $(echo ${TF_A_BINARIES} | cut -d',' -f${i})
|
||||
TF_A_MAKE_TARGET_$config ?= $(echo ${TF_A_MAKE_TARGET} | cut -d',' -f${i})
|
||||
|
||||
EOF
|
||||
done
|
||||
cat << EOF >> ${ARCHIVER_OUTDIR}/Makefile.sdk
|
||||
# Reset default variables
|
||||
LDFLAGS =
|
||||
CFLAGS =
|
||||
CPPFLAGS =
|
||||
CC =
|
||||
CPP =
|
||||
AS =
|
||||
AR =
|
||||
LD =
|
||||
NM =
|
||||
# Define default make options
|
||||
EXTRA_OEMAKE ?= ${EXTRA_OEMAKE}
|
||||
|
||||
# Configure overall devicetree list for FIP
|
||||
TF_A_DEVICETREE_ALL = $(echo "${TF_A_DEVICETREE}" | sed 's/,/ /g' | xargs -n1 | sort -u | xargs)
|
||||
|
||||
# Display TF-A config details
|
||||
define tf-configs
|
||||
echo " \$(1)" ; \\
|
||||
echo " with device tree : \$(if \$(TF_A_DEVICETREE),\$(TF_A_DEVICETREE),\$(TF_A_DEVICETREE_\$(1)))" ; \\
|
||||
echo " extra optionflags: \$(if \$(TF_A_EXTRA_OPTFLAGS),\$(TF_A_EXTRA_OPTFLAGS),\$(TF_A_EXTRA_OPTFLAGS_\$(1)))" ; \\
|
||||
echo " binary basename : \$(if \$(TF_A_BINARY),\$(TF_A_BINARY),\$(TF_A_BINARY_\$(1)) (TF_A_BINARY_\$(1)))" ; \\
|
||||
echo " tf-a build target: \$(if \$(TF_A_MAKE_TARGET),\$(TF_A_MAKE_TARGET),\$(TF_A_MAKE_TARGET_\$(1)))" ;
|
||||
endef
|
||||
|
||||
# Configure TF-A make rules
|
||||
define tf-rules
|
||||
tf-\$(1): \$2
|
||||
@mkdir -p \$(BLD_PATH)/\$(1)
|
||||
@\$(foreach dt, \$(if \$(TF_A_DEVICETREE),\$(TF_A_DEVICETREE),\$(TF_A_DEVICETREE_\$(1))), \\
|
||||
\$(MAKE) \$(EXTRA_OEMAKE) -C \$(SRC_PATH) \\
|
||||
BUILD_PLAT=\$(BLD_PATH)/\$(1) \\
|
||||
DTB_FILE_NAME=\$(dt).dtb \\
|
||||
\$(if \$(TF_A_EXTRA_OPTFLAGS),\$(TF_A_EXTRA_OPTFLAGS),\$(TF_A_EXTRA_OPTFLAGS_\$(1))) \\
|
||||
\$(if \$(TF_A_MAKE_TARGET),\$(TF_A_MAKE_TARGET),\$(TF_A_MAKE_TARGET_\$(1))) ; \\
|
||||
)
|
||||
endef
|
||||
|
||||
# Configure TF-A deploy rules
|
||||
define deploy-rules
|
||||
deploy-\$(1): tf-\$(1)
|
||||
@mkdir -p \$(DEPLOYDIR)
|
||||
@mkdir -p \$(DEPLOYDIR)/debug
|
||||
@\$(foreach dt, \$(if \$(TF_A_DEVICETREE),\$(TF_A_DEVICETREE),\$(TF_A_DEVICETREE_\$(1))), \\
|
||||
if [ -f \$(BLD_PATH)/\$(1)/\$(2)-\$(dt).${TF_A_SUFFIX} ]; then \\
|
||||
cp -f \$(BLD_PATH)/\$(1)/\$(2)-\$(dt).${TF_A_SUFFIX} \$(DEPLOYDIR)/\$(2)-\$(dt)-\$(1).${TF_A_SUFFIX} ; \\
|
||||
if [ "\$(TF_A_ENABLE_DEBUG_WRAPPER)" = "1" ] ; then \\
|
||||
stm32wrapper4dbg -s \$(BLD_PATH)/\$(1)/\$(2)-\$(dt).${TF_A_SUFFIX} -d \$(DEPLOYDIR)/debug/debug-\$(2)-\$(dt)-\$(1).${TF_A_SUFFIX} ; \\
|
||||
fi ; \\
|
||||
fi ; \\
|
||||
if [ -f \$(BLD_PATH)/\$(1)/${BL32_BASENAME}.${BL32_SUFFIX} ] ; then \\
|
||||
mkdir -p \$(BL32_DEPLOYDIR) ; \\
|
||||
cp -f \$(BLD_PATH)/\$(1)/${BL32_BASENAME}.${BL32_SUFFIX} \$(BL32_DEPLOYDIR)/\$(2)-${BL32_BASENAME}\$(foreach soc,${STM32MP_SOC_NAME},\$(if \$(shell echo \$(dt) | grep -c \$(soc)),-\$(soc),)).${BL32_SUFFIX} ; \\
|
||||
if [ -f \$(BLD_PATH)/\$(1)/fdts/\$(dt)-${BL32_BASENAME}.${DT_SUFFIX} ]; then \\
|
||||
cp -f \$(BLD_PATH)/\$(1)/fdts/\$(dt)-${BL32_BASENAME}.${DT_SUFFIX} \$(BL32_DEPLOYDIR)/ ; \\
|
||||
fi ; \\
|
||||
if [ -f \$(BLD_PATH)/\$(1)/${BL32_ELF} ]; then \\
|
||||
mkdir -p \$(BL32_DEPLOYDIR)/debug ; \\
|
||||
mv -f \$(BLD_PATH)/\$(1)/${BL32_ELF} \$(BL32_DEPLOYDIR)/debug/\$(2)-${BL32_BASENAME}\$(foreach soc,${STM32MP_SOC_NAME},\$(if \$(shell echo \$(dt) | grep -c \$(soc)),-\$(soc),)).${TF_A_ELF_SUFFIX} ; \\
|
||||
fi ; \\
|
||||
fi ; \\
|
||||
if [ -f \$(BLD_PATH)/\$(1)/fdts/\$(dt)-${FWCONFIG_NAME}.${DT_SUFFIX} ]; then \\
|
||||
mkdir -p \$(FWCONFIG_DEPLOYDIR) ; \\
|
||||
cp -f \$(BLD_PATH)/\$(1)/fdts/\$(dt)-${FWCONFIG_NAME}.${DT_SUFFIX} \$(FWCONFIG_DEPLOYDIR)/\$(dt)-${FWCONFIG_NAME}-\$(1).${DT_SUFFIX} ; \\
|
||||
fi ; \\
|
||||
if [ -f \$(BLD_PATH)/\$(1)/${BL2_ELF} ] ; then \\
|
||||
cp -f \$(BLD_PATH)/\$(1)/${BL2_ELF} \$(DEPLOYDIR)/debug/\$(2)-${BL2_BASENAME}-\$(1).${TF_A_ELF_SUFFIX} ; \\
|
||||
fi ; \\
|
||||
if [ -f \$(BLD_PATH)/\$(1)/${BL32_ELF} ] ; then \\
|
||||
cp -f \$(BLD_PATH)/\$(1)/${BL32_ELF} \$(DEPLOYDIR)/debug/\$(2)-${BL32_BASENAME}-\$(1).${TF_A_ELF_SUFFIX} ; \\
|
||||
fi ; \\
|
||||
)
|
||||
endef
|
||||
|
||||
help:
|
||||
@echo
|
||||
@echo "Available targets:"
|
||||
@echo " all : build TF-A binaries for defined config(s)"
|
||||
@echo " clean : clean build directories from generated files"
|
||||
@echo
|
||||
@echo "TF-A configuration:"
|
||||
@echo " TF_A_CONFIG = \$(TF_A_CONFIG)"
|
||||
@echo " TFA_DEVICETREE = \$(TFA_DEVICETREE)"
|
||||
@echo " ELF_DEBUG_ENABLE = '\$(ELF_DEBUG_ENABLE)' ('1' to export elf files)"
|
||||
@echo " TF_A_ENABLE_DEBUG_WRAPPER = '\$(TF_A_ENABLE_DEBUG_WRAPPER)' ('1' to generate tf-a for debugging)"
|
||||
@echo "Config details:"
|
||||
@\$(foreach config, \$(TF_A_CONFIG), \$(call tf-configs,\$(config)))
|
||||
@echo
|
||||
@echo "Note that each TF-A configuration settings can be updated through overall or specific config var:"
|
||||
@echo " TF_A_DEVICETREE"
|
||||
@echo " TF_A_EXTRA_OPTFLAGS"
|
||||
@echo " TF_A_BINARY"
|
||||
@echo " TF_A_MAKE_TARGET"
|
||||
@echo
|
||||
@echo "TF-A features configuration:"
|
||||
@echo " TF_A_ENABLE_DEBUG_WRAPPER = \$(TF_A_ENABLE_DEBUG_WRAPPER) ('1' to generate tf-a for debugging)"
|
||||
@echo
|
||||
@echo "TF-A folder configuration:"
|
||||
@echo " SRC_PATH = \$(SRC_PATH)"
|
||||
@echo " BLD_PATH = \$(BLD_PATH)"
|
||||
@echo " DEPLOYDIR = \$(DEPLOYDIR)"
|
||||
@echo " BL32_DEPLOYDIR = \$(DEPLOYDIR)/bl32"
|
||||
@echo " FWCONFIG_DEPLOYDIR = \$(DEPLOYDIR)/fwconfig"
|
||||
@echo
|
||||
@echo "FIP configuration:"
|
||||
@echo " ENABLE_FIP = \$(ENABLE_FIP) ('1' to generate fip binary)"
|
||||
ifeq (\$(ENABLE_FIP),1)
|
||||
@echo " Do not forget to set FIP deploydir folders (such as FIP_DEPLOYDIR_ROOT) to provide path to needed binaries"
|
||||
endif
|
||||
@echo
|
||||
@echo "Available targets:"
|
||||
@echo " all : build TF-A binaries for defined config(s)"
|
||||
@echo " fip : build FIP binaries"
|
||||
@echo " stm32 : build TF-A stm32 binaries"
|
||||
@echo " clean : clean build directories from generated files"
|
||||
@echo
|
||||
|
||||
all: tf
|
||||
all: \$(addprefix deploy-,\$(TF_A_CONFIG)) \$(if \$(ENABLE_FIP),fip)
|
||||
|
||||
host_tools:
|
||||
@\$(MAKE) --no-print-directory -C \$(LOCAL_PATH)/tools/stm32image
|
||||
@\$(MAKE) --no-print-directory -C \$(SRC_PATH)/tools/stm32image
|
||||
|
||||
tf: host_tools
|
||||
for config in \$(TF_A_CONFIG) ; do \\
|
||||
# Init any extraoemake \\
|
||||
add_extraoemake= ; \\
|
||||
for fullconfig in \$(TF_A_CONFIG_OEMAKE) ; do \\
|
||||
extraconfig=\$\$(echo \$\$fullconfig | cut -d',' -f1) ; \\
|
||||
if [ "\$\$extraconfig" = "\$\$config" ]; then \\
|
||||
add_extraoemake=\$\$(echo \$\$fullconfig | cut -d',' -f2) ; \\
|
||||
fi ; \\
|
||||
done ; \\
|
||||
mkdir -p \$(LOCAL_PATH)/../build/\$\$config ; \\
|
||||
if test -n "\$(TFA_DEVICETREE)" ; then \\
|
||||
for dt in \$(TFA_DEVICETREE) ; do \\
|
||||
if [ "\$\$config" != "serialboot" ]; then \\
|
||||
\$(MAKE) \$(EXTRA_OEMAKE) -C \$(LOCAL_PATH) DTB_FILE_NAME=\$\$dt.dtb BUILD_PLAT=\$(LOCAL_PATH)/../build/\$\$config \$\$add_extraoemake ; \\
|
||||
else \\
|
||||
\$(MAKE) \$(EXTRA_OEMAKE_SERIAL) -C \$(LOCAL_PATH) DTB_FILE_NAME=\$\$dt.dtb BUILD_PLAT=\$(LOCAL_PATH)/../build/\$\$config \$\$add_extraoemake ; \\
|
||||
fi ; \\
|
||||
# Copy binary file with explicit name \\
|
||||
cp -f \$(LOCAL_PATH)/../build/\$\$config/${TF_A_BASENAME}-\$\$dt.${TF_A_SUFFIX} \$(LOCAL_PATH)/../build/\$\$config/${TF_A_BASENAME}-\$\$dt-\$\$config.${TF_A_SUFFIX} ; \\
|
||||
if [ "\$(TF_A_ENABLE_DEBUG_WRAPPER)" = "1" ]; then \\
|
||||
# Generate wrapper for debugging \\
|
||||
stm32wrapper4dbg -s \$(LOCAL_PATH)/../build/\$\$config/${TF_A_BASENAME}-\$\$dt.${TF_A_SUFFIX} -d \$(LOCAL_PATH)/../build/\$\$config/debug-${TF_A_BASENAME}-\$\$dt-\$\$config.${TF_A_SUFFIX} ; \\
|
||||
fi ; \\
|
||||
done ; \\
|
||||
else \\
|
||||
if [ "\$\$config" != "serialboot" ]; then \\
|
||||
\$(MAKE) \$(EXTRA_OEMAKE) -C \$(LOCAL_PATH) BUILD_PLAT=\$(LOCAL_PATH)/../build/\$\$config \$\$add_extraoemake; \\
|
||||
else \\
|
||||
\$(MAKE) \$(EXTRA_OEMAKE_SERIAL) -C \$(LOCAL_PATH) BUILD_PLAT=\$(LOCAL_PATH)/../build/\$\$config \$\$add_extraoemake; \\
|
||||
fi ; \\
|
||||
tf_version=\$\$(find \$(LOCAL_PATH)/../build/\$\$config -name ${TF_A_BASENAME}*.${TF_A_SUFFIX} -exec basename {} \; | sed "s/\.${TF_A_SUFFIX}//") ; \\
|
||||
# Copy binary file with explicit name \\
|
||||
cp -f \$(LOCAL_PATH)/../build/\$\$config/\$\$tf_version.${TF_A_SUFFIX} \$(LOCAL_PATH)/../build/\$\$config/\$\$tf_version-\$\$config.${TF_A_SUFFIX} ; \\
|
||||
if [ "\$(TF_A_ENABLE_DEBUG_WRAPPER)" = "1" ]; then \\
|
||||
# Generate wrapper for debugging \\
|
||||
stm32wrapper4dbg -s \$(LOCAL_PATH)/../build/\$\$config/\$\$tf_version.${TF_A_SUFFIX} \$(LOCAL_PATH)/../build/\$\$config/debug-\$\$tf_version-\$\$config.${TF_A_SUFFIX} ; \\
|
||||
fi ; \\
|
||||
fi ; \\
|
||||
# Copy elf files with explicit name \\
|
||||
if [ "\$(ELF_DEBUG_ENABLE)" = "1" ] ; then \\
|
||||
if [ -f \$(LOCAL_PATH)/../build/\$\$config/${BL2_ELF} ] ; then \\
|
||||
cp -f \$(LOCAL_PATH)/../build/\$\$config/${BL2_ELF} \$(LOCAL_PATH)/../build/\$\$config/${TF_A_BASENAME}-${BL2_BASENAME}-\$\$config.${TF_A_ELF_SUFFIX} ; \\
|
||||
fi ; \\
|
||||
if [ -f \$(LOCAL_PATH)/../build/\$\$config/${BL32_ELF} ] ; then \\
|
||||
cp -f \$(LOCAL_PATH)/../build/\$\$config/${BL32_ELF} \$(LOCAL_PATH)/../build/\$\$config/${TF_A_BASENAME}-${BL32_BASENAME}-\$\$config.${TF_A_ELF_SUFFIX} ; \\
|
||||
fi ; \\
|
||||
fi ; \\
|
||||
done
|
||||
# Set TF-A make rules
|
||||
\$(foreach config, \$(TF_A_CONFIG), \$(eval \$(call tf-rules,\$(config),host_tools)))
|
||||
|
||||
# Set TF-A deploy rules
|
||||
\$(foreach config, \$(TF_A_CONFIG), \$(eval \$(call deploy-rules,\$(config),\$(if \$(TF_A_BINARY),\$(TF_A_BINARY),\$(TF_A_BINARY_\$(config))))))
|
||||
|
||||
fip: \$(addprefix deploy-,\$(TF_A_CONFIG))
|
||||
FIP_DEPLOYDIR_TFA=\$(BL32_DEPLOYDIR) FIP_DEPLOYDIR_FWCONF=\$(FWCONFIG_DEPLOYDIR) FIP_DEVICETREE="\$(if \$(TF_A_DEVICETREE),\$(TF_A_DEVICETREE),\$(TF_A_DEVICETREE_ALL))" fiptool-stm32mp
|
||||
|
||||
stm32: \$(addprefix deploy-,\$(TF_A_CONFIG))
|
||||
|
||||
clean:
|
||||
@for config in \$(TF_A_CONFIG) ; do \\
|
||||
rm -rf \$(LOCAL_PATH)/../build/\$\$config ; \\
|
||||
echo "Removing \$(BLD_PATH)/\$\$config ..." ; \\
|
||||
rm -rf \$(BLD_PATH)/\$\$config ; \\
|
||||
done
|
||||
@echo "Removing \$(DEPLOYDIR) ..."
|
||||
@rm -rf \$(DEPLOYDIR)
|
||||
@echo
|
||||
EOF
|
||||
}
|
||||
do_ar_original[prefuncs] += "tfaconfig_env archiver_create_makefile_for_sdk"
|
||||
do_ar_original[prefuncs] += "archiver_create_makefile_for_sdk"
|
||||
|
|
|
|||
|
|
@ -1,10 +1,29 @@
|
|||
COMPATIBLE_MACHINE = "(stm32mpcommon)"
|
||||
|
||||
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
||||
|
||||
FILESEXTRAPATHS_prepend := "${THISDIR}/tf-a-stm32mp:"
|
||||
|
||||
inherit deploy
|
||||
inherit ${@bb.utils.contains('MACHINE_FEATURES', 'fip', 'fip-utils-stm32mp', '', d)}
|
||||
|
||||
# Include TF-A config definitions
|
||||
include tf-a-stm32mp-config.inc
|
||||
|
||||
# ------------------------------------
|
||||
# Set MBEDTLS support
|
||||
TFA_MBEDTLS_DIR ?= "mbedtls"
|
||||
# MBEDTLS v2.24.0
|
||||
SRC_URI_MBEDTLS = "git://github.com/ARMmbed/mbedtls.git;protocol=https;destsuffix=git/${TFA_MBEDTLS_DIR};branch=master;name=mbedtls"
|
||||
SRCREV_mbedtls = "523f0554b6cdc7ace5d360885c3f5bbcc73ec0e8"
|
||||
LIC_FILES_CHKSUM_MBEDTLS = "file://mbedtls/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
|
||||
LICENSE_MBEDTLS = "Apache-2.0"
|
||||
# Add MBEDTLS to our sources
|
||||
SRC_URI_append = " ${@bb.utils.contains('TF_A_SIGN_ENABLE', '1', '${SRC_URI_MBEDTLS}', '', d)}"
|
||||
# Update license variables
|
||||
LICENSE_append = "${@bb.utils.contains('TF_A_SIGN_ENABLE', '1', ' & ${LICENSE_MBEDTLS}', '', d)}"
|
||||
LIC_FILES_CHKSUM_append = "${@bb.utils.contains('TF_A_SIGN_ENABLE', '1', ' ${LIC_FILES_CHKSUM_MBEDTLS}', '', d)}"
|
||||
# Add mbed TLS to version
|
||||
SRCREV_FORMAT_append = "${@bb.utils.contains('TF_A_SIGN_ENABLE', '1', '_mbedtls', '', d)}"
|
||||
# ------------------------------------
|
||||
|
||||
B = "${WORKDIR}/build"
|
||||
# Configure build dir for externalsrc class usage through devtool
|
||||
|
|
@ -30,21 +49,98 @@ TF_A_ELF_SUFFIX = "elf"
|
|||
BL1_NAME ?= "bl1/bl1"
|
||||
BL1_ELF = "${BL1_NAME}.${TF_A_ELF_SUFFIX}"
|
||||
BL1_BASENAME = "${@os.path.basename(d.getVar("BL1_NAME"))}"
|
||||
BL1_BASENAME_DEPLOY ?= "${@os.path.basename(d.getVar("BL1_NAME"))}"
|
||||
|
||||
BL2_NAME ?= "bl2/bl2"
|
||||
BL2_ELF = "${BL2_NAME}.${TF_A_ELF_SUFFIX}"
|
||||
BL2_BASENAME = "${@os.path.basename(d.getVar("BL2_NAME"))}"
|
||||
BL2_BASENAME_DEPLOY ?= "${@os.path.basename(d.getVar("BL2_NAME"))}"
|
||||
|
||||
BL31_NAME ?= "bl31/bl31"
|
||||
BL31_ELF = "${BL31_NAME}.${TF_A_ELF_SUFFIX}"
|
||||
BL31_BASENAME = "${@os.path.basename(d.getVar("BL31_NAME"))}"
|
||||
BL31_BASENAME_DEPLOY ?= "${@os.path.basename(d.getVar("BL31_NAME"))}"
|
||||
BL31_SUFFIX ?= "bin"
|
||||
|
||||
BL32_NAME ?= "bl32/bl32"
|
||||
BL32_ELF = "${BL32_NAME}.${TF_A_ELF_SUFFIX}"
|
||||
BL32_BASENAME = "${@os.path.basename(d.getVar("BL32_NAME"))}"
|
||||
BL32_BASENAME_DEPLOY ?= "${@os.path.basename(d.getVar("BL32_NAME"))}"
|
||||
BL32_SUFFIX ?= "bin"
|
||||
|
||||
DT_SUFFIX ?= "dtb"
|
||||
FWCONFIG_NAME ?= "fw-config"
|
||||
|
||||
# Set default TF-A config
|
||||
TF_A_CONFIG ?= ""
|
||||
|
||||
#Enable the wrapper for debug
|
||||
# Enable the wrapper for debug
|
||||
TF_A_ENABLE_DEBUG_WRAPPER ??= "1"
|
||||
|
||||
# Set default configuration to allow signing
|
||||
TF_A_SIGN_ENABLE ??= "0"
|
||||
|
||||
# Configure specific build flags
|
||||
EXTRA_OEMAKE += "${@bb.utils.contains('TF_A_SIGN_ENABLE', '1', 'TRUSTED_BOARD_BOOT=1', '', d)}"
|
||||
EXTRA_OEMAKE += "${@bb.utils.contains('TF_A_SIGN_ENABLE', '1', 'MBEDTLS_DIR=${TFA_MBEDTLS_DIR}', '', d)}"
|
||||
|
||||
# -----------------------------------------------
|
||||
# Handle TF-A config and set internal vars
|
||||
# TF_A_DEVICETREE
|
||||
# TF_A_EXTRA_OPTFLAGS
|
||||
python () {
|
||||
import re
|
||||
|
||||
tfaconfigflags = d.getVarFlags('TF_A_CONFIG')
|
||||
# The "doc" varflag is special, we don't want to see it here
|
||||
tfaconfigflags.pop('doc', None)
|
||||
tfaconfig = (d.getVar('TF_A_CONFIG') or "").split()
|
||||
tfabasename = d.getVar('TF_A_BASENAME')
|
||||
|
||||
if not tfaconfig:
|
||||
raise bb.parse.SkipRecipe("TF_A_CONFIG must be set in the %s machine configuration." % d.getVar("MACHINE"))
|
||||
if (d.getVar('TF_A_DEVICETREE') or "").split():
|
||||
raise bb.parse.SkipRecipe("You cannot use TF_A_DEVICETREE as it is internal to TF_A_CONFIG var expansion.")
|
||||
if (d.getVar('TF_A_EXTRA_OPTFLAGS') or "").split():
|
||||
raise bb.parse.SkipRecipe("You cannot use TF_A_EXTRA_OPTFLAGS as it is internal to TF_A_CONFIG var expansion.")
|
||||
if (d.getVar('TF_A_BINARIES') or "").split():
|
||||
raise bb.parse.SkipRecipe("You cannot use TF_A_BINARIES as it is internal to TF_A_CONFIG var expansion.")
|
||||
if (d.getVar('TF_A_MAKE_TARGET') or "").split():
|
||||
raise bb.parse.SkipRecipe("You cannot use TF_A_MAKE_TARGET as it is internal to TF_A_CONFIG var expansion.")
|
||||
|
||||
if len(tfaconfig) > 0:
|
||||
for config in tfaconfig:
|
||||
for f, v in tfaconfigflags.items():
|
||||
if config == f:
|
||||
# Make sure to get var flag properly expanded
|
||||
v = d.getVarFlag('TF_A_CONFIG', config)
|
||||
if not v.strip():
|
||||
bb.fatal('[TF_A_CONFIG] Missing configuration for %s config' % config)
|
||||
items = v.split(',')
|
||||
if items[0] and len(items) > 4:
|
||||
raise bb.parse.SkipRecipe('Only <DEVICETREE>,<EXTRA_OPTFLAGS>,<BINARY_BASENAME>,<MAKE_TARGET> can be specified!')
|
||||
# Set internal vars
|
||||
bb.debug(1, "Appending '%s' to TF_A_DEVICETREE" % items[0])
|
||||
d.appendVar('TF_A_DEVICETREE', items[0] + ',')
|
||||
if len(items) > 1 and items[1]:
|
||||
bb.debug(1, "Appending '%s' to TF_A_EXTRA_OPTFLAGS." % items[1])
|
||||
d.appendVar('TF_A_EXTRA_OPTFLAGS', items[1] + ',')
|
||||
else:
|
||||
d.appendVar('TF_A_EXTRA_OPTFLAGS', '' + ',')
|
||||
if len(items) > 2 and items[2]:
|
||||
bb.debug(1, "Appending '%s' to TF_A_BINARIES." % items[2])
|
||||
d.appendVar('TF_A_BINARIES', items[2] + ',')
|
||||
else:
|
||||
bb.debug(1, "Appending '%s' to TF_A_BINARIES." % tfabasename)
|
||||
d.appendVar('TF_A_BINARIES', tfabasename + ',')
|
||||
if len(items) > 3 and items[3]:
|
||||
bb.debug(1, "Appending '%s' to TF_A_MAKE_TARGET." % items[3])
|
||||
d.appendVar('TF_A_MAKE_TARGET', items[3] + ',')
|
||||
else:
|
||||
d.appendVar('TF_A_MAKE_TARGET', 'all' + ',')
|
||||
break
|
||||
}
|
||||
|
||||
# -----------------------------------------------
|
||||
# Enable use of work-shared folder
|
||||
TFA_SHARED_SOURCES ??= "1"
|
||||
|
|
@ -83,84 +179,121 @@ base_do_unpack_append () {
|
|||
os.symlink(tfasrc, s)
|
||||
}
|
||||
|
||||
# Manage to export any specific setting for defined configs
|
||||
python tfaconfig_env () {
|
||||
if d.getVar('TF_A_CONFIG'):
|
||||
try:
|
||||
f = open( ("%s/tfaconfig_env" % d.getVar('T')), 'w')
|
||||
for config in d.getVar('TF_A_CONFIG').split():
|
||||
f.write( "export TF_A_CONFIG_%s=\"%s\"\n" % (config, d.getVar(('TF_A_CONFIG_' + config))) )
|
||||
f.close()
|
||||
except:
|
||||
pass
|
||||
}
|
||||
do_compile[prefuncs] += "tfaconfig_env"
|
||||
|
||||
do_compile() {
|
||||
. ${T}/tfaconfig_env
|
||||
|
||||
unset LDFLAGS
|
||||
unset CFLAGS
|
||||
unset CPPFLAGS
|
||||
|
||||
unset i
|
||||
for config in ${TF_A_CONFIG}; do
|
||||
# Get any specific EXTRA_OEMAKE for current config
|
||||
eval local add_extraoemake=\"\$TF_A_CONFIG_${config}\"
|
||||
if [ -n "${TF_A_DEVICETREE}" ]; then
|
||||
for dt in ${TF_A_DEVICETREE}; do
|
||||
oe_runmake -C ${S} DTB_FILE_NAME=${dt}.dtb BUILD_PLAT=${B}/${config} ${add_extraoemake}
|
||||
cp ${B}/${config}/${TF_A_BASENAME}-${dt}.${TF_A_SUFFIX} ${B}/${config}/${TF_A_BASENAME}-${dt}-${config}.${TF_A_SUFFIX}
|
||||
i=$(expr $i + 1)
|
||||
# Initialize devicetree list, extra make options and tf-a basename
|
||||
dt_config=$(echo ${TF_A_DEVICETREE} | cut -d',' -f${i})
|
||||
extra_opt=$(echo ${TF_A_EXTRA_OPTFLAGS} | cut -d',' -f${i})
|
||||
tfa_basename=$(echo ${TF_A_BINARIES} | cut -d',' -f${i})
|
||||
tf_a_make_target=$(echo ${TF_A_MAKE_TARGET} | cut -d',' -f${i})
|
||||
for dt in ${dt_config}; do
|
||||
oe_runmake -C ${S} BUILD_PLAT=${B}/${config} DTB_FILE_NAME=${dt}.dtb ${extra_opt} ${tf_a_make_target}
|
||||
# Copy TF-A binary with explicit devicetree filename
|
||||
if [ -f ${B}/${config}/${tfa_basename}-${dt}.${TF_A_SUFFIX} ]; then
|
||||
cp ${B}/${config}/${tfa_basename}-${dt}.${TF_A_SUFFIX} ${B}/${config}/${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}
|
||||
if [ "${TF_A_ENABLE_DEBUG_WRAPPER}" = "1" ]; then
|
||||
stm32wrapper4dbg -s ${B}/${config}/${TF_A_BASENAME}-${dt}.${TF_A_SUFFIX} -d ${B}/${config}/debug-${TF_A_BASENAME}-${dt}-${config}.${TF_A_SUFFIX}
|
||||
stm32wrapper4dbg -s ${B}/${config}/${tfa_basename}-${dt}.${TF_A_SUFFIX} -d ${B}/${config}/debug-${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}
|
||||
fi
|
||||
done
|
||||
else
|
||||
oe_runmake -C ${S} BUILD_PLAT=${B}/${config} ${add_extraoemake}
|
||||
tf_a_binary_basename=$(find ${B}/${config} -name "${TF_A_BASENAME}-*.${TF_A_SUFFIX}" -exec basename {} \; | sed 's|\.'"${TF_A_SUFFIX}"'||g')
|
||||
if [ "${TF_A_ENABLE_DEBUG_WRAPPER}" = "1" ]; then
|
||||
stm32wrapper4dbg -s ${B}/${config}/${tf_a_binary_basename}.${TF_A_SUFFIX} -d ${B}/${config}/debug-${tf_a_binary_basename}.${TF_A_SUFFIX}
|
||||
fi
|
||||
fi
|
||||
done
|
||||
}
|
||||
do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}/arm-trusted-firmware"
|
||||
do_deploy() {
|
||||
install -d ${DEPLOYDIR}
|
||||
|
||||
for config in ${TF_A_CONFIG}; do
|
||||
if [ -n "${TF_A_DEVICETREE}" ]; then
|
||||
for dt in ${TF_A_DEVICETREE}; do
|
||||
install -m 644 ${B}/${config}/${TF_A_BASENAME}-${dt}-${config}.${TF_A_SUFFIX} ${DEPLOYDIR}
|
||||
if [ "${TF_A_ENABLE_DEBUG_WRAPPER}" = "1" ]; then
|
||||
install -d ${DEPLOYDIR}/debug
|
||||
install -m 644 ${B}/${config}/debug-${TF_A_BASENAME}-${dt}-${config}.${TF_A_SUFFIX} ${DEPLOYDIR}/debug
|
||||
# Specific for bl32 target
|
||||
if [ "$(echo ${tf_a_make_target} | grep -cw 'bl32')" = "1" ]; then
|
||||
# Move 'bl32.elf' file to explicit file name with 'soc_suffix' info (same file for all devicetree build)
|
||||
# This avoid unexpected deployment for other config (cf. do_deploy task)
|
||||
if [ -f ${B}/${config}/${BL32_ELF} ]; then
|
||||
# Init soc suffix
|
||||
soc_suffix=""
|
||||
if [ -n "${STM32MP_SOC_NAME}" ]; then
|
||||
for soc in ${STM32MP_SOC_NAME}; do
|
||||
[ "$(echo ${dt} | grep -c ${soc})" -eq 1 ] && soc_suffix="-${soc}"
|
||||
done
|
||||
fi
|
||||
mv -f ${B}/${config}/${BL32_ELF} ${B}/${config}/${TF_A_BASENAME}-${BL32_BASENAME}${soc_suffix}.${TF_A_ELF_SUFFIX}
|
||||
fi
|
||||
done
|
||||
else
|
||||
# Get tf-a binary basename to copy
|
||||
tf_a_binary_basename=$(find ${B}/${config} -name "${TF_A_BASENAME}-*.${TF_A_SUFFIX}" -exec basename {} \; | sed 's|\.'"${TF_A_SUFFIX}"'||g')
|
||||
for f in ${tf_a_binary_basename}; do
|
||||
install -m 644 ${B}/${config}/${f}.${TF_A_SUFFIX} ${DEPLOYDIR}/${f}-${config}.${TF_A_SUFFIX}
|
||||
if [ "${TF_A_ENABLE_DEBUG_WRAPPER}" = "1" ]; then
|
||||
install -d ${DEPLOYDIR}/debug
|
||||
install -m 644 ${B}/${config}/debug-${f}.${TF_A_SUFFIX} ${DEPLOYDIR}/debug/debug-${f}-${config}.${TF_A_SUFFIX}
|
||||
fi
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -n "${ELF_DEBUG_ENABLE}" ]; then
|
||||
for config in ${TF_A_CONFIG}; do
|
||||
if [ -f ${B}/${config}/${BL1_ELF} ]; then
|
||||
install -m 644 ${B}/${config}/${BL1_ELF} ${DEPLOYDIR}/${TF_A_BASENAME}-${BL1_BASENAME}-${config}.${TF_A_ELF_SUFFIX}
|
||||
fi
|
||||
if [ -f ${B}/${config}/${BL2_ELF} ]; then
|
||||
install -m 644 ${B}/${config}/${BL2_ELF} ${DEPLOYDIR}/${TF_A_BASENAME}-${BL2_BASENAME}-${config}.${TF_A_ELF_SUFFIX}
|
||||
fi
|
||||
if [ -f ${B}/${config}/${BL32_ELF} ]; then
|
||||
install -m 644 ${B}/${config}/${BL32_ELF} ${DEPLOYDIR}/${TF_A_BASENAME}-${BL32_BASENAME}-${config}.${TF_A_ELF_SUFFIX}
|
||||
fi
|
||||
done
|
||||
fi
|
||||
done
|
||||
unset i
|
||||
}
|
||||
|
||||
do_deploy() {
|
||||
install -d ${DEPLOYDIR}
|
||||
install -d ${DEPLOYDIR}/arm-trusted-firmware
|
||||
|
||||
unset i
|
||||
for config in ${TF_A_CONFIG}; do
|
||||
i=$(expr $i + 1)
|
||||
# Initialize devicetree list and tf-a basename
|
||||
dt_config=$(echo ${TF_A_DEVICETREE} | cut -d',' -f${i})
|
||||
tfa_basename=$(echo ${TF_A_BINARIES} | cut -d',' -f${i})
|
||||
for dt in ${dt_config}; do
|
||||
# Install TF-A binary
|
||||
if [ -f ${B}/${config}/${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX} ]; then
|
||||
install -m 644 ${B}/${config}/${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX} ${DEPLOYDIR}/arm-trusted-firmware/
|
||||
if [ "${TF_A_ENABLE_DEBUG_WRAPPER}" = "1" ]; then
|
||||
install -d ${DEPLOYDIR}/arm-trusted-firmware/debug
|
||||
install -m 644 ${B}/${config}/debug-${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX} ${DEPLOYDIR}/arm-trusted-firmware/debug/
|
||||
fi
|
||||
fi
|
||||
# Init soc suffix
|
||||
soc_suffix=""
|
||||
if [ -n "${STM32MP_SOC_NAME}" ]; then
|
||||
for soc in ${STM32MP_SOC_NAME}; do
|
||||
[ "$(echo ${dt} | grep -c ${soc})" -eq 1 ] && soc_suffix="-${soc}"
|
||||
done
|
||||
fi
|
||||
# Install BL31 files
|
||||
if [ -f ${B}/${config}/${BL31_BASENAME}.${BL31_SUFFIX} ]; then
|
||||
install -d ${DEPLOYDIR}/arm-trusted-firmware/bl31
|
||||
# Install BL31 binary
|
||||
install -m 644 ${B}/${config}/${BL31_BASENAME}.${BL31_SUFFIX} ${DEPLOYDIR}/arm-trusted-firmware/bl31/${tfa_basename}-${BL31_BASENAME_DEPLOY}${soc_suffix}.${BL31_SUFFIX}
|
||||
if [ -n "${ELF_DEBUG_ENABLE}" ]; then
|
||||
if [ -f ${B}/${config}/${tfa_basename}-${BL31_BASENAME}${soc_suffix}.${TF_A_ELF_SUFFIX} ]; then
|
||||
install -d ${DEPLOYDIR}/arm-trusted-firmware/bl32/debug
|
||||
install -m 644 ${B}/${config}/${tfa_basename}-${BL31_BASENAME}${soc_suffix}.${TF_A_ELF_SUFFIX} ${DEPLOYDIR}/arm-trusted-firmware/bl31/debug/${tfa_basename}-${BL31_BASENAME_DEPLOY}${soc_suffix}.${TF_A_ELF_SUFFIX}
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
# Install BL32 files
|
||||
if [ -f ${B}/${config}/${BL32_BASENAME}.${BL32_SUFFIX} ]; then
|
||||
install -d ${DEPLOYDIR}/arm-trusted-firmware/bl32
|
||||
# Install BL32 binary
|
||||
install -m 644 ${B}/${config}/${BL32_BASENAME}.${BL32_SUFFIX} ${DEPLOYDIR}/arm-trusted-firmware/bl32/${tfa_basename}-${BL32_BASENAME_DEPLOY}${soc_suffix}.${BL32_SUFFIX}
|
||||
# Install BL32 devicetree
|
||||
if [ -f ${B}/${config}/fdts/${dt}-${BL32_BASENAME}.${DT_SUFFIX} ]; then
|
||||
install -m 644 ${B}/${config}/fdts/${dt}-${BL32_BASENAME}.${DT_SUFFIX} ${DEPLOYDIR}/arm-trusted-firmware/bl32/${dt}-${BL32_BASENAME}.${DT_SUFFIX}
|
||||
fi
|
||||
if [ -n "${ELF_DEBUG_ENABLE}" ]; then
|
||||
if [ -f ${B}/${config}/${tfa_basename}-${BL32_BASENAME}${soc_suffix}.${TF_A_ELF_SUFFIX} ]; then
|
||||
install -d ${DEPLOYDIR}/arm-trusted-firmware/bl32/debug
|
||||
install -m 644 ${B}/${config}/${tfa_basename}-${BL32_BASENAME}${soc_suffix}.${TF_A_ELF_SUFFIX} ${DEPLOYDIR}/arm-trusted-firmware/bl32/debug/${tfa_basename}-${BL32_BASENAME_DEPLOY}${soc_suffix}.${TF_A_ELF_SUFFIX}
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
# Install fwconfig
|
||||
if [ -f ${B}/${config}/fdts/${dt}-${FWCONFIG_NAME}.${DT_SUFFIX} ]; then
|
||||
install -d ${DEPLOYDIR}/arm-trusted-firmware/fwconfig
|
||||
install -m 644 ${B}/${config}/fdts/${dt}-${FWCONFIG_NAME}.${DT_SUFFIX} ${DEPLOYDIR}/arm-trusted-firmware/fwconfig/${dt}-${FWCONFIG_NAME}-${config}.${DT_SUFFIX}
|
||||
fi
|
||||
done
|
||||
if [ -n "${ELF_DEBUG_ENABLE}" ]; then
|
||||
install -d ${DEPLOYDIR}/arm-trusted-firmware/debug
|
||||
if [ -f ${B}/${config}/${BL1_ELF} ]; then
|
||||
install -m 644 ${B}/${config}/${BL1_ELF} ${DEPLOYDIR}/arm-trusted-firmware/debug/${tfa_basename}-${BL1_BASENAME_DEPLOY}-${config}.${TF_A_ELF_SUFFIX}
|
||||
fi
|
||||
if [ -f ${B}/${config}/${BL2_ELF} ]; then
|
||||
install -m 644 ${B}/${config}/${BL2_ELF} ${DEPLOYDIR}/arm-trusted-firmware/debug/${tfa_basename}-${BL2_BASENAME_DEPLOY}-${config}.${TF_A_ELF_SUFFIX}
|
||||
fi
|
||||
if [ -f ${B}/${config}/${BL32_ELF} ]; then
|
||||
install -m 644 ${B}/${config}/${BL32_ELF} ${DEPLOYDIR}/arm-trusted-firmware/debug/${tfa_basename}-${BL32_BASENAME_DEPLOY}-${config}.${TF_A_ELF_SUFFIX}
|
||||
fi
|
||||
fi
|
||||
done
|
||||
unset i
|
||||
}
|
||||
addtask deploy before do_build after do_compile
|
||||
|
|
|
|||
|
|
@ -1,19 +0,0 @@
|
|||
FILESEXTRAPATHS_prepend_stm32mpcommon := "${THISDIR}/tf-a-stm32mp:"
|
||||
|
||||
SECTION = "bootloaders"
|
||||
|
||||
LICENSE = "BSD-3-Clause"
|
||||
LIC_FILES_CHKSUM = "file://license.rst;md5=1dd070c98a281d18d9eefd938729b031"
|
||||
|
||||
SRC_URI = "git://github.com/ARM-software/arm-trusted-firmware.git;protocol=https;nobranch=1"
|
||||
SRCREV = "a04808c16cfc126d9fe572ae7c4b5a3d39de5796"
|
||||
|
||||
SRC_URI += " \
|
||||
file://0001-st-update-v2.2-r2.0.0.patch \
|
||||
file://0002-st-update-v2.2-r2.1.0.patch \
|
||||
"
|
||||
|
||||
TF_VERSION = "2.2"
|
||||
PV = "${TF_VERSION}.r2"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
# Configure default mode (All supported device type)
|
||||
TF_A_EXTRACONF_LEGACY += "STM32MP_SDMMC=1"
|
||||
TF_A_EXTRACONF_LEGACY += "STM32MP_EMMC=1"
|
||||
TF_A_EXTRACONF_LEGACY += "STM32MP_SPI_NOR=1"
|
||||
TF_A_EXTRACONF_LEGACY += "STM32MP_RAW_NAND=1"
|
||||
TF_A_EXTRACONF_LEGACY += "STM32MP_SPI_NAND=1"
|
||||
TF_A_EXTRACONF_LEGACY += "STM32MP_USE_STM32IMAGE=1"
|
||||
|
||||
# Define config for each TF_A_CONFIG
|
||||
TF_A_CONFIG[optee] ?= "${STM32MP_DEVICETREE},AARCH32_SP=optee ${@bb.utils.contains('MACHINE_FEATURES', 'fip', '', '${TF_A_EXTRACONF_LEGACY}', d)},,${@bb.utils.contains('MACHINE_FEATURES', 'fip', bb.utils.contains('FIP_BL31_ENABLE', '1', 'bl31 dtbs', 'dtbs', d), '', d)}"
|
||||
TF_A_CONFIG[trusted] ?= "${STM32MP_DEVICETREE},AARCH32_SP=sp_min ${@bb.utils.contains('MACHINE_FEATURES', 'fip', '', '${TF_A_EXTRACONF_LEGACY}', d)},,${@bb.utils.contains('MACHINE_FEATURES', 'fip', 'bl32 dtbs', '', d)}"
|
||||
|
||||
TF_A_CONFIG[serialboot] ?= "${STM32MP_DEVICETREE},AARCH32_SP=sp_min STM32MP_UART_PROGRAMMER=1 STM32MP_USB_PROGRAMMER=1 STM32MP_USE_STM32IMAGE=1"
|
||||
|
||||
TF_A_CONFIG[emmc] ?= "${DEVICE_BOARD_ENABLE_EMMC},STM32MP_EMMC=1"
|
||||
TF_A_CONFIG[nand] ?= "${DEVICE_BOARD_ENABLE_NAND},STM32MP_RAW_NAND=1 ${@'STM32MP_FORCE_MTD_START_OFFSET=${TF_A_MTD_START_OFFSET_NAND}' if ${TF_A_MTD_START_OFFSET_NAND} else ''}"
|
||||
TF_A_CONFIG[nor] ?= "${DEVICE_BOARD_ENABLE_NOR},STM32MP_SPI_NOR=1 ${@'STM32MP_FORCE_MTD_START_OFFSET=${TF_A_MTD_START_OFFSET_NOR}' if ${TF_A_MTD_START_OFFSET_NOR} else ''}"
|
||||
TF_A_CONFIG[sdcard] ?= "${DEVICE_BOARD_ENABLE_SDCARD},STM32MP_SDMMC=1"
|
||||
TF_A_CONFIG[spinand] ?= "${DEVICE_BOARD_ENABLE_SPINAND},STM32MP_SPI_NAND=1 ${@'STM32MP_FORCE_MTD_START_OFFSET=${TF_A_MTD_START_OFFSET_SPINAND}' if ${TF_A_MTD_START_OFFSET_SPINAND} else ''}"
|
||||
TF_A_CONFIG[uart] ?= "${STM32MP_DEVICETREE},STM32MP_UART_PROGRAMMER=1"
|
||||
TF_A_CONFIG[usb] ?= "${STM32MP_DEVICETREE},STM32MP_USB_PROGRAMMER=1"
|
||||
|
||||
# Define configuration for SSP
|
||||
TF_A_CONFIG[uart-ssp] ?= "${STM32MP_DEVICETREE},STM32MP_UART_PROGRAMMER=1 STM32MP_SSP=1,tf-a-ssp"
|
||||
TF_A_CONFIG[usb-ssp] ?= "${STM32MP_DEVICETREE},STM32MP_USB_PROGRAMMER=1 STM32MP_SSP=1,tf-a-ssp"
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
require tf-a-stm32mp-common_${PV}.inc
|
||||
require tf-a-stm32mp-common.inc
|
||||
|
||||
SUMMARY = "Trusted Firmware-A for STM32MP1 as serial boot loader"
|
||||
LICENSE = "BSD-3-Clause"
|
||||
LIC_FILES_CHKSUM = "file://license.rst;md5=1dd070c98a281d18d9eefd938729b031"
|
||||
|
||||
PROVIDES += "virtual/trusted-firmware-a-serialboot"
|
||||
|
||||
TFA_SHARED_SOURCES = "0"
|
||||
|
||||
# Configure stm32mp1 make settings
|
||||
EXTRA_OEMAKE += 'PLAT=stm32mp1'
|
||||
EXTRA_OEMAKE += 'ARCH=aarch32'
|
||||
EXTRA_OEMAKE += 'ARM_ARCH_MAJOR=7'
|
||||
# Configure all serial boot supports
|
||||
EXTRA_OEMAKE += 'STM32MP_UART_PROGRAMMER=1'
|
||||
EXTRA_OEMAKE += 'STM32MP_USB_PROGRAMMER=1'
|
||||
|
||||
# Disable the wrapper for debug
|
||||
TF_A_ENABLE_DEBUG_WRAPPER ?= "0"
|
||||
|
|
@ -1,112 +0,0 @@
|
|||
#
|
||||
# Archiver Configuration
|
||||
#
|
||||
SRC_URI_append = " file://README.HOW_TO.txt "
|
||||
|
||||
inherit archiver
|
||||
ARCHIVER_MODE[src] = "original"
|
||||
COPYLEFT_LICENSE_INCLUDE_append = " BSD-3* "
|
||||
|
||||
inherit archiver_stm32mp_clean
|
||||
|
||||
archiver_create_makefile_for_sdk() {
|
||||
. ${T}/tfaconfig_env
|
||||
|
||||
# Init internal var for tfa_config_oemake: should be 'config,extraoemake'
|
||||
for config in ${TF_A_CONFIG}; do
|
||||
tf_a_config_oemake="${tf_a_config_oemake} ${config},\"$(eval echo \$TF_A_CONFIG_${config})\""
|
||||
done
|
||||
|
||||
mkdir -p ${ARCHIVER_OUTDIR}
|
||||
cat << EOF > ${ARCHIVER_OUTDIR}/Makefile.sdk
|
||||
#remove default variable
|
||||
LDFLAGS=
|
||||
CFLAGS=
|
||||
CPPFLAGS=
|
||||
CC=
|
||||
CPP=
|
||||
AS=
|
||||
AR=
|
||||
LD=
|
||||
NM=
|
||||
|
||||
LOCAL_PATH=\$(PWD)
|
||||
|
||||
EXTRA_OEMAKE=${EXTRA_OEMAKE}
|
||||
|
||||
# Set default config
|
||||
ELF_DEBUG_ENABLE ?= ${ELF_DEBUG_ENABLE}
|
||||
TF_A_CONFIG ?= ${TF_A_CONFIG}
|
||||
|
||||
# Set specific OEMAKE config
|
||||
TF_A_CONFIG_OEMAKE = ${tf_a_config_oemake}
|
||||
# Set default TFA_DEVICETREE
|
||||
TFA_DEVICETREE ?= ${TF_A_DEVICETREE}
|
||||
|
||||
#Set default TF_A_ENABLE_DEBUG_WRAPPER
|
||||
TF_A_ENABLE_DEBUG_WRAPPER ?= ${TF_A_ENABLE_DEBUG_WRAPPER}
|
||||
|
||||
help:
|
||||
@echo
|
||||
@echo "Available targets:"
|
||||
@echo " all : build TF-A binaries for defined config(s)"
|
||||
@echo " clean : clean build directories from generated files"
|
||||
@echo
|
||||
@echo "TF-A configuration:"
|
||||
@echo " TF_A_CONFIG = \$(TF_A_CONFIG)"
|
||||
@echo " TFA_DEVICETREE = \$(TFA_DEVICETREE)"
|
||||
@echo " ELF_DEBUG_ENABLE = '\$(ELF_DEBUG_ENABLE)' ('1' to export elf files)"
|
||||
@echo " TF_A_ENABLE_DEBUG_WRAPPER = '\$(TF_A_ENABLE_DEBUG_WRAPPER)' ('1' to generate tf-a for debugging)"
|
||||
@echo
|
||||
|
||||
all: tf
|
||||
|
||||
host_tools:
|
||||
@\$(MAKE) --no-print-directory -C \$(LOCAL_PATH)/tools/stm32image
|
||||
|
||||
tf: host_tools
|
||||
for config in \$(TF_A_CONFIG) ; do \\
|
||||
# Init any extraoemake \\
|
||||
add_extraoemake= ; \\
|
||||
for fullconfig in \$(TF_A_CONFIG_OEMAKE) ; do \\
|
||||
extraconfig=\$\$(echo \$\$fullconfig | cut -d',' -f1) ; \\
|
||||
if [ "\$\$extraconfig" = "\$\$config" ]; then \\
|
||||
add_extraoemake=\$\$(echo \$\$fullconfig | cut -d',' -f2) ; \\
|
||||
fi ; \\
|
||||
done ; \\
|
||||
mkdir -p \$(LOCAL_PATH)/../build/\$\$config ; \\
|
||||
if test -n "\$(TFA_DEVICETREE)" ; then \\
|
||||
for dt in \$(TFA_DEVICETREE) ; do \\
|
||||
\$(MAKE) \$(EXTRA_OEMAKE) -C \$(LOCAL_PATH) DTB_FILE_NAME=\$\$dt.dtb BUILD_PLAT=\$(LOCAL_PATH)/../build/\$\$config \$\$add_extraoemake ; \\
|
||||
# Copy binary file with explicit name \\
|
||||
cp -f \$(LOCAL_PATH)/../build/\$\$config/${TF_A_BASENAME}-\$\$dt.${TF_A_SUFFIX} \$(LOCAL_PATH)/../build/\$\$config/${TF_A_BASENAME}-\$\$dt-\$\$config.${TF_A_SUFFIX} ; \\
|
||||
if [ "\$(TF_A_ENABLE_DEBUG_WRAPPER)" = "1" ]; then \\
|
||||
# Generate wrapper for debugging \\
|
||||
stm32wrapper4dbg -s \$(LOCAL_PATH)/../build/\$\$config/${TF_A_BASENAME}-\$\$dt.${TF_A_SUFFIX} -d \$(LOCAL_PATH)/../build/\$\$config/debug-${TF_A_BASENAME}-\$\$dt-\$\$config.${TF_A_SUFFIX} ; \\
|
||||
fi \\
|
||||
done ; \\
|
||||
else \\
|
||||
\$(MAKE) \$(EXTRA_OEMAKE) -C \$(LOCAL_PATH) BUILD_PLAT=\$(LOCAL_PATH)/../build/\$\$config \$\$add_extraoemake; \\
|
||||
tf_version=\$\$(find \$(LOCAL_PATH)/../build/\$\$config -name ${TF_A_BASENAME}*.${TF_A_SUFFIX} -exec basename {} \; | sed "s/\.${TF_A_SUFFIX}//") ; \\
|
||||
# Copy binary file with explicit name \\
|
||||
cp -f \$(LOCAL_PATH)/../build/\$\$config/\$\$tf_version.${TF_A_SUFFIX} \$(LOCAL_PATH)/../build/\$\$config/\$\$tf_version-\$\$config.${TF_A_SUFFIX} ; \\
|
||||
if [ "\$(TF_A_ENABLE_DEBUG_WRAPPER)" = "1" ]; then \\
|
||||
# Generate wrapper for debugging \\
|
||||
stm32wrapper4dbg -s \$(LOCAL_PATH)/../build/\$\$config/\$\$tf_version.${TF_A_SUFFIX} \$(LOCAL_PATH)/../build/\$\$config/debug-\$\$tf_version-\$\$config.${TF_A_SUFFIX} ; \\
|
||||
fi \\
|
||||
fi ; \\
|
||||
# Copy elf files with explicit name \\
|
||||
if [ "\$(ELF_DEBUG_ENABLE)" = "1" ] ; then \\
|
||||
if [ -f \$(LOCAL_PATH)/../build/\$\$config/${BL2_ELF} ] ; then \\
|
||||
cp -f \$(LOCAL_PATH)/../build/\$\$config/${BL2_ELF} \$(LOCAL_PATH)/../build/\$\$config/${TF_A_BASENAME}-${BL2_BASENAME}-\$\$config.${TF_A_ELF_SUFFIX} ; \\
|
||||
fi ; \\
|
||||
fi ; \\
|
||||
done
|
||||
|
||||
clean:
|
||||
@for config in \$(TF_A_CONFIG) ; do \\
|
||||
rm -rf \$(LOCAL_PATH)/../build/\$\$config ; \\
|
||||
done
|
||||
EOF
|
||||
}
|
||||
do_ar_original[prefuncs] += "tfaconfig_env archiver_create_makefile_for_sdk"
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,55 +0,0 @@
|
|||
require tf-a-stm32mp-common.inc
|
||||
|
||||
SUMMARY = "Trusted Firmware-A SSP for STM32MP1"
|
||||
SECTION = "bootloaders"
|
||||
LICENSE = "BSD-3-Clause"
|
||||
LIC_FILES_CHKSUM = "file://license.rst;md5=1dd070c98a281d18d9eefd938729b031"
|
||||
|
||||
SRC_URI = "git://github.com/ARM-software/arm-trusted-firmware.git;protocol=https;nobranch=1"
|
||||
SRCREV = "a04808c16cfc126d9fe572ae7c4b5a3d39de5796"
|
||||
|
||||
SRC_URI += " \
|
||||
file://0001-st-update-v2.2-r2.0.0.patch \
|
||||
\
|
||||
file://0100-v2.2-stm32mp-ssp-r2-rc2.patch \
|
||||
"
|
||||
|
||||
TF_VERSION = "2.2"
|
||||
PV = "${TF_VERSION}.r2"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
PROVIDES += "virtual/trusted-firmware-a-ssp"
|
||||
|
||||
TFA_SHARED_SOURCES = "0"
|
||||
|
||||
TF_A_BASENAME = "tf-a-ssp"
|
||||
TF_A_CONFIG = "ssp"
|
||||
TF_A_CONFIG_ssp = " STM32MP_SSP=1 "
|
||||
|
||||
# Configure stm32mp1 make settings
|
||||
EXTRA_OEMAKE += 'PLAT=stm32mp1'
|
||||
EXTRA_OEMAKE += 'ARCH=aarch32'
|
||||
EXTRA_OEMAKE += 'ARM_ARCH_MAJOR=7'
|
||||
EXTRA_OEMAKE += 'STM32MP_UART_PROGRAMMER=1'
|
||||
EXTRA_OEMAKE += 'STM32MP_USB_PROGRAMMER=1'
|
||||
|
||||
# ---------------------------------
|
||||
# Configure archiver use
|
||||
# ---------------------------------
|
||||
include ${@oe.utils.ifelse(d.getVar('ST_ARCHIVER_ENABLE') == '1', 'tf-a-stm32mp-ssp-archiver.inc','')}
|
||||
|
||||
# ---------------------------------
|
||||
# Configure devupstream class usage
|
||||
# ---------------------------------
|
||||
BBCLASSEXTEND = "devupstream:target"
|
||||
|
||||
SRC_URI_class-devupstream = "git://github.com/STMicroelectronics/arm-trusted-firmware.git;protocol=https;branch=v${TF_VERSION}-r2-stm32mp-ssp"
|
||||
SRCREV_class-devupstream = "91745e6389486247c8a4b11cc428f9ce235f319e"
|
||||
|
||||
# ---------------------------------
|
||||
# Configure default preference to manage dynamic selection between tarball and github
|
||||
# ---------------------------------
|
||||
STM32MP_SOURCE_SELECTION ?= "tarball"
|
||||
|
||||
DEFAULT_PREFERENCE = "${@bb.utils.contains('STM32MP_SOURCE_SELECTION', 'github', '-1', '1', d)}"
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -65,6 +65,10 @@ NB: you can use directly the source from the community:
|
|||
|
||||
5. Build tf-a source code:
|
||||
--------------------------------
|
||||
Since OpenSTLinux has activated FIP by default, so the FIP_artifacts should be specified before launching compilation
|
||||
- In case of using SOURCES-xxxx.tar.gz of Developer package the FIP_DEPLOYDIR_ROOT should be set as below:
|
||||
$> export FIP_DEPLOYDIR_ROOT=$PWD/../../FIP_artifacts
|
||||
|
||||
To compile tf-a source code
|
||||
$> make -f $PWD/../Makefile.sdk all
|
||||
or for a specific config :
|
||||
|
|
@ -72,47 +76,9 @@ or for a specific config :
|
|||
|
||||
NB: TFA_DEVICETREE flag must be set to switch to correct board configuration.
|
||||
|
||||
Files generated should be as follow:
|
||||
#> ../build/*/tf-a-*.stm32
|
||||
The generated FIP images are available in $FIP_DEPLOYDIR_ROOT/fip
|
||||
|
||||
6. Update software on board:
|
||||
----------------------------
|
||||
6.1. partitioning of binaries:
|
||||
-----------------------------
|
||||
TF-A build provide a binary named "tf-a-*.stm32" which MUST be copied on a
|
||||
dedicated partition named "fsbl1"
|
||||
Please use STM32CubeProgrammer then only tick the boot partitions means patitions 0x1 to 0x6 (more informations on the wiki website http://wiki.st.com/stm32mpu)
|
||||
|
||||
6.2. Update via SDCARD:
|
||||
-----------------------
|
||||
Copy the binary (tf-a-*.stm32) on the dedicated partition, on SDCARD/USB disk
|
||||
the partition "fsbl1" are the partition 1:
|
||||
- SDCARD: /dev/mmcblkXp1 (where X is the instance number)
|
||||
- SDCARD via USB reader: /dev/sdX1 (where X is the instance number)
|
||||
$ dd if=<tf-a binary> of=/dev/<device partition> bs=1M conv=fdatasync
|
||||
|
||||
FAQ: to found the partition associated to a specific label, just plug the
|
||||
SDCARD/USB disk on your PC and call the following command:
|
||||
$ ls -l /dev/disk/by-partlabel/
|
||||
total 0
|
||||
lrwxrwxrwx 1 root root 10 Jan 17 17:38 bootfs -> ../../mmcblk0p4
|
||||
lrwxrwxrwx 1 root root 10 Jan 17 17:38 fsbl1 -> ../../mmcblk0p1 ➔ FSBL (TF-A)
|
||||
lrwxrwxrwx 1 root root 10 Jan 17 17:38 fsbl2 -> ../../mmcblk0p2 ➔ FSBL backup (TF-A backup – same content as FSBL)
|
||||
lrwxrwxrwx 1 root root 10 Jan 17 17:38 rootfs -> ../../mmcblk0p5
|
||||
lrwxrwxrwx 1 root root 10 Jan 17 17:38 ssbl -> ../../mmcblk0p3 ➔ SSBL (U-Boot)
|
||||
lrwxrwxrwx 1 root root 10 Jan 17 17:38 userfs -> ../../mmcblk0p6
|
||||
|
||||
6.3. Update via USB mass storage on U-boot:
|
||||
-------------------------------------------
|
||||
* Plug the SDCARD on Board.
|
||||
* Start the board and stop on U-boot shell:
|
||||
Hit any key to stop autoboot: 0
|
||||
STM32MP>
|
||||
* plug an USB cable between the PC and the board via USB OTG port.
|
||||
* On U-Boot shell, call the usb mass storage functionnality:
|
||||
STM32MP> ums 0 mmc 0
|
||||
ums <USB controller> <dev type: mmc|usb> <dev[:part]>
|
||||
ex.:
|
||||
For SDCARD: ums 0 mmc 0
|
||||
For USB disk: ums 0 usb 0
|
||||
|
||||
* Follow section 6.2 to put tf-a-*.stm32 on SDCARD/USB disk
|
||||
|
|
@ -1,21 +1,30 @@
|
|||
require tf-a-stm32mp-common_${PV}.inc
|
||||
require tf-a-stm32mp-common.inc
|
||||
|
||||
SUMMARY = "Trusted Firmware-A for STM32MP1"
|
||||
SECTION = "bootloaders"
|
||||
LICENSE = "BSD-3-Clause"
|
||||
LIC_FILES_CHKSUM = "file://license.rst;md5=1dd070c98a281d18d9eefd938729b031"
|
||||
|
||||
PROVIDES += "virtual/trusted-firmware-a"
|
||||
|
||||
FILESEXTRAPATHS_prepend_stm32mpcommon := "${THISDIR}/tf-a-stm32mp:"
|
||||
|
||||
SRC_URI = "git://github.com/ARM-software/arm-trusted-firmware.git;protocol=https;nobranch=1"
|
||||
SRCREV = "e2c509a39c6cc4dda8734e6509cdbe6e3603cdfc"
|
||||
|
||||
SRC_URI += " \
|
||||
file://0001-st-update-v2.4-r1.0.0.patch \
|
||||
"
|
||||
|
||||
TF_VERSION = "2.4"
|
||||
PV = "${TF_VERSION}.r1"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
# Configure stm32mp1 make settings
|
||||
EXTRA_OEMAKE += 'PLAT=stm32mp1'
|
||||
EXTRA_OEMAKE += 'ARCH=aarch32'
|
||||
EXTRA_OEMAKE += 'ARM_ARCH_MAJOR=7'
|
||||
# Configure default mode (All supported device type)
|
||||
EXTRA_OEMAKE += 'STM32MP_SDMMC=1'
|
||||
EXTRA_OEMAKE += 'STM32MP_EMMC=1'
|
||||
EXTRA_OEMAKE += 'STM32MP_SPI_NOR=1'
|
||||
EXTRA_OEMAKE += 'STM32MP_RAW_NAND=1'
|
||||
EXTRA_OEMAKE += 'STM32MP_SPI_NAND=1'
|
||||
EXTRA_OEMAKE += "PLAT=stm32mp1"
|
||||
EXTRA_OEMAKE += "ARCH=aarch32"
|
||||
EXTRA_OEMAKE += "ARM_ARCH_MAJOR=7"
|
||||
|
||||
# Enable the wrapper for debug
|
||||
TF_A_ENABLE_DEBUG_WRAPPER ?= "1"
|
||||
|
|
@ -31,7 +40,7 @@ include ${@oe.utils.ifelse(d.getVar('ST_ARCHIVER_ENABLE') == '1', 'tf-a-stm32mp-
|
|||
BBCLASSEXTEND = "devupstream:target"
|
||||
|
||||
SRC_URI_class-devupstream = "git://github.com/STMicroelectronics/arm-trusted-firmware.git;protocol=https;branch=v${TF_VERSION}-stm32mp"
|
||||
SRCREV_class-devupstream = "9d1dd642963e2b47142d1d26d09b7e4a762d6954"
|
||||
SRCREV_class-devupstream = "40572e4067f205691a4dca3b5fdabe3a40c69594"
|
||||
|
||||
# ---------------------------------
|
||||
# Configure default preference to manage dynamic selection between tarball and github
|
||||
|
|
@ -0,0 +1,158 @@
|
|||
From a1a1376cd1cc5ef232258e3302596f6a2fb9b8e4 Mon Sep 17 00:00:00 2001
|
||||
From: Lionel Debieve <lionel.debieve@st.com>
|
||||
Date: Tue, 19 Jan 2021 15:40:36 +0100
|
||||
Subject: [PATCH] tools: allow to use a root key password from command line
|
||||
|
||||
By defining the ROT_KEY_PWD, user is able to define the private
|
||||
root key password. Useful for build system management.
|
||||
|
||||
Signed-off-by: Lionel Debieve <lionel.debieve@st.com>
|
||||
Change-Id: Ie692c5c6db5ddb093ca7659d80f6137a978aa7bf
|
||||
---
|
||||
make_helpers/tbbr/tbbr_tools.mk | 4 +++-
|
||||
tools/cert_create/include/key.h | 4 ++--
|
||||
tools/cert_create/src/key.c | 6 +++---
|
||||
tools/cert_create/src/main.c | 18 ++++++++++++++----
|
||||
4 files changed, 22 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/make_helpers/tbbr/tbbr_tools.mk b/make_helpers/tbbr/tbbr_tools.mk
|
||||
index 853ad11bef..0aab592228 100644
|
||||
--- a/make_helpers/tbbr/tbbr_tools.mk
|
||||
+++ b/make_helpers/tbbr/tbbr_tools.mk
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
-# Copyright (c) 2015-2020, ARM Limited and Contributors. All rights reserved.
|
||||
+# Copyright (c) 2015-2021, ARM Limited and Contributors. All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
#
|
||||
@@ -24,6 +24,7 @@
|
||||
# KEY_SIZE
|
||||
# ROT_KEY
|
||||
# PROT_KEY
|
||||
+# ROT_KEY_PWD
|
||||
# TRUSTED_WORLD_KEY
|
||||
# NON_TRUSTED_WORLD_KEY
|
||||
# SCP_BL2_KEY
|
||||
@@ -62,6 +63,7 @@ $(if ${HASH_ALG},$(eval $(call CERT_ADD_CMD_OPT,${HASH_ALG},--hash-alg,FWU_)))
|
||||
$(if ${ROT_KEY},$(eval $(call CERT_ADD_CMD_OPT,${ROT_KEY},--rot-key)))
|
||||
$(if ${ROT_KEY},$(eval $(call CERT_ADD_CMD_OPT,${ROT_KEY},--rot-key,FWU_)))
|
||||
$(if ${PROT_KEY},$(eval $(call CERT_ADD_CMD_OPT,${PROT_KEY},--prot-key)))
|
||||
+$(if ${ROT_KEY_PWD},$(eval $(call CERT_ADD_CMD_OPT,${ROT_KEY_PWD},--rot-key-pwd)))
|
||||
$(if ${TRUSTED_WORLD_KEY},$(eval $(call CERT_ADD_CMD_OPT,${TRUSTED_WORLD_KEY},--trusted-world-key)))
|
||||
$(if ${NON_TRUSTED_WORLD_KEY},$(eval $(call CERT_ADD_CMD_OPT,${NON_TRUSTED_WORLD_KEY},--non-trusted-world-key)))
|
||||
|
||||
diff --git a/tools/cert_create/include/key.h b/tools/cert_create/include/key.h
|
||||
index 3409502d82..1a03201560 100644
|
||||
--- a/tools/cert_create/include/key.h
|
||||
+++ b/tools/cert_create/include/key.h
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
- * Copyright (c) 2015-2019, ARM Limited and Contributors. All rights reserved.
|
||||
+ * Copyright (c) 2015-2021, ARM Limited and Contributors. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
@@ -70,7 +70,7 @@ int key_init(void);
|
||||
key_t *key_get_by_opt(const char *opt);
|
||||
int key_new(key_t *key);
|
||||
int key_create(key_t *key, int type, int key_bits);
|
||||
-int key_load(key_t *key, unsigned int *err_code);
|
||||
+int key_load(key_t *key, char *rot_key_pwd, unsigned int *err_code);
|
||||
int key_store(key_t *key);
|
||||
|
||||
/* Macro to register the keys used in the CoT */
|
||||
diff --git a/tools/cert_create/src/key.c b/tools/cert_create/src/key.c
|
||||
index 25d7d4bd9b..9ba5028af7 100644
|
||||
--- a/tools/cert_create/src/key.c
|
||||
+++ b/tools/cert_create/src/key.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
- * Copyright (c) 2015-2020, ARM Limited and Contributors. All rights reserved.
|
||||
+ * Copyright (c) 2015-2021, ARM Limited and Contributors. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
@@ -137,7 +137,7 @@ int key_create(key_t *key, int type, int key_bits)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-int key_load(key_t *key, unsigned int *err_code)
|
||||
+int key_load(key_t *key, char *rot_key_pwd, unsigned int *err_code)
|
||||
{
|
||||
FILE *fp;
|
||||
EVP_PKEY *k;
|
||||
@@ -146,7 +146,7 @@ int key_load(key_t *key, unsigned int *err_code)
|
||||
/* Load key from file */
|
||||
fp = fopen(key->fn, "r");
|
||||
if (fp) {
|
||||
- k = PEM_read_PrivateKey(fp, &key->key, NULL, NULL);
|
||||
+ k = PEM_read_PrivateKey(fp, &key->key, NULL, rot_key_pwd);
|
||||
fclose(fp);
|
||||
if (k) {
|
||||
*err_code = KEY_ERR_NONE;
|
||||
diff --git a/tools/cert_create/src/main.c b/tools/cert_create/src/main.c
|
||||
index 8a1e02e62f..e79e72745b 100644
|
||||
--- a/tools/cert_create/src/main.c
|
||||
+++ b/tools/cert_create/src/main.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
- * Copyright (c) 2015-2020, ARM Limited and Contributors. All rights reserved.
|
||||
+ * Copyright (c) 2015-2021, ARM Limited and Contributors. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
@@ -289,7 +289,12 @@ static const cmd_opt_t common_cmd_opt[] = {
|
||||
{
|
||||
{ "print-cert", no_argument, NULL, 'p' },
|
||||
"Print the certificates in the standard output"
|
||||
- }
|
||||
+ },
|
||||
+ {
|
||||
+ { "rot-key-pwd", required_argument, NULL, 'r' },
|
||||
+ "Password for the root key"
|
||||
+ },
|
||||
+
|
||||
};
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
@@ -308,6 +313,7 @@ int main(int argc, char *argv[])
|
||||
unsigned char md[SHA512_DIGEST_LENGTH];
|
||||
unsigned int md_len;
|
||||
const EVP_MD *md_info;
|
||||
+ char *rot_key_pw = NULL;
|
||||
|
||||
NOTICE("CoT Generation Tool: %s\n", build_msg);
|
||||
NOTICE("Target platform: %s\n", platform_msg);
|
||||
@@ -345,7 +351,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
while (1) {
|
||||
/* getopt_long stores the option index here. */
|
||||
- c = getopt_long(argc, argv, "a:b:hknps:", cmd_opt, &opt_idx);
|
||||
+ c = getopt_long(argc, argv, "a:b:hknpr:s:", cmd_opt, &opt_idx);
|
||||
|
||||
/* Detect the end of the options. */
|
||||
if (c == -1) {
|
||||
@@ -379,6 +385,10 @@ int main(int argc, char *argv[])
|
||||
case 'p':
|
||||
print_cert = 1;
|
||||
break;
|
||||
+ case 'r':
|
||||
+ rot_key_pw = malloc(sizeof(char) * strlen(optarg));
|
||||
+ strncpy(rot_key_pw, optarg, strlen(optarg));
|
||||
+ break;
|
||||
case 's':
|
||||
hash_alg = get_hash_alg(optarg);
|
||||
if (hash_alg < 0) {
|
||||
@@ -437,7 +447,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
/* First try to load the key from disk */
|
||||
- if (key_load(&keys[i], &err_code)) {
|
||||
+ if (key_load(&keys[i], rot_key_pw, &err_code)) {
|
||||
/* Key loaded successfully */
|
||||
continue;
|
||||
}
|
||||
--
|
||||
2.17.1
|
||||
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
SUMMARY = "Cert_create & Fiptool for fip generation for Trusted Firmware-A"
|
||||
LICENSE = "BSD-3-Clause"
|
||||
LIC_FILES_CHKSUM = "file://license.rst;md5=1dd070c98a281d18d9eefd938729b031"
|
||||
|
||||
SRC_URI = "git://github.com/ARM-software/arm-trusted-firmware.git;protocol=https;nobranch=1"
|
||||
#SRCREV corresponds to v2.4
|
||||
SRCREV = "e2c509a39c6cc4dda8734e6509cdbe6e3603cdfc"
|
||||
|
||||
# Mandatory fix to allow feeding password through command line
|
||||
SRC_URI += "file://0099-tools-allow-to-use-a-root-key-password-from-command-.patch"
|
||||
|
||||
DEPENDS_class-nativesdk = "nativesdk-openssl"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_compile() {
|
||||
oe_runmake certtool fiptool
|
||||
}
|
||||
|
||||
do_install() {
|
||||
install -d ${D}${bindir}
|
||||
# cert_create
|
||||
install -m 0755 ${B}/tools/cert_create/cert_create ${D}${bindir}/cert_create
|
||||
# fiptool
|
||||
install -m 0755 ${B}/tools/fiptool/fiptool ${D}${bindir}/fiptool
|
||||
}
|
||||
|
||||
FILES_${PN}_class-nativesdk = "${bindir}/cert_create ${bindir}/fiptool"
|
||||
|
||||
RDEPENDS_${PN}_class-nativesdk += "nativesdk-libcrypto"
|
||||
|
||||
BBCLASSEXTEND += "native nativesdk"
|
||||
Loading…
Reference in New Issue