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
mkdir -p ${ARCHIVER_OUTDIR}
#remove default variable
echo "LDFLAGS=" > ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "CFLAGS=" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "CPPFLAGS=" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "CC=" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "CPP=" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "AS=" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "AR=" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "LD=" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "NM=" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
cat << EOF > ${ARCHIVER_OUTDIR}/Makefile.sdk
#remove default variable
LDFLAGS=
CFLAGS=
CPPFLAGS=
CC=
CPP=
AS=
AR=
LD=
NM=
echo "LOCAL_PATH=\$(PWD)" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
LOCAL_PATH=\$(PWD)
echo "EXTRA_OEMAKE=${EXTRA_OEMAKE}" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
EXTRA_OEMAKE=${EXTRA_OEMAKE}
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
echo "ELF_DEBUG_ENABLE ?= ${ELF_DEBUG_ENABLE}" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "TF_A_CONFIG ?= ${TF_A_CONFIG}" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
# Set specific OEMAKE config
echo "TF_A_CONFIG_OEMAKE = ${tf_a_config_oemake}" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
# Set default config
ELF_DEBUG_ENABLE ?= ${ELF_DEBUG_ENABLE}
TF_A_CONFIG ?= ${TF_A_CONFIG} serialboot
# Set default TFA_DEVICETREE with configured TF_A_DEVICETREE
if [ -n "${TF_A_DEVICETREE}" ]; then
echo "TFA_DEVICETREE ?= ${TF_A_DEVICETREE}" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
else
echo "TFA_DEVICETREE ?=" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
fi
echo "" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
# 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}
echo "help:" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " @echo" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
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
#Set default TF_A_ENABLE_DEBUG_WRAPPER
TF_A_ENABLE_DEBUG_WRAPPER ?= ${TF_A_ENABLE_DEBUG_WRAPPER}
echo "all: tf" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
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
echo "host_tools:" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " @\$(MAKE) --no-print-directory -C \$(LOCAL_PATH)/tools/stm32image" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo "" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
all: tf
echo "tf: host_tools" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " for config in \$(TF_A_CONFIG) ; do \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
# 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
host_tools:
@\$(MAKE) --no-print-directory -C \$(LOCAL_PATH)/tools/stm32image
echo "clean:" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " @for config in \$(TF_A_CONFIG) ; do \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " rm -rf \$(LOCAL_PATH)/../build/\$\$config ; \\" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
echo " done" >> ${ARCHIVER_OUTDIR}/Makefile.sdk
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 [ "\$(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"

View File

@ -11,6 +11,13 @@ B = "${WORKDIR}/build"
EXTERNALSRC_BUILD_pn-${PN} = "${WORKDIR}/build"
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
TF_A_BASENAME ?= "tf-a"
@ -32,21 +39,15 @@ BL32_NAME ?= "bl32/bl32"
BL32_ELF = "${BL32_NAME}.${TF_A_ELF_SUFFIX}"
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
TF_A_CONFIG ?= ""
#Enable the wrapper for debug
TF_A_ENABLE_DEBUG_WRAPPER ??= "1"
# -----------------------------------------------
# Enable use of work-shared folder
TFA_SHARED_SOURCES ??= "1"
STAGING_TFA_DIR = "${TMPDIR}/work-shared/${MACHINE}/tfa-source"
# 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
@ -60,25 +61,26 @@ base_do_unpack_append () {
if d.getVar('STAGING_TFA_DIR', d):
d.setVar('STAGING_TFA_DIR', '${S}')
# Copy/Paste from kernel class with adaptation to TFA var
s = d.getVar("S")
if s[-1] == '/':
# drop trailing slash, so that os.symlink(tfasrc, s) doesn't use s as directory name and fail
s=s[:-1]
tfasrc = d.getVar("STAGING_TFA_DIR")
if s != tfasrc:
bb.utils.mkdirhier(tfasrc)
bb.utils.remove(tfasrc, recurse=True)
if d.getVar("EXTERNALSRC"):
# With EXTERNALSRC S will not be wiped so we can symlink to it
os.symlink(s, tfasrc)
else:
import shutil
shutil.move(s, tfasrc)
os.symlink(tfasrc, s)
shared = d.getVar("TFA_SHARED_SOURCES")
if shared and oe.types.boolean(shared):
# Copy/Paste from kernel class with adaptation to TFA var
s = d.getVar("S")
if s[-1] == '/':
# drop trailing slash, so that os.symlink(tfasrc, s) doesn't use s as directory name and fail
s=s[:-1]
tfasrc = d.getVar("STAGING_TFA_DIR")
if s != tfasrc:
bb.utils.mkdirhier(tfasrc)
bb.utils.remove(tfasrc, recurse=True)
if d.getVar("EXTERNALSRC"):
# With EXTERNALSRC S will not be wiped so we can symlink to it
os.symlink(s, tfasrc)
else:
import shutil
shutil.move(s, tfasrc)
os.symlink(tfasrc, s)
}
# Manage to export any specific setting for defined configs
python tfaconfig_env () {
if d.getVar('TF_A_CONFIG'):
@ -106,13 +108,20 @@ do_compile() {
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}
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
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}
@ -120,11 +129,21 @@ do_deploy() {
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
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')
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
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
If you have never configured you git configuration:
$> git config --global user.name "your_name"
$> git config --global user.email "your_email@example.com"
$ git config --global user.name "your_name"
$ git config --global user.email "your_email@example.com"
2. Initialise cross-compilation via SDK:
---------------------------------------
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:
$> set | grep CROSS
CROSS_COMPILE=arm-openstlinux_weston-linux-gnueabi-
$ set | grep CROSS
CROSS_COMPILE=arm-ostl-linux-gnueabi-
Warning: the environment are valid only on the shell session where you have
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
and apply the patch.
$> tar xfz <tf-a source>.tar.gz
or
$> tar xfj <tf-a source>.tar.bz2
or
$> tar xfJ <tf-a source>.tar.xz
$> tar xfz ##BP##-##PR##.tar.gz
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
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
$> 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:
-----------------------------------
If you like to have a better management of change made on tf-a source, you
can use git:
$> cd <directory to tf-a source code>
$> test -d .git || git init . && git add . && git commit -m "tf-a source code" && git gc
$> git checkout -b WORKING
$> for p in `ls -1 <path to patch>/*.patch`; do git am $p; done
$ cd <directory to tf-a source code>
$ test -d .git || git init . && git add . && git commit -m "tf-a source code" && git gc
$ git checkout -b WORKING
$ for p in `ls -1 <path to patch>/*.patch`; do git am $p; done
NB: you can use directly the source from the community:
URL: git://github.com/ARM-software/arm-trusted-firmware.git
Branch: ##GIT_BRANCH##
Revision: ##GIT_SRCREV##
$> git clone git://github.com/ARM-software/arm-trusted-firmware.git -b ##GIT_BRANCH##
$> cd <directory to tf-a source code>
$> git checkout -b WORKING ##GIT_SRCREV##
$> for p in `ls -1 <path to patch>/*.patch`; do git am $p; done
$ git clone git://github.com/ARM-software/arm-trusted-firmware.git -b ##GIT_BRANCH##
$ cd <directory to tf-a source code>
$ git checkout -b WORKING ##GIT_SRCREV##
$ for p in `ls -1 <path to patch>/*.patch`; do git am $p; done
5. Build tf-a source code:
--------------------------------
To compile tf-a source code
$> cd <directory to tf-a source code>
$> make -f $PWD/../Makefile.sdk all
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.
Files generated should be as follow:
#> ../build/*/tf-a-*.stm32
6. Update software on board:
----------------------------
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:
- 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
$ 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/
$ 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)
@ -117,4 +115,4 @@ lrwxrwxrwx 1 root root 10 Jan 17 17:38 userfs -> ../../mmcblk0p6
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
* 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','')}