TF-A-STM32MP: update to v2.0.0 (v2.2-stm32mp-r1)

Change-Id: If6d1e5b3b9fdfc81e8fe77ca2a338b9b124f5209
This commit is contained in:
Romuald JEANNE 2020-06-17 17:23:31 +02:00
parent a16cd6da88
commit b698195170
10 changed files with 26545 additions and 39997 deletions

View File

@ -18,100 +18,103 @@ archiver_create_makefile_for_sdk() {
done done
mkdir -p ${ARCHIVER_OUTDIR} mkdir -p ${ARCHIVER_OUTDIR}
#remove default variable cat << EOF > ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "LDFLAGS=" > ${ARCHIVER_OUTDIR}/Makefile.sdk #remove default variable
echo "CFLAGS=" >> ${ARCHIVER_OUTDIR}/Makefile.sdk LDFLAGS=
echo "CPPFLAGS=" >> ${ARCHIVER_OUTDIR}/Makefile.sdk CFLAGS=
echo "CC=" >> ${ARCHIVER_OUTDIR}/Makefile.sdk CPPFLAGS=
echo "CPP=" >> ${ARCHIVER_OUTDIR}/Makefile.sdk CC=
echo "AS=" >> ${ARCHIVER_OUTDIR}/Makefile.sdk CPP=
echo "AR=" >> ${ARCHIVER_OUTDIR}/Makefile.sdk AS=
echo "LD=" >> ${ARCHIVER_OUTDIR}/Makefile.sdk AR=
echo "NM=" >> ${ARCHIVER_OUTDIR}/Makefile.sdk LD=
echo "" >> ${ARCHIVER_OUTDIR}/Makefile.sdk NM=
echo "LOCAL_PATH=\$(PWD)" >> ${ARCHIVER_OUTDIR}/Makefile.sdk LOCAL_PATH=\$(PWD)
echo "" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "EXTRA_OEMAKE=${EXTRA_OEMAKE}" >> ${ARCHIVER_OUTDIR}/Makefile.sdk EXTRA_OEMAKE=${EXTRA_OEMAKE}
echo "" >> ${ARCHIVER_OUTDIR}/Makefile.sdk EXTRA_OEMAKE_SERIAL=$(subst 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 # Set default config
echo "ELF_DEBUG_ENABLE ?= ${ELF_DEBUG_ENABLE}" >> ${ARCHIVER_OUTDIR}/Makefile.sdk ELF_DEBUG_ENABLE ?= ${ELF_DEBUG_ENABLE}
echo "TF_A_CONFIG ?= ${TF_A_CONFIG}" >> ${ARCHIVER_OUTDIR}/Makefile.sdk TF_A_CONFIG ?= ${TF_A_CONFIG} serialboot
echo "" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
# Set specific OEMAKE config
echo "TF_A_CONFIG_OEMAKE = ${tf_a_config_oemake}" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
# Set default TFA_DEVICETREE with configured TF_A_DEVICETREE # Set specific OEMAKE config
if [ -n "${TF_A_DEVICETREE}" ]; then TF_A_CONFIG_OEMAKE = ${tf_a_config_oemake} serialboot,"AARCH32_SP=sp_min"
echo "TFA_DEVICETREE ?= ${TF_A_DEVICETREE}" >> ${ARCHIVER_OUTDIR}/Makefile.sdk # Set default TFA_DEVICETREE
else TFA_DEVICETREE ?= ${TF_A_DEVICETREE}
echo "TFA_DEVICETREE ?=" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
fi
echo "" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "help:" >> ${ARCHIVER_OUTDIR}/Makefile.sdk #Set default TF_A_ENABLE_DEBUG_WRAPPER
echo " @echo" >> ${ARCHIVER_OUTDIR}/Makefile.sdk TF_A_ENABLE_DEBUG_WRAPPER ?= ${TF_A_ENABLE_DEBUG_WRAPPER}
echo " @echo \"Available targets:\"" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " @echo \" all : build TF-A binaries for defined config(s)\"" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " @echo \" clean : clean build directories from generated files\"" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " @echo" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " @echo \"TF-A configuration:\"" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " @echo \" TF_A_CONFIG = \$(TF_A_CONFIG)\"" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " @echo \" TFA_DEVICETREE = \$(TFA_DEVICETREE)\"" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " @echo \" ELF_DEBUG_ENABLE = '\$(ELF_DEBUG_ENABLE)' ('1' to export elf files)\"" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " @echo" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "all: tf" >> ${ARCHIVER_OUTDIR}/Makefile.sdk help:
echo "" >> ${ARCHIVER_OUTDIR}/Makefile.sdk @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
echo "host_tools:" >> ${ARCHIVER_OUTDIR}/Makefile.sdk all: tf
echo " @\$(MAKE) --no-print-directory -C \$(LOCAL_PATH)/tools/stm32image" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "tf: host_tools" >> ${ARCHIVER_OUTDIR}/Makefile.sdk host_tools:
echo " for config in \$(TF_A_CONFIG) ; do \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk @\$(MAKE) --no-print-directory -C \$(LOCAL_PATH)/tools/stm32image
# Init any extraoemake
echo " add_extraoemake= ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " for fullconfig in \$(TF_A_CONFIG_OEMAKE) ; do \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " extraconfig=\$\$(echo \$\$fullconfig | cut -d',' -f1) ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " if [ \"\$\$extraconfig\" = \"\$\$config\" ]; then \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " add_extraoemake=\$\$(echo \$\$fullconfig | cut -d',' -f2) ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " fi ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " done ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " mkdir -p \$(LOCAL_PATH)/../build/\$\$config ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " if test -n \"\$(TFA_DEVICETREE)\" ; then \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " for dt in \$(TFA_DEVICETREE) ; do \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " \$(MAKE) \$(EXTRA_OEMAKE) -C \$(LOCAL_PATH) DTB_FILE_NAME=\$\$dt.dtb BUILD_PLAT=\$(LOCAL_PATH)/../build/\$\$config \$\$add_extraoemake ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
# Copy binary file with explicit name
echo " 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} ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " done ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " else \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " \$(MAKE) \$(EXTRA_OEMAKE) -C \$(LOCAL_PATH) BUILD_PLAT=\$(LOCAL_PATH)/../build/\$\$config \$\$add_extraoemake; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
# Copy binary file with explicit name
echo " tf_version=\$\$(find \$(LOCAL_PATH)/../build/\$\$config -name ${TF_A_BASENAME}*.${TF_A_SUFFIX} -exec basename {} \; | sed \"s/\.${TF_A_SUFFIX}//\") ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " cp -f \$(LOCAL_PATH)/../build/\$\$config/\$\$tf_version.${TF_A_SUFFIX} \$(LOCAL_PATH)/../build/\$\$config/\$\$tf_version-\$\$config.${TF_A_SUFFIX} ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " fi ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
# Copy elf files with explicit name
echo " if [ \"\$(ELF_DEBUG_ENABLE)\" = \"1\" ] ; then \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " if [ -f \$(LOCAL_PATH)/../build/\$\$config/${BL1_ELF} ] ; then \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " cp -f \$(LOCAL_PATH)/../build/\$\$config/${BL1_ELF} \$(LOCAL_PATH)/../build/\$\$config/${TF_A_BASENAME}-${BL1_BASENAME}-\$\$config.${TF_A_ELF_SUFFIX} ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " fi ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " if [ -f \$(LOCAL_PATH)/../build/\$\$config/${BL2_ELF} ] ; then \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " cp -f \$(LOCAL_PATH)/../build/\$\$config/${BL2_ELF} \$(LOCAL_PATH)/../build/\$\$config/${TF_A_BASENAME}-${BL2_BASENAME}-\$\$config.${TF_A_ELF_SUFFIX} ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " fi ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " if [ -f \$(LOCAL_PATH)/../build/\$\$config/${BL32_ELF} ] ; then \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " cp -f \$(LOCAL_PATH)/../build/\$\$config/${BL32_ELF} \$(LOCAL_PATH)/../build/\$\$config/${TF_A_BASENAME}-${BL32_BASENAME}-\$\$config.${TF_A_ELF_SUFFIX} ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " fi ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " fi ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " done" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "clean:" >> ${ARCHIVER_OUTDIR}/Makefile.sdk tf: host_tools
echo " @for config in \$(TF_A_CONFIG) ; do \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk for config in \$(TF_A_CONFIG) ; do \\
echo " rm -rf \$(LOCAL_PATH)/../build/\$\$config ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk # Init any extraoemake \\
echo " done" >> ${ARCHIVER_OUTDIR}/Makefile.sdk 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 [ "\$(TF_A_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 \\
\$(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 ; \\
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
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" do_ar_original[prefuncs] += "tfaconfig_env archiver_create_makefile_for_sdk"

View File

@ -11,6 +11,13 @@ B = "${WORKDIR}/build"
EXTERNALSRC_BUILD_pn-${PN} = "${WORKDIR}/build" EXTERNALSRC_BUILD_pn-${PN} = "${WORKDIR}/build"
DEPENDS += "dtc-native" DEPENDS += "dtc-native"
DEPENDS_append = " ${@bb.utils.contains('TF_A_ENABLE_DEBUG_WRAPPER', '1', 'stm32wrapper4dbg-native', '', d)}"
# Extra make settings
EXTRA_OEMAKE = 'CROSS_COMPILE=${TARGET_PREFIX}'
# Debug support
EXTRA_OEMAKE += 'DEBUG=1'
EXTRA_OEMAKE += 'LOG_LEVEL=40'
# Define default TF-A namings # Define default TF-A namings
TF_A_BASENAME ?= "tf-a" TF_A_BASENAME ?= "tf-a"
@ -32,21 +39,15 @@ BL32_NAME ?= "bl32/bl32"
BL32_ELF = "${BL32_NAME}.${TF_A_ELF_SUFFIX}" BL32_ELF = "${BL32_NAME}.${TF_A_ELF_SUFFIX}"
BL32_BASENAME = "${@os.path.basename(d.getVar("BL32_NAME"))}" BL32_BASENAME = "${@os.path.basename(d.getVar("BL32_NAME"))}"
# Extra make settings
EXTRA_OEMAKE = 'CROSS_COMPILE=${TARGET_PREFIX}'
EXTRA_OEMAKE += 'PLAT=stm32mp1'
EXTRA_OEMAKE += 'ARCH=aarch32'
EXTRA_OEMAKE += 'ARM_ARCH_MAJOR=7'
# Debug support
EXTRA_OEMAKE += 'DEBUG=1'
EXTRA_OEMAKE += "LOG_LEVEL=40"
# Set default TF-A config # Set default TF-A config
TF_A_CONFIG ?= "" TF_A_CONFIG ?= ""
#Enable the wrapper for debug
TF_A_ENABLE_DEBUG_WRAPPER ??= "1"
# ----------------------------------------------- # -----------------------------------------------
# Enable use of work-shared folder # Enable use of work-shared folder
TFA_SHARED_SOURCES ??= "1"
STAGING_TFA_DIR = "${TMPDIR}/work-shared/${MACHINE}/tfa-source" STAGING_TFA_DIR = "${TMPDIR}/work-shared/${MACHINE}/tfa-source"
# Make sure to move ${S} to STAGING_TFA_DIR. We can't just # Make sure to move ${S} to STAGING_TFA_DIR. We can't just
# create the symlink in advance as the git fetcher can't cope with # create the symlink in advance as the git fetcher can't cope with
@ -60,25 +61,26 @@ base_do_unpack_append () {
if d.getVar('STAGING_TFA_DIR', d): if d.getVar('STAGING_TFA_DIR', d):
d.setVar('STAGING_TFA_DIR', '${S}') d.setVar('STAGING_TFA_DIR', '${S}')
# Copy/Paste from kernel class with adaptation to TFA var shared = d.getVar("TFA_SHARED_SOURCES")
s = d.getVar("S") if shared and oe.types.boolean(shared):
if s[-1] == '/': # Copy/Paste from kernel class with adaptation to TFA var
# drop trailing slash, so that os.symlink(tfasrc, s) doesn't use s as directory name and fail s = d.getVar("S")
s=s[:-1] if s[-1] == '/':
tfasrc = d.getVar("STAGING_TFA_DIR") # drop trailing slash, so that os.symlink(tfasrc, s) doesn't use s as directory name and fail
if s != tfasrc: s=s[:-1]
bb.utils.mkdirhier(tfasrc) tfasrc = d.getVar("STAGING_TFA_DIR")
bb.utils.remove(tfasrc, recurse=True) if s != tfasrc:
if d.getVar("EXTERNALSRC"): bb.utils.mkdirhier(tfasrc)
# With EXTERNALSRC S will not be wiped so we can symlink to it bb.utils.remove(tfasrc, recurse=True)
os.symlink(s, tfasrc) if d.getVar("EXTERNALSRC"):
else: # With EXTERNALSRC S will not be wiped so we can symlink to it
import shutil os.symlink(s, tfasrc)
shutil.move(s, tfasrc) else:
os.symlink(tfasrc, s) import shutil
shutil.move(s, tfasrc)
os.symlink(tfasrc, s)
} }
# Manage to export any specific setting for defined configs # Manage to export any specific setting for defined configs
python tfaconfig_env () { python tfaconfig_env () {
if d.getVar('TF_A_CONFIG'): if d.getVar('TF_A_CONFIG'):
@ -106,13 +108,20 @@ do_compile() {
for dt in ${TF_A_DEVICETREE}; do for dt in ${TF_A_DEVICETREE}; do
oe_runmake -C ${S} DTB_FILE_NAME=${dt}.dtb BUILD_PLAT=${B}/${config} ${add_extraoemake} 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} cp ${B}/${config}/${TF_A_BASENAME}-${dt}.${TF_A_SUFFIX} ${B}/${config}/${TF_A_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}
fi
done done
else else
oe_runmake -C ${S} BUILD_PLAT=${B}/${config} ${add_extraoemake} 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 fi
done done
} }
do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}/arm-trusted-firmware"
do_deploy() { do_deploy() {
install -d ${DEPLOYDIR} install -d ${DEPLOYDIR}
@ -120,11 +129,21 @@ do_deploy() {
if [ -n "${TF_A_DEVICETREE}" ]; then if [ -n "${TF_A_DEVICETREE}" ]; then
for dt in ${TF_A_DEVICETREE}; do for dt in ${TF_A_DEVICETREE}; do
install -m 644 ${B}/${config}/${TF_A_BASENAME}-${dt}-${config}.${TF_A_SUFFIX} ${DEPLOYDIR} 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
fi
done done
else else
# Get tf-a binary basename to copy # 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') tf_a_binary_basename=$(find ${B}/${config} -name "${TF_A_BASENAME}-*.${TF_A_SUFFIX}" -exec basename {} \; | sed 's|\.'"${TF_A_SUFFIX}"'||g')
install -m 644 ${B}/${config}/${tf_a_binary_basename}.${TF_A_SUFFIX} ${DEPLOYDIR}/${tf_a_binary_basename}-${config}.${TF_A_SUFFIX} 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 fi
done done

View File

@ -0,0 +1,34 @@
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 \
"
TF_VERSION = "2.2"
PV = "${TF_VERSION}.r1"
S = "${WORKDIR}/git"
# ---------------------------------
# Configure devupstream class usage
# ---------------------------------
#BBCLASSEXTEND = "devupstream:target"
#SRC_URI_class-devupstream = "git://github.com/STMicroelectronics/arm-trusted-firmware.git;protocol=https;name=tfa;branch=v2.0-stm32mp"
#SRCREV_class-devupstream = "d0233623681124a85b069f97a447d7edb1cc1c02"
#SRCREV_FORMAT_class-devupstream = "tfa"
#PV_class-devupstream = "${TF_VERSION}+github+${SRCPV}"
# ---------------------------------
# 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)}"

View File

@ -0,0 +1,21 @@
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"

View File

@ -16,17 +16,17 @@ For tf-a build you need to install:
Fedora: sudo yum install git Fedora: sudo yum install git
If you have never configured you git configuration: If you have never configured you git configuration:
$> git config --global user.name "your_name" $ git config --global user.name "your_name"
$> git config --global user.email "your_email@example.com" $ git config --global user.email "your_email@example.com"
2. Initialise cross-compilation via SDK: 2. Initialise cross-compilation via SDK:
--------------------------------------- ---------------------------------------
Source SDK environment: Source SDK environment:
$> source <path to SDK>/environment-setup-cortexa7t2hf-neon-vfpv4-openstlinux_weston-linux-gnueabi $ source <path to SDK>/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
To verify if your cross-compilation environment have put in place: To verify if your cross-compilation environment have put in place:
$> set | grep CROSS $ set | grep CROSS
CROSS_COMPILE=arm-openstlinux_weston-linux-gnueabi- CROSS_COMPILE=arm-ostl-linux-gnueabi-
Warning: the environment are valid only on the shell session where you have Warning: the environment are valid only on the shell session where you have
sourced the sdk environment. sourced the sdk environment.
@ -35,48 +35,46 @@ sourced the sdk environment.
------------------------ ------------------------
If you have the tarball and the list of patch then you must extract the tarball If you have the tarball and the list of patch then you must extract the tarball
and apply the patch. and apply the patch.
$> tar xfz <tf-a source>.tar.gz $> tar xfz ##BP##-##PR##.tar.gz
or
$> tar xfj <tf-a source>.tar.bz2
or
$> tar xfJ <tf-a source>.tar.xz
A new directory containing tf-a standard source code will be created, go into it: A new directory containing tf-a standard source code will be created, go into it:
$> cd <directory to tf-a source code> $> cd ##BP##
NB: if there is no git management on source code and you would like to have a NB: if there is no git management on source code and you would like to have a
git management on the code see section 4 [Management of tf-a source code] git management on the code see section 4 [Management of tf-a source code]
if there is some patch, please apply it on source code if there is some patch, please apply it on source code
$> for p in `ls -1 <path to patch>/*.patch`; do patch -p1 < $p; done $> for p in `ls -1 ../*.patch`; do patch -p1 < $p; done
4. Management of tf-a source code: 4. Management of tf-a source code:
----------------------------------- -----------------------------------
If you like to have a better management of change made on tf-a source, you If you like to have a better management of change made on tf-a source, you
can use git: can use git:
$> cd <directory to tf-a source code> $ cd <directory to tf-a source code>
$> test -d .git || git init . && git add . && git commit -m "tf-a source code" && git gc $ test -d .git || git init . && git add . && git commit -m "tf-a source code" && git gc
$> git checkout -b WORKING $ git checkout -b WORKING
$> for p in `ls -1 <path to patch>/*.patch`; do git am $p; done $ for p in `ls -1 <path to patch>/*.patch`; do git am $p; done
NB: you can use directly the source from the community: NB: you can use directly the source from the community:
URL: git://github.com/ARM-software/arm-trusted-firmware.git URL: git://github.com/ARM-software/arm-trusted-firmware.git
Branch: ##GIT_BRANCH## Branch: ##GIT_BRANCH##
Revision: ##GIT_SRCREV## Revision: ##GIT_SRCREV##
$> git clone git://github.com/ARM-software/arm-trusted-firmware.git -b ##GIT_BRANCH## $ git clone git://github.com/ARM-software/arm-trusted-firmware.git -b ##GIT_BRANCH##
$> cd <directory to tf-a source code> $ cd <directory to tf-a source code>
$> git checkout -b WORKING ##GIT_SRCREV## $ git checkout -b WORKING ##GIT_SRCREV##
$> for p in `ls -1 <path to patch>/*.patch`; do git am $p; done $ for p in `ls -1 <path to patch>/*.patch`; do git am $p; done
5. Build tf-a source code: 5. Build tf-a source code:
-------------------------------- --------------------------------
To compile tf-a source code To compile tf-a source code
$> cd <directory to tf-a source code>
$> make -f $PWD/../Makefile.sdk all $> make -f $PWD/../Makefile.sdk all
or for a specific config : or for a specific config :
$> make -f $PWD/../Makefile.sdk TFA_DEVICETREE=stm32mp157c-ev1 TF_A_CONFIG=trusted ELF_DEBUG_ENABLE='1' all $ make -f $PWD/../Makefile.sdk TFA_DEVICETREE=stm32mp157c-ev1 TF_A_CONFIG=trusted ELF_DEBUG_ENABLE='1' all
NB: TFA_DEVICETREE flag must be set to switch to correct board configuration. NB: TFA_DEVICETREE flag must be set to switch to correct board configuration.
Files generated should be as follow:
#> ../build/*/tf-a-*.stm32
6. Update software on board: 6. Update software on board:
---------------------------- ----------------------------
6.1. partitioning of binaries: 6.1. partitioning of binaries:
@ -90,11 +88,11 @@ Copy the binary (tf-a-*.stm32) on the dedicated partition, on SDCARD/USB disk
the partition "fsbl1" are the partition 1: the partition "fsbl1" are the partition 1:
- SDCARD: /dev/mmcblkXp1 (where X is the instance number) - SDCARD: /dev/mmcblkXp1 (where X is the instance number)
- SDCARD via USB reader: /dev/sdX1 (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 $ 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 FAQ: to found the partition associated to a specific label, just plug the
SDCARD/USB disk on your PC and call the following command: SDCARD/USB disk on your PC and call the following command:
$> ls -l /dev/disk/by-partlabel/ $ ls -l /dev/disk/by-partlabel/
total 0 total 0
lrwxrwxrwx 1 root root 10 Jan 17 17:38 bootfs -> ../../mmcblk0p4 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 fsbl1 -> ../../mmcblk0p1 ➔ FSBL (TF-A)
@ -117,4 +115,4 @@ lrwxrwxrwx 1 root root 10 Jan 17 17:38 userfs -> ../../mmcblk0p6
For SDCARD: ums 0 mmc 0 For SDCARD: ums 0 mmc 0
For USB disk: ums 0 usb 0 For USB disk: ums 0 usb 0
* Follow section 6.2 to put tf-a-*.stm32 on SDCARD/USB disk * Follow section 6.2 to put tf-a-*.stm32 on SDCARD/USB disk

View File

@ -1,42 +0,0 @@
SUMMARY = "Trusted Firmware-A for STM32MP1"
SECTION = "bootloaders"
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://license.rst;md5=e927e02bca647e14efd87e9e914b2443"
SRC_URI = "https://github.com/ARM-software/arm-trusted-firmware/archive/v${PV}.tar.gz"
SRC_URI[md5sum] = "21038abbf572c273fa87d296bcd5dad2"
SRC_URI[sha256sum] = "7d699a1683bb7a5909de37b6eb91b6e38db32cd6fc5ae48a08eb0718d6504ae4"
SRC_URI += " \
file://0001-st-update-r1.patch \
file://0002-st-update-r1.1.0.patch \
file://0003-st-update-r1.2.0.patch \
"
TF_VERSION = "2.0"
PV = "${TF_VERSION}"
S = "${WORKDIR}/arm-trusted-firmware-${PV}"
require tf-a-stm32mp-common.inc
# ---------------------------------
# Configure archiver use
# ---------------------------------
include ${@oe.utils.ifelse(d.getVar('ST_ARCHIVER_ENABLE') == '1', 'tf-a-stm32mp-archiver.inc','')}
# ---------------------------------
# Configure devupstream class usage
# ---------------------------------
BBCLASSEXTEND = "devupstream:target"
SRC_URI_class-devupstream = "git://github.com/STMicroelectronics/arm-trusted-firmware.git;protocol=https;name=tfa;branch=v2.0-stm32mp"
SRCREV_class-devupstream = "5148fa0d1272cdf714ba0d7f0c38e0f72fa27020"
SRCREV_FORMAT_class-devupstream = "tfa"
PV_class-devupstream = "${TF_VERSION}+github+${SRCPV}"
# ---------------------------------
# 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)}"

View File

@ -0,0 +1,26 @@
require tf-a-stm32mp-common_${PV}.inc
require tf-a-stm32mp-common.inc
SUMMARY = "Trusted Firmware-A for STM32MP1"
LICENSE = "BSD-3-Clause"
PROVIDES += "virtual/trusted-firmware-a"
# 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'
# Enable the wrapper for debug
TF_A_ENABLE_DEBUG_WRAPPER ?= "1"
# ---------------------------------
# Configure archiver use
# ---------------------------------
include ${@oe.utils.ifelse(d.getVar('ST_ARCHIVER_ENABLE') == '1', 'tf-a-stm32mp-archiver.inc','')}