stm-st-stm32mp: fip/tf-a: sync .bbappend recipes with ST BSP v25.06.11 release

This commit updates the Digi custom .bbappend recipes for FIP and TF-A to align
with the latest ST BSP release, based on the openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11
tag for Yocto 5.0 (scarthgap).

https://onedigi.atlassian.net/browse/DEL-9734

Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
This commit is contained in:
Arturo Buzarra 2025-07-28 16:43:39 +02:00
parent 8d26062700
commit ea5027e623
6 changed files with 70 additions and 45 deletions

View File

@ -43,6 +43,7 @@ UBOOT_INSTALL_SD_INDEX = "1"
STM32MP_DT_FILES_NAND = "ccmp13-dvk-256MB"
STM32MP_DT_FILES_SDCARD = "${STM32MP_DT_FILES_NAND}"
STM32MP_DT_FILES_USB = "${STM32MP_DT_FILES_NAND}"
STM32MP_DT_FILES_UART = "${STM32MP_DT_FILES_NAND}"
# Extra DTB for board - need to specify it with .dtb ...
STM32MP_KERNEL_DEVICETREE:ccmp13-dvk += " \

View File

@ -43,6 +43,7 @@ UBOOT_INSTALL_SD_INDEX = "1"
STM32MP_DT_FILES_NAND = "ccmp15-dvk-512MB ccmp15-dvk-1GB"
STM32MP_DT_FILES_SDCARD = "${STM32MP_DT_FILES_NAND}"
STM32MP_DT_FILES_USB = "${STM32MP_DT_FILES_NAND}"
STM32MP_DT_FILES_UART = "${STM32MP_DT_FILES_NAND}"
# Extra DTB for board - need to specify it with .dtb ...
STM32MP_KERNEL_DEVICETREE:ccmp15-dvk += " \

View File

@ -39,6 +39,13 @@ UBOOT_ENV_RANGE ?= ""
FIP_SIGN_SUFFIX ?= "${@bb.utils.contains('TRUSTFENCE_SIGN', '1', '_Signed', '', d)}"
# =========================================================================
# trusted-firmware-a
# =========================================================================
# Set custom TF-A config
TF_A_CONFIG_ALL += " ${@bb.utils.contains('BOOTSCHEME_LABELS', 'optee', bb.utils.contains('BOOTDEVICE_LABELS', 'usb', 'optee-usb', '', d), '', d)}"
TF_A_CONFIG_ALL += " ${@bb.utils.contains('BOOTSCHEME_LABELS', 'optee', bb.utils.contains('BOOTDEVICE_LABELS', 'uart', 'optee-uart', '', d), '', d)}"
# =========================================================================
# Kernel
# =========================================================================

View File

@ -32,6 +32,9 @@ UBOOT_DTBO_LOADADDRESS = "0x8a000000"
# trusted-firmware-a
# =========================================================================
PREFERRED_PROVIDER_virtual/trusted-firmware-a = "tf-a-stm32mp"
# Set custom TF-A config
TF_A_CONFIG_ALL += " ${@bb.utils.contains('BOOTSCHEME_LABELS', 'optee', bb.utils.contains('BOOTDEVICE_LABELS', 'usb', 'optee-usb', '', d), '', d)}"
# Set metadata settings
DEVICE_PARTUUID_FIP_A = "1c606ef5-f1ac-43b9-9bb5-d5c578580b6b"

View File

@ -7,8 +7,8 @@ inherit sign-stm32mp-digi
# Add optee-usb FIP configuration
STM32MP_DEVICETREE_USB = " ${@' '.join('%s' % dt_file for dt_file in list(dict.fromkeys((d.getVar('STM32MP_DT_FILES_USB') or '').split())))} "
FIP_CONFIG[optee-usb] ?= "optee,${STM32MP_DEVICETREE_USB},default:optee,usb"
FIP_CONFIG += "${@bb.utils.contains('BOOTSCHEME_LABELS', 'optee', bb.utils.contains('BOOTDEVICE_LABELS', 'usb', 'optee-usb', '', d), '', d)}"
FIP_CONFIG[optee-usb] ?= "optee,${STM32MP_DEVICETREE_USB},,default:optee,usb"
FIP_CONFIG_ALL += "${@bb.utils.contains('BOOTSCHEME_LABELS', 'optee', bb.utils.contains('BOOTDEVICE_LABELS', 'usb', 'optee-usb', '', d), '', d)}"
# Obtain password to use in FIP generation
# Get password from file using the given key index
@ -37,6 +37,8 @@ do_deploy() {
i=$(expr $i + 1)
bl32_conf=$(echo ${FIP_BL32_CONF} | cut -d',' -f${i})
dt_config=$(echo ${FIP_DEVICETREE} | cut -d',' -f${i})
dt_suffix=$(echo ${FIP_DEVICETREE_SUFFIX} | cut -d',' -f${i})
[ "${EXTDT_USE_SUFFIX}" = "1" ] || dt_suffix=""
search_conf=$(echo ${FIP_SEARCH_CONF} | cut -d',' -f${i})
device_conf=$(echo ${FIP_DEVICE_CONF} | cut -d',' -f${i})
for dt in ${dt_config}; do
@ -101,21 +103,26 @@ do_deploy() {
STORAGE_SEARCH=""
[ -z "${device_conf}" ] || STORAGE_SEARCH="--search-storage ${device_conf}"
# Configure devicetree suffix search
DT_SUFFIX_SEARCH=""
[ -z "${dt_suffix}" ] || DT_SUFFIX_SEARCH="--search-devicetree-suffix ${dt_suffix}"
FIP_PARAM_ddr=""
if [ -d "${RECIPE_SYSROOT}/${FIP_DIR_TFA_BASE}/${FIP_DIR_FWDDR}" ]; then
FIP_PARAM_ddr="--use-ddr"
echo "********************************************"
bbnote "[fip-utils-stm32mp] FIP DDR command details:\
FIP_DEPLOYDIR_ROOT=${RECIPE_SYSROOT} \
${FIP_WRAPPER} \
${FIP_PARAM_BLxx} \
${FIP_PARAM_SIGN} \
${STORAGE_SEARCH} \
--use-ddr --generate-only-ddr \
--search-configuration ${config}\
--search-devicetree ${dt} \
--search-soc-name ${soc_suffix} \
--output ${DEPLOYDIR}/${FIP_DIR_FIP}"
\nFIP_DEPLOYDIR_ROOT=${RECIPE_SYSROOT} \
\n${FIP_WRAPPER} \
\n${FIP_PARAM_BLxx} \
\n${FIP_PARAM_SIGN} \
\n${STORAGE_SEARCH} \
\n--use-ddr --generate-only-ddr \
\n--search-configuration ${config}\
\n--search-devicetree ${dt} \
\n${DT_SUFFIX_SEARCH} \
\n--search-soc-name ${soc_suffix} \
\n--output ${DEPLOYDIR}/${FIP_DIR_FIP}"
echo "********************************************"
FIP_DEPLOYDIR_ROOT="${RECIPE_SYSROOT}" \
${FIP_WRAPPER} \
@ -125,6 +132,7 @@ do_deploy() {
--use-ddr --generate-only-ddr \
--search-configuration ${config}\
--search-devicetree ${dt} \
${DT_SUFFIX_SEARCH} \
--search-soc-name ${soc_suffix} \
--output ${DEPLOYDIR}/${FIP_DIR_FIP}
fi
@ -142,6 +150,7 @@ do_deploy() {
\n${SECOND_CONFSEARCH} \
\n--search-configuration ${config} \
\n--search-devicetree ${dt} \
\n${DT_SUFFIX_SEARCH} \
\n--search-soc-name ${soc_suffix} \
\n--output ${DEPLOYDIR}/${FIP_DIR_FIP}"
echo "****************************************"
@ -154,6 +163,7 @@ do_deploy() {
${SECOND_CONFSEARCH} \
--search-configuration ${config} \
--search-devicetree ${dt} \
${DT_SUFFIX_SEARCH} \
--search-soc-name ${soc_suffix} \
--output ${DEPLOYDIR}/${FIP_DIR_FIP}
done

View File

@ -36,16 +36,16 @@ TF_A_CONFIG[opteemin-nand] ?= "\
${TF_A_CONFIG_BASENAME_BIN},\
${TF_A_CONFIG_MAKE_TARGET},\
${TF_A_CONFIG_DEPLOY_FTYPE} ${TF_A_CONFIG_DEPLOY_EXTRA}"
# TF_A_CONFIG[uart] (same as 'optee-programmer-uart')
TF_A_CONFIG[uart] ?= "\
${STM32MP_DEVICETREE_PROGRAMMER},\
# TF_A_CONFIG[optee-uart] (same as 'optee-programmer-uart')
TF_A_CONFIG[optee-uart] ?= "\
${STM32MP_DT_FILES_UART},\
${TF_A_CONFIG_OPTS_optee} STM32MP_UART_PROGRAMMER=1,\
${TF_A_CONFIG_BASENAME_BIN},\
${TF_A_CONFIG_MAKE_TARGET} ${TF_A_CONFIG_MAKE_EXTRAS},\
${TF_A_CONFIG_DEPLOY_FTYPE} ${TF_A_CONFIG_DEPLOY_EXTRA}"
# TF_A_CONFIG[usb] (same as 'optee-programmer-uart')
TF_A_CONFIG[usb] ?= "\
${STM32MP_DEVICETREE_PROGRAMMER},\
# TF_A_CONFIG[optee-usb] (same as 'optee-programmer-usb')
TF_A_CONFIG[optee-usb] ?= "\
${STM32MP_DT_FILES_USB},\
${TF_A_CONFIG_OPTS_optee} STM32MP_USB_PROGRAMMER=1,\
${TF_A_CONFIG_BASENAME_BIN},\
${TF_A_CONFIG_MAKE_TARGET} ${TF_A_CONFIG_MAKE_EXTRAS},\
@ -97,6 +97,8 @@ do_compile() {
i=$(expr $i + 1)
# Initialize devicetree list, extra make options and tf-a basename
dt_config=$(echo ${TF_A_DEVICETREE} | cut -d',' -f${i})
dt_suffix=$(echo ${TF_A_DT_SUFFIX} | cut -d',' -f${i})
[ "${EXTDT_USE_SUFFIX}" = "1" ] || dt_suffix=""
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})
@ -135,19 +137,20 @@ do_compile() {
fi
done
fi
mkdir -p ${B}/${config}${soc_suffix}-${dt}
build_dir="${B}/${config}${soc_suffix}-${dt}${dt_suffix}"
mkdir -p "${build_dir}"
if [ "${TF_A_ENABLE_METADATA}" = "1" ]; then
rm -rf "${B}/${config}${soc_suffix}-${dt}/${TF_A_METADATA_NAME}.${TF_A_METADATA_SUFFIX}"
rm -rf "${build_dir}/${TF_A_METADATA_NAME}.${TF_A_METADATA_SUFFIX}"
${TF_A_METADATA_TOOL} ${TF_A_METADATA_TOOL_ARGS} "${B}/${TF_A_METADATA_NAME}.${TF_A_METADATA_SUFFIX}"
fi
# generate dt to check the content
oe_runmake -C "${S}" BUILD_PLAT="${B}/${config}${soc_suffix}-${dt}" DTB_FILE_NAME="${dt}.dtb" ${extra_opt} ${soc_extra_opt} dtbs
oe_runmake -C "${S}" BUILD_PLAT="${build_dir}" DTB_FILE_NAME="${dt}${dt_suffix}.dtb" ${extra_opt} ${soc_extra_opt} dtbs
# check which pmic1l is present on dtb
pcmi1_present=$(${STAGING_BINDIR_NATIVE}/fdtdump ${B}/${config}${soc_suffix}-${dt}/fdts/${dt}-bl2.dtb 2>/dev/null | grep -c "st,stpmic1l" || ${HOSTTOOLS_DIR}/true)
if [ -f "${B}/${config}${soc_suffix}-${dt}/fdts/${dt}-bl2.dtb" ]; then
if [ $pcmi1_present -gt 0 ]; then
if [ -f "${build_dir}/fdts/${dt}${dt_suffix}-bl2.dtb" ]; then
pcmi1_present=$(${STAGING_BINDIR_NATIVE}/fdtdump ${build_dir}/fdts/${dt}${dt_suffix}-bl2.dtb 2>/dev/null | grep -c "st,stpmic1l" || ${HOSTTOOLS_DIR}/true)
if [ "${pcmi1_present}" -gt 0 ]; then
# st pmic1l is present, need to force to compilation with specific pcmi1l optionn
soc_extra_opt="${soc_extra_opt} STM32MP_STPMIC1L=1"
fi
@ -157,9 +160,9 @@ do_compile() {
ddr_extra_opt=""
if [ "${TF_A_FWDDR}" = "1" ]; then
# Detect ddr type if it's present
if [ -f "${B}/${config}${soc_suffix}-${dt}/fdts/${dt}-bl2.dtb" ]; then
ddr_dtb_node=$(${STAGING_BINDIR_NATIVE}/fdtget -l ${B}/${config}${soc_suffix}-${dt}/fdts/${dt}-bl2.dtb /soc | grep ddr | head -n 1)
ddr_propertie=$(${STAGING_BINDIR_NATIVE}/fdtget ${B}/${config}${soc_suffix}-${dt}/fdts/${dt}-bl2.dtb /soc/${ddr_dtb_node} st,mem-name || echo "none")
if [ -f "${build_dir}/fdts/${dt}${dt_suffix}-bl2.dtb" ]; then
ddr_dtb_node=$(${STAGING_BINDIR_NATIVE}/fdtget -l ${build_dir}/fdts/${dt}${dt_suffix}-bl2.dtb /soc | grep ddr | head -n 1)
ddr_propertie=$(${STAGING_BINDIR_NATIVE}/fdtget ${build_dir}/fdts/${dt}${dt_suffix}-bl2.dtb /soc/${ddr_dtb_node} st,mem-name || echo "none")
ddr_target=""
# potentials value of ddr_propertie:
# DDR3 16bits
@ -180,15 +183,15 @@ do_compile() {
ddr_target="lpddr4"
;;
*)
bbfatal "Missing st,mem-name information for ${dt}"
bbfatal "Missing st,mem-name information for ${dt}${dt_suffix}"
;;
esac
bbnote "${dt}: ${tf_a_make_target} -> ${ddr_extra_opt}"
bbnote "${dt}${dt_suffix}: ${tf_a_make_target} -> ${ddr_extra_opt}"
# Copy TF-A ddr binary with explicit devicetree filename
if [ -s "${FWDDR_DIR}/${ddr_target}_pmu_train.bin" ]; then
install -m 644 "${FWDDR_DIR}/${ddr_target}_pmu_train.bin" "${B}/${config}${soc_suffix}-${dt}/${FWDDR_NAME}-${dt}-${config}.${FWDDR_SUFFIX}"
install -m 644 "${FWDDR_DIR}/${ddr_target}_pmu_train.bin" "${build_dir}/${FWDDR_NAME}-${dt}-${config}.${FWDDR_SUFFIX}"
else
bbfatal "Missing ddr firmware file ${ddr_target}_pmu_train.bin for ${dt}"
bbfatal "Missing ddr firmware file ${ddr_target}_pmu_train.bin for ${dt}${dt_suffix}"
fi
fi
fi
@ -212,15 +215,15 @@ do_compile() {
encrypt_extra_opt="ENC_KEY=${encrypt_key}"
fi
oe_runmake -C "${S}" BUILD_PLAT="${B}/${config}${soc_suffix}-${dt}" DTB_FILE_NAME="${dt}.dtb" ${extra_opt} ${soc_extra_opt} ${ddr_extra_opt} ${encrypt_extra_opt} ${tf_a_make_target}
if [ -f "${B}/${config}${soc_suffix}-${dt}/bl2.bin" ]; then
cp "${B}/${config}${soc_suffix}-${dt}/bl2.bin" "${B}/${config}${soc_suffix}-${dt}/${tfa_basename}-${dt}-${config}.bin"
oe_runmake -C "${S}" BUILD_PLAT="${build_dir}" DTB_FILE_NAME="${dt}${dt_suffix}.dtb" ${extra_opt} ${soc_extra_opt} ${ddr_extra_opt} ${encrypt_extra_opt} ${tf_a_make_target}
if [ -f "${build_dir}/bl2.bin" ]; then
cp "${build_dir}/bl2.bin" "${build_dir}/${tfa_basename}-${dt}-${config}.bin"
fi
# Copy TF-A binary with explicit devicetree filename
if [ -f "${B}/${config}${soc_suffix}-${dt}/${tfa_basename}-${dt}.${TF_A_SUFFIX}" ]; then
cp "${B}/${config}${soc_suffix}-${dt}/${tfa_basename}-${dt}.${TF_A_SUFFIX}" "${B}/${config}${soc_suffix}-${dt}/${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}"
if [ -f "${build_dir}/${tfa_basename}-${dt}${dt_suffix}.${TF_A_SUFFIX}" ]; then
cp "${build_dir}/${tfa_basename}-${dt}${dt_suffix}.${TF_A_SUFFIX}" "${build_dir}/${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}"
if [ "${TF_A_ENABLE_DEBUG_WRAPPER}" = "1" ]; then
stm32wrapper4dbg -s "${B}/${config}${soc_suffix}-${dt}/${tfa_basename}-${dt}.${TF_A_SUFFIX}" -d "${B}/${config}${soc_suffix}-${dt}/debug-${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}"
stm32wrapper4dbg -s "${build_dir}/${tfa_basename}-${dt}${dt_suffix}.${TF_A_SUFFIX}" -d "${build_dir}/debug-${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}"
fi
if [ "${SIGN_ENABLE}" = "1" ]; then
@ -256,8 +259,8 @@ do_compile() {
fi
# Sign tf-a binary
bbnote "${SIGN_TOOL} \
-bin "${B}/${config}${soc_suffix}-${dt}/${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}" \
-o "${B}/${config}${soc_suffix}-${dt}/${tfa_basename}-${dt}-${config}${TF_A_ENCRYPT_SUFFIX}${TF_A_SIGN_SUFFIX}.${TF_A_SUFFIX}" \
-bin "${build_dir}/${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}" \
-o "${build_dir}/${tfa_basename}-${dt}-${config}${TF_A_ENCRYPT_SUFFIX}${TF_A_SIGN_SUFFIX}.${TF_A_SUFFIX}" \
--password ${SIGN_KEY_PASS} \
--public-key $(ls -1 $(dirname ${sign_key})/publicKey*.pem | tr '\n' '\t') \
--private-key ${sign_key} \
@ -267,8 +270,8 @@ do_compile() {
${tf_a_encrypt_opts} "
${SIGN_TOOL} \
-bin "${B}/${config}${soc_suffix}-${dt}/${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}" \
-o "${B}/${config}${soc_suffix}-${dt}/${tfa_basename}-${dt}-${config}${TF_A_ENCRYPT_SUFFIX}${TF_A_SIGN_SUFFIX}.${TF_A_SUFFIX}" \
-bin "${build_dir}/${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}" \
-o "${build_dir}/${tfa_basename}-${dt}-${config}${TF_A_ENCRYPT_SUFFIX}${TF_A_SIGN_SUFFIX}.${TF_A_SUFFIX}" \
--password ${SIGN_KEY_PASS} \
--public-key $(ls -1 $(dirname ${sign_key})/publicKey*.pem | tr '\n' '\t') \
--private-key ${sign_key} \
@ -278,8 +281,8 @@ do_compile() {
${tf_a_encrypt_opts}
if [ "${TF_A_ENABLE_DEBUG_WRAPPER}" = "1" ]; then
bbnote "${SIGN_TOOL} \
-bin "${B}/${config}${soc_suffix}-${dt}/debug-${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}" \
-o "${B}/${config}${soc_suffix}-${dt}/debug-${tfa_basename}-${dt}-${config}${TF_A_ENCRYPT_SUFFIX}${TF_A_SIGN_SUFFIX}.${TF_A_SUFFIX}" \
-bin "${build_dir}/debug-${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}" \
-o "${build_dir}/debug-${tfa_basename}-${dt}-${config}${TF_A_ENCRYPT_SUFFIX}${TF_A_SIGN_SUFFIX}.${TF_A_SUFFIX}" \
--password ${SIGN_KEY_PASS} \
--public-key $(ls -1 $(dirname ${sign_key})/publicKey*.pem | tr '\n' '\t') \
--private-key "${sign_key}" \
@ -289,8 +292,8 @@ do_compile() {
${tf_a_encrypt_opts}"
${SIGN_TOOL} \
-bin "${B}/${config}${soc_suffix}-${dt}/debug-${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}" \
-o "${B}/${config}${soc_suffix}-${dt}/debug-${tfa_basename}-${dt}-${config}${TF_A_ENCRYPT_SUFFIX}${TF_A_SIGN_SUFFIX}.${TF_A_SUFFIX}" \
-bin "${build_dir}/debug-${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}" \
-o "${build_dir}/debug-${tfa_basename}-${dt}-${config}${TF_A_ENCRYPT_SUFFIX}${TF_A_SIGN_SUFFIX}.${TF_A_SUFFIX}" \
--password ${SIGN_KEY_PASS} \
--public-key $(ls -1 $(dirname ${sign_key})/publicKey*.pem | tr '\n' '\t') \
--private-key "${sign_key}" \