[PATCH v1] imx: mkimage_fit_atf: replace @ with hyphen

ZHIZHIKIN Andrey andrey.zhizhikin at leica-geosystems.com
Wed May 5 15:30:07 CEST 2021


Hello Oliver,

> -----Original Message-----
> From: U-Boot <u-boot-bounces at lists.denx.de> On Behalf Of Oliver Graute
> Sent: Wednesday, May 5, 2021 2:01 PM
> To: sbabic at denx.de
> Cc: festevam at gmail.com; peng.fan at nxp.com;
> oliver.graute at kococonnector.com; u-boot at lists.denx.de; Simon Glass
> <sjg at chromium.org>; uboot-imx <uboot-imx at nxp.com>
> Subject: [PATCH v1] imx: mkimage_fit_atf: replace @ with hyphen
> 
> 
> Unit addresses are not allowed anymore in a FIT image since
> 
> commit 3f04db891a35 ("image: Check for unit addresses in FITs")
> 
> This caused this error on mkimage creation:
> 
> ./tools/mkimage: verify_header failed for FIT Image support with exit code 1
> Makefile:1393: recipe for target 'u-boot.itb' failed
> make: *** [u-boot.itb] Error 1

IIRC, this error comes from the derivatives which are not (yet) migrated to use 'binman' and have CONFIG_SPL_FIT_GENERATOR set.

It is triggered by 79af75f777 ("fit: Don't allow verification of images with @ nodes"), which is totally correct behavior and should be
corrected on the FIT generator end, so the patch itself solves the problem.

TBH, I had introduced the same change to NXP U-Boot fork that is built for NXP Yocto BSP [1], and was not sure it is relevant for the
master since it uses 'binman' instead of FIT generator.

From the other point of view, which imx8m board do you experience this build problem with?

Currently, there are following boards that need to be migrated from FIT generator to 'binman':
configs/imx8mm_beacon_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
configs/imx8mm_venice_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
configs/imx8mn_beacon_2g_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
configs/imx8mn_beacon_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
configs/imx8mq_evk_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
configs/imx8mq_phanbell_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
configs/imx8qm_rom7720_a1_4G_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
configs/phycore-imx8mm_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
configs/phycore-imx8mp_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
configs/pico-imx8mq_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
configs/verdin-imx8mm_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"

I know it's a long shot, but the question is: should the FIT generator be adapted here, or maybe those boards that are
still using it - to be migrated to binman directly?

There is already a warning in root Makefile regarding usage of FIT generator:
"===================== WARNING ======================"
"This board uses CONFIG_SPL_FIT_GENERATOR. Please migrate"
"to binman instead, to avoid the proliferation of"
"arch-specific scripts with no tests."
"===================================================="

So maybe it makes sense to adapt affected boards instead?

> 
> replacing @ with hyphen solved the issue
> 
> Signed-off-by: Oliver Graute <oliver.graute at kococonnector.com>
> Cc: Stefano Babic <sbabic at denx.de>
> Cc: Fabio Estevam <festevam at gmail.com>
> Cc: Peng Fan <peng.fan at nxp.com>
> Cc: Simon Glass <sjg at chromium.org>
> Cc: uboot-imx <uboot-imx at nxp.com>
> ---
>  arch/arm/mach-imx/mkimage_fit_atf.sh | 24 ++++++++++++------------
>  1 file changed, 12 insertions(+), 12 deletions(-)
> 
> diff --git a/arch/arm/mach-imx/mkimage_fit_atf.sh b/arch/arm/mach-
> imx/mkimage_fit_atf.sh
> index fe12b7bb4b..c5fb9b0fc3 100755
> --- a/arch/arm/mach-imx/mkimage_fit_atf.sh
> +++ b/arch/arm/mach-imx/mkimage_fit_atf.sh
> @@ -53,7 +53,7 @@ cat << __HEADER_EOF
>         description = "Configuration to load ATF before U-Boot";
> 
>         images {
> -               uboot at 1 {
> +               uboot-1 {
>                         description = "U-Boot (64-bit)";
>                         os = "u-boot";
>                         data = /incbin/("$BL33"); @@ -68,7 +68,7 @@ cnt=1  for dtname in $*
> do
>         cat << __FDT_IMAGE_EOF
> -               fdt@$cnt {
> +               fdt-$cnt {
>                         description = "$(basename $dtname .dtb)";
>                         data = /incbin/("$dtname");
>                         type = "flat_dt"; @@ -79,7 +79,7 @@ cnt=$((cnt+1))  done
> 
>  cat << __HEADER_EOF
> -               atf at 1 {
> +               atf-1 {
>                         description = "ARM Trusted Firmware";
>                         os = "arm-trusted-firmware";
>                         data = /incbin/("$BL31"); @@ -93,7 +93,7 @@ __HEADER_EOF
> 
>  if [ -f $BL32 ]; then
>  cat << __HEADER_EOF
> -               tee at 1 {
> +               tee-1 {
>                         description = "TEE firmware";
>                         data = /incbin/("$BL32");
>                         type = "firmware"; @@ -108,7 +108,7 @@ fi  cat <<
> __CONF_HEADER_EOF
>         };
>         configurations {
> -               default = "config at 1";
> +               default = "config-1";
> 
>  __CONF_HEADER_EOF
> 
> @@ -117,20 +117,20 @@ for dtname in $*
>  do
>  if [ -f $BL32 ]; then
>  cat << __CONF_SECTION_EOF
> -               config@$cnt {
> +               config-$cnt {
>                         description = "$(basename $dtname .dtb)";
> -                       firmware = "uboot at 1";
> -                       loadables = "atf at 1", "tee at 1";
> +                       firmware = "uboot-1";
> +                       loadables = "atf-1", "tee-1";
>                         fdt = "fdt@$cnt";
>                 };
>  __CONF_SECTION_EOF
>  else
>  cat << __CONF_SECTION1_EOF
> -               config@$cnt {
> +               config-$cnt {
>                         description = "$(basename $dtname .dtb)";
> -                       firmware = "uboot at 1";
> -                       loadables = "atf at 1";
> -                       fdt = "fdt@$cnt";
> +                       firmware = "uboot-1";
> +                       loadables = "atf-1";
> +                       fdt = "fdt-$cnt";
>                 };
>  __CONF_SECTION1_EOF
>  fi
> --
> 2.17.1

-- andrey

Link: [1] https://github.com/Freescale/meta-freescale/blob/master/recipes-bsp/imx-mkimage/files/0001-mkimage_fit_atf-fix-fit-generator-node-naming.patch


More information about the U-Boot mailing list