diff options
Diffstat (limited to 'recipes-bsp/imx-mkimage')
5 files changed, 257 insertions, 283 deletions
diff --git a/recipes-bsp/imx-mkimage/files/0001-iMX8M-soc.mak-use-native-mkimage-from-sysroot.patch b/recipes-bsp/imx-mkimage/files/0001-iMX8M-soc.mak-use-native-mkimage-from-sysroot.patch index a879208c..f182a2f1 100644 --- a/recipes-bsp/imx-mkimage/files/0001-iMX8M-soc.mak-use-native-mkimage-from-sysroot.patch +++ b/recipes-bsp/imx-mkimage/files/0001-iMX8M-soc.mak-use-native-mkimage-from-sysroot.patch @@ -1,6 +1,6 @@ -From a4af3747abd88247bf4498ec0cf67a4151e64d41 Mon Sep 17 00:00:00 2001 -From: Andrey Zhizhikin <andrey.z@gmail.com> -Date: Thu, 21 Oct 2021 08:53:38 +0000 +From 3e0f78a4efeac4ea0651ac763099d780447a18b4 Mon Sep 17 00:00:00 2001 +From: Oleksandr Suvorov <oleksandr.suvorov@foundries.io> +Date: Wed, 19 Jul 2023 18:34:32 +0300 Subject: [PATCH] iMX8M: soc.mak: use native mkimage from sysroot mkimage tool is provided as a part of sysroot from Yocto build. Current @@ -13,63 +13,65 @@ build. Use it from the build sysroot, and do not pull the local version of it. -Upstream-Status: Inappropriate [OE-specific] +Reinjected the original patch from Andrey Zhizhikin <andrey.z@gmail.com> -Signed-off-by: Andrey Zhizhikin <andrey.z@gmail.com> +Upstream-Status: Inappropriate [OE-specific] +Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@foundries.io> --- + iMX8M/soc.mak | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) -diff --git a/iMX8M/soc.mak b/iMX8M/soc.mak -index 4bfdc37..03b05f7 100644 ---- a/iMX8M/soc.mak -+++ b/iMX8M/soc.mak -@@ -148,7 +148,7 @@ u-boot.itb: $(dtb) +Index: git/iMX8M/soc.mak +=================================================================== +--- git.orig/iMX8M/soc.mak ++++ git/iMX8M/soc.mak +@@ -160,7 +160,7 @@ u-boot.itb: $(dtb) $(supp_dtbs) ./$(PAD_IMAGE) bl31.bin - ./$(PAD_IMAGE) u-boot-nodtb.bin $(dtb) - DEK_BLOB_LOAD_ADDR=$(DEK_BLOB_LOAD_ADDR) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) ./mkimage_fit_atf.sh $(dtb) > u-boot.its -- ./mkimage_uboot -E -p 0x3000 -f u-boot.its u-boot.itb -+ mkimage -E -p 0x3000 -f u-boot.its u-boot.itb + ./$(PAD_IMAGE) u-boot-nodtb.bin $(dtb) $(supp_dtbs) + BL32=$(TEE) DEK_BLOB_LOAD_ADDR=$(DEK_BLOB_LOAD_ADDR) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) ../$(SOC_DIR)/mkimage_fit_atf.sh $(dtb) $(supp_dtbs) > u-boot.its +- ./mkimage_uboot -E -p $(FIT_EXTERNAL_POSITION) -f u-boot.its u-boot.itb ++ mkimage -E -p $(FIT_EXTERNAL_POSITION) -f u-boot.its u-boot.itb @rm -f u-boot.its $(dtb) dtb_ddr3l = valddr3l.dtb -@@ -160,7 +160,7 @@ u-boot-ddr3l.itb: $(dtb_ddr3l) +@@ -172,7 +172,7 @@ u-boot-ddr3l.itb: $(dtb_ddr3l) $(supp_dt ./$(PAD_IMAGE) bl31.bin - ./$(PAD_IMAGE) u-boot-nodtb.bin $(dtb_ddr3l) - DEK_BLOB_LOAD_ADDR=$(DEK_BLOB_LOAD_ADDR) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) ./mkimage_fit_atf.sh $(dtb_ddr3l) > u-boot-ddr3l.its -- ./mkimage_uboot -E -p 0x3000 -f u-boot-ddr3l.its u-boot-ddr3l.itb -+ mkimage -E -p 0x3000 -f u-boot-ddr3l.its u-boot-ddr3l.itb + ./$(PAD_IMAGE) u-boot-nodtb.bin $(dtb_ddr3l) $(supp_dtbs) + DEK_BLOB_LOAD_ADDR=$(DEK_BLOB_LOAD_ADDR) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) ../$(SOC_DIR)/mkimage_fit_atf.sh $(dtb_ddr3l) $(supp_dtbs) > u-boot-ddr3l.its +- ./mkimage_uboot -E -p $(FIT_EXTERNAL_POSITION) -f u-boot-ddr3l.its u-boot-ddr3l.itb ++ mkimage -E -p $(FIT_EXTERNAL_POSITION) -f u-boot-ddr3l.its u-boot-ddr3l.itb @rm -f u-boot.its $(dtb_ddr3l) dtb_ddr3l_evk = evkddr3l.dtb -@@ -172,7 +172,7 @@ u-boot-ddr3l-evk.itb: $(dtb_ddr3l_evk) +@@ -184,7 +184,7 @@ u-boot-ddr3l-evk.itb: $(dtb_ddr3l_evk) $ ./$(PAD_IMAGE) bl31.bin - ./$(PAD_IMAGE) u-boot-nodtb.bin $(dtb_ddr3l_evk) - DEK_BLOB_LOAD_ADDR=$(DEK_BLOB_LOAD_ADDR) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) ./mkimage_fit_atf.sh $(dtb_ddr3l_evk) > u-boot-ddr3l-evk.its -- ./mkimage_uboot -E -p 0x3000 -f u-boot-ddr3l-evk.its u-boot-ddr3l-evk.itb -+ mkimage -E -p 0x3000 -f u-boot-ddr3l-evk.its u-boot-ddr3l-evk.itb + ./$(PAD_IMAGE) u-boot-nodtb.bin $(dtb_ddr3l_evk) $(supp_dtbs) + DEK_BLOB_LOAD_ADDR=$(DEK_BLOB_LOAD_ADDR) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) ../$(SOC_DIR)/mkimage_fit_atf.sh $(dtb_ddr3l_evk) $(supp_dtbs) > u-boot-ddr3l-evk.its +- ./mkimage_uboot -E -p $(FIT_EXTERNAL_POSITION) -f u-boot-ddr3l-evk.its u-boot-ddr3l-evk.itb ++ mkimage -E -p $(FIT_EXTERNAL_POSITION) -f u-boot-ddr3l-evk.its u-boot-ddr3l-evk.itb @rm -f u-boot.its $(dtb_ddr3l_evk) dtb_ddr4 = valddr4.dtb -@@ -184,7 +184,7 @@ u-boot-ddr4.itb: $(dtb_ddr4) +@@ -196,7 +196,7 @@ u-boot-ddr4.itb: $(dtb_ddr4) $(supp_dtbs ./$(PAD_IMAGE) bl31.bin - ./$(PAD_IMAGE) u-boot-nodtb.bin $(dtb_ddr4) - DEK_BLOB_LOAD_ADDR=$(DEK_BLOB_LOAD_ADDR) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) ./mkimage_fit_atf.sh $(dtb_ddr4) > u-boot-ddr4.its -- ./mkimage_uboot -E -p 0x3000 -f u-boot-ddr4.its u-boot-ddr4.itb -+ mkimage -E -p 0x3000 -f u-boot-ddr4.its u-boot-ddr4.itb + ./$(PAD_IMAGE) u-boot-nodtb.bin $(dtb_ddr4) $(supp_dtbs) + DEK_BLOB_LOAD_ADDR=$(DEK_BLOB_LOAD_ADDR) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) ../$(SOC_DIR)/mkimage_fit_atf.sh $(dtb_ddr4) $(supp_dtbs) > u-boot-ddr4.its +- ./mkimage_uboot -E -p $(FIT_EXTERNAL_POSITION) -f u-boot-ddr4.its u-boot-ddr4.itb ++ mkimage -E -p $(FIT_EXTERNAL_POSITION) -f u-boot-ddr4.its u-boot-ddr4.itb @rm -f u-boot.its $(dtb_ddr4) dtb_ddr4_evk = evkddr4.dtb -@@ -196,7 +196,7 @@ u-boot-ddr4-evk.itb: $(dtb_ddr4_evk) +@@ -208,7 +208,7 @@ u-boot-ddr4-evk.itb: $(dtb_ddr4_evk) $(s ./$(PAD_IMAGE) bl31.bin - ./$(PAD_IMAGE) u-boot-nodtb.bin $(dtb_ddr4_evk) - DEK_BLOB_LOAD_ADDR=$(DEK_BLOB_LOAD_ADDR) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) ./mkimage_fit_atf.sh $(dtb_ddr4_evk) > u-boot-ddr4-evk.its -- ./mkimage_uboot -E -p 0x3000 -f u-boot-ddr4-evk.its u-boot-ddr4-evk.itb -+ mkimage -E -p 0x3000 -f u-boot-ddr4-evk.its u-boot-ddr4-evk.itb + ./$(PAD_IMAGE) u-boot-nodtb.bin $(dtb_ddr4_evk) $(supp_dtbs) + DEK_BLOB_LOAD_ADDR=$(DEK_BLOB_LOAD_ADDR) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) ../$(SOC_DIR)/mkimage_fit_atf.sh $(dtb_ddr4_evk) $(supp_dtbs) > u-boot-ddr4-evk.its +- ./mkimage_uboot -E -p $(FIT_EXTERNAL_POSITION) -f u-boot-ddr4-evk.its u-boot-ddr4-evk.itb ++ mkimage -E -p $(FIT_EXTERNAL_POSITION) -f u-boot-ddr4-evk.its u-boot-ddr4-evk.itb @rm -f u-boot.its $(dtb_ddr4_evk) ifeq ($(HDMI),yes) -@@ -312,7 +312,6 @@ nightly : +@@ -358,7 +358,6 @@ nightly : @$(WGET) -q $(SERVER)/$(DIR)/$(FW_DIR)/fsl-$(PLAT)-evk.dtb -O fsl-$(PLAT)-evk.dtb @$(WGET) -q $(SERVER)/$(DIR)/$(FW_DIR)/signed_hdmi_imx8m.bin -O signed_hdmi_imx8m.bin @$(WGET) -q $(SERVER)/$(DIR)/$(FW_DIR)/signed_dp_imx8m.bin -O signed_dp_imx8m.bin @@ -77,6 +79,3 @@ index 4bfdc37..03b05f7 100644 archive : git ls-files --others --exclude-standard -z | xargs -0 tar rvf $(ARCHIVE_PATH)/$(ARCHIVE_NAME) --- -2.17.1 - diff --git a/recipes-bsp/imx-mkimage/files/0001-mkimage_fit_atf-fix-fit-generator-node-naming.patch b/recipes-bsp/imx-mkimage/files/0001-mkimage_fit_atf-fix-fit-generator-node-naming.patch deleted file mode 100644 index 3c2842af..00000000 --- a/recipes-bsp/imx-mkimage/files/0001-mkimage_fit_atf-fix-fit-generator-node-naming.patch +++ /dev/null @@ -1,166 +0,0 @@ -From 9cf936493388897379f33b511ec869c6fa5409ce Mon Sep 17 00:00:00 2001 -From: Andrey Zhizhikin <andrey.z@gmail.com> -Date: Thu, 22 Apr 2021 12:20:28 +0000 -Subject: [PATCH] mkimage_fit_atf: fix fit generator node naming - -Since upstream commit 79af75f777 ("fit: Don't allow verification of images -with @ nodes") [1], unit addresses on the nodes are prohibited and nodes -that do contain those addresses are ignored during the ITS parsing. This -is done in an effort to cover the CVE-2021-27138, where nodes with unit -addresses can be mis-interpreted by libfdt. - -Correct FIT generator script and replace nodes with unit addresses to -plain node names with "-" instead of "@" to create a unique naming. - -In addition, extend sections which contains "firmware" in their types -with "os" parameter to conform to the latest FIT specification. - -Indicate that load and entry addresses are covered by one 32-bit value -by adding "address-cells" in the root node of the generated ITS. - -Upstream-Status: Inappropriate [script is imx-boot specific] -Link: [1] https://github.com/u-boot/u-boot/commit/79af75f7776fc20b0d7eb6afe1e27c00fdb4b9b4 -Signed-off-by: Andrey Zhizhikin <andrey.z@gmail.com> -Cc: Tom Hochstein <tom.hochstein@nxp.com> ---- - iMX8M/mkimage_fit_atf.sh | 40 ++++++++++++++++++++++------------------ - 1 file changed, 22 insertions(+), 18 deletions(-) - -diff --git a/iMX8M/mkimage_fit_atf.sh b/iMX8M/mkimage_fit_atf.sh -index 95749b1..10903ea 100755 ---- a/iMX8M/mkimage_fit_atf.sh -+++ b/iMX8M/mkimage_fit_atf.sh -@@ -23,7 +23,7 @@ else - fi - - BL32="tee.bin" --LOADABLES="\"atf@1\"" -+LOADABLES="\"atf-1\"" - - if [ ! -f $BL32 ]; then - BL32=/dev/null -@@ -31,7 +31,7 @@ else - echo "Building with TEE support, make sure your bl31 is compiled with spd. If you do not want tee, please delete tee.bin" >&2 - echo "tee.bin size: " >&2 - ls -lct tee.bin | awk '{print $5}' >&2 -- LOADABLES="$LOADABLES, \"tee@1\"" -+ LOADABLES="$LOADABLES, \"tee-1\"" - fi - - BL33="u-boot-nodtb.bin" -@@ -41,7 +41,7 @@ if [ ! -f $DEK_BLOB ]; then - DEK_BLOB=/dev/null - else - echo "Building with encrypted boot support, make sure to replace DEK Blob in final image." >&2 -- LOADABLES="\"dek_blob@1\", $LOADABLES" -+ LOADABLES="\"dek_blob-1\", $LOADABLES" - fi - - if [ ! -f $BL33 ]; then -@@ -64,10 +64,12 @@ cat << __HEADER_EOF - - / { - description = "Configuration to load ATF before U-Boot"; -+ #address-cells = <1>; - - images { -- uboot@1 { -+ uboot-1 { - description = "U-Boot (64-bit)"; -+ os = "u-boot"; - data = /incbin/("$BL33"); - type = "standalone"; - arch = "arm64"; -@@ -80,7 +82,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"; -@@ -91,8 +93,9 @@ cnt=$((cnt+1)) - done - - cat << __HEADER_EOF -- atf@1 { -+ atf-1 { - description = "ARM Trusted Firmware"; -+ os = "arm-trusted-firmware"; - data = /incbin/("$BL31"); - type = "firmware"; - arch = "arm64"; -@@ -104,8 +107,9 @@ __HEADER_EOF - - if [ -f $BL32 ]; then - cat << __HEADER_EOF -- tee@1 { -+ tee-1 { - description = "TEE firmware"; -+ os = "op-tee-firmware"; - data = /incbin/("$BL32"); - type = "firmware"; - arch = "arm64"; -@@ -118,7 +122,7 @@ fi - - if [ -f $DEK_BLOB ]; then - cat << __HEADER_EOF -- dek_blob@1 { -+ dek_blob-1 { - description = "dek_blob"; - data = /incbin/("$DEK_BLOB"); - type = "script"; -@@ -131,7 +135,7 @@ fi - cat << __CONF_HEADER_EOF - }; - configurations { -- default = "config@1"; -+ default = "config-1"; - - __CONF_HEADER_EOF - -@@ -141,31 +145,31 @@ do - if [ -f $BL32 ]; then - if [ $ROLLBACK_INDEX_IN_FIT ]; then - cat << __CONF_SECTION_EOF -- config@$cnt { -+ config-$cnt { - description = "$(basename $dtname .dtb)"; -- firmware = "uboot@1"; -+ firmware = "uboot-1"; - loadables = $LOADABLES; -- fdt = "fdt@$cnt"; -+ fdt = "fdt-$cnt"; - rbindex = "$ROLLBACK_INDEX_IN_FIT"; - }; - __CONF_SECTION_EOF - else - cat << __CONF_SECTION_EOF -- config@$cnt { -+ config-$cnt { - description = "$(basename $dtname .dtb)"; -- firmware = "uboot@1"; -+ firmware = "uboot-1"; - loadables = $LOADABLES; -- fdt = "fdt@$cnt"; -+ fdt = "fdt-$cnt"; - }; - __CONF_SECTION_EOF - fi - else - cat << __CONF_SECTION1_EOF -- config@$cnt { -+ config-$cnt { - description = "$(basename $dtname .dtb)"; -- firmware = "uboot@1"; -+ firmware = "uboot-1"; - loadables = $LOADABLES; -- fdt = "fdt@$cnt"; -+ fdt = "fdt-$cnt"; - }; - __CONF_SECTION1_EOF - fi --- -2.17.1 - diff --git a/recipes-bsp/imx-mkimage/imx-boot_1.0.bb b/recipes-bsp/imx-mkimage/imx-boot_1.0.bb index f8ebb730..7792b27b 100644 --- a/recipes-bsp/imx-mkimage/imx-boot_1.0.bb +++ b/recipes-bsp/imx-mkimage/imx-boot_1.0.bb @@ -3,15 +3,12 @@ require imx-mkimage_git.inc DESCRIPTION = "Generate Boot Loader for i.MX 8 device" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" SECTION = "BSP" -inherit use-imx-security-controller-firmware +inherit use-imx-security-controller-firmware uboot-sign -IMX_EXTRA_FIRMWARE = "firmware-imx-8 imx-sc-firmware imx-seco" -IMX_EXTRA_FIRMWARE:mx8m = "firmware-imx-8m" -IMX_EXTRA_FIRMWARE:mx8x = "imx-sc-firmware imx-seco" DEPENDS += " \ u-boot \ ${IMX_EXTRA_FIRMWARE} \ @@ -20,11 +17,15 @@ DEPENDS += " \ " # xxd is a dependency of fspi_packer.sh DEPENDS += "xxd-native" -DEPENDS:append:mx8m = " u-boot-mkimage-native dtc-native" +DEPENDS:append:mx8m-generic-bsp = " u-boot-mkimage-native dtc-native" BOOT_NAME = "imx-boot" PROVIDES = "${BOOT_NAME}" -inherit deploy +inherit deploy uuu_bootloader_tag + +UUU_BOOTLOADER = "${BOOT_NAME}" +UUU_BOOTLOADER_TAGGED = "${BOOT_NAME}-tagged" +UUU_BOOTLOADER_UNTAGGED = "${BOOT_NAME}-untagged" # Add CFLAGS with native INCDIR & LIBDIR for imx-mkimage build CFLAGS = "-O2 -Wall -std=c99 -I ${STAGING_INCDIR_NATIVE} -L ${STAGING_LIBDIR_NATIVE}" @@ -43,9 +44,6 @@ SC_FIRMWARE_NAME ?= "scfw_tcm.bin" ATF_MACHINE_NAME ?= "bl31-${ATF_PLATFORM}.bin" ATF_MACHINE_NAME:append = "${@bb.utils.contains('MACHINE_FEATURES', 'optee', '-optee', '', d)}" -UBOOT_NAME = "u-boot-${MACHINE}.bin-${UBOOT_CONFIG}" -BOOT_CONFIG_MACHINE = "${BOOT_NAME}-${MACHINE}-${UBOOT_CONFIG}.bin" - TOOLS_NAME ?= "mkimage_imx8" IMX_BOOT_SOC_TARGET ?= "INVALID" @@ -58,18 +56,26 @@ IMXBOOT_TARGETS ?= \ 'flash_multi_cores flash_dcd', d), d)}" BOOT_STAGING = "${S}/${IMX_BOOT_SOC_TARGET}" -BOOT_STAGING:mx8m = "${S}/iMX8M" -BOOT_STAGING:mx8dx = "${S}/iMX8QX" +BOOT_STAGING:mx8m-generic-bsp = "${S}/iMX8M" +BOOT_STAGING:mx8dx-generic-bsp = "${S}/iMX8QX" +BOOT_STAGING:mx91p-generic-bsp = "${S}/iMX91" +BOOT_STAGING:mx93-generic-bsp = "${S}/iMX93" + +SOC_FAMILY = "INVALID" +SOC_FAMILY:mx8-generic-bsp = "mx8" +SOC_FAMILY:mx8m-generic-bsp = "mx8m" +SOC_FAMILY:mx8x-generic-bsp = "mx8x" +SOC_FAMILY:mx8ulp-generic-bsp = "mx8ulp" +SOC_FAMILY:mx91p-generic-bsp = "mx93" +SOC_FAMILY:mx93-generic-bsp = "mx93" -SOC_FAMILY = "INVALID" -SOC_FAMILY:mx8 = "mx8" -SOC_FAMILY:mx8m = "mx8m" -SOC_FAMILY:mx8x = "mx8x" +REV_OPTION ?= "REV=${IMX_SOC_REV_UPPER}" -REV_OPTION ?= "" -REV_OPTION:mx8qxp = \ - "${@bb.utils.contains('MACHINE_FEATURES', 'soc-revb0', '', \ - 'REV=C0', d)}" +do_uboot_assemble_fitimage:prepend:imx-generic-bsp() { + for config in ${UBOOT_MACHINE}; do + mkdir -p ${B}/${config} + done +} compile_mx8m() { bbnote 8MQ/8MM/8MN/8MP boot binary build @@ -77,24 +83,35 @@ compile_mx8m() { bbnote "Copy ddr_firmware: ${ddr_firmware} from ${DEPLOY_DIR_IMAGE} -> ${BOOT_STAGING} " cp ${DEPLOY_DIR_IMAGE}/${ddr_firmware} ${BOOT_STAGING} done + cp ${DEPLOY_DIR_IMAGE}/signed_dp_imx8m.bin ${BOOT_STAGING} cp ${DEPLOY_DIR_IMAGE}/signed_hdmi_imx8m.bin ${BOOT_STAGING} - cp ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} \ + cp ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG_EXTRA} \ ${BOOT_STAGING}/u-boot-spl.bin - cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${UBOOT_DTB_NAME} ${BOOT_STAGING} - cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/u-boot-nodtb.bin-${MACHINE}-${UBOOT_CONFIG} \ + + if [ "x${UBOOT_SIGN_ENABLE}" = "x1" ] ; then + # Use DTB binary patched with signature node + cp ${DEPLOY_DIR_IMAGE}/${UBOOT_DTB_BINARY} ${BOOT_STAGING}/${UBOOT_DTB_NAME_EXTRA} + else + cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${UBOOT_DTB_NAME_EXTRA} ${BOOT_STAGING} + fi + + cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/u-boot-nodtb.bin-${MACHINE}-${UBOOT_CONFIG_EXTRA} \ ${BOOT_STAGING}/u-boot-nodtb.bin - cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin - cp ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${BOOT_STAGING}/u-boot.bin + + cp ${DEPLOY_DIR_IMAGE}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin + + cp ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME_EXTRA} ${BOOT_STAGING}/u-boot.bin + } compile_mx8() { bbnote 8QM boot binary build cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${SC_FIRMWARE_NAME} ${BOOT_STAGING}/scfw_tcm.bin - cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin - cp ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${BOOT_STAGING}/u-boot.bin + cp ${DEPLOY_DIR_IMAGE}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin + cp ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME_EXTRA} ${BOOT_STAGING}/u-boot.bin cp ${DEPLOY_DIR_IMAGE}/${SECO_FIRMWARE_NAME} ${BOOT_STAGING} - if [ -e ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} ] ; then - cp ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} \ + if [ -e ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG_EXTRA} ] ; then + cp ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG_EXTRA} \ ${BOOT_STAGING}/u-boot-spl.bin fi } @@ -103,65 +120,172 @@ compile_mx8x() { bbnote 8QX boot binary build cp ${DEPLOY_DIR_IMAGE}/${SECO_FIRMWARE_NAME} ${BOOT_STAGING} cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${SC_FIRMWARE_NAME} ${BOOT_STAGING}/scfw_tcm.bin - cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin - cp ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${BOOT_STAGING}/u-boot.bin - if [ -e ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} ] ; then - cp ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} \ + cp ${DEPLOY_DIR_IMAGE}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin + cp ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME_EXTRA} ${BOOT_STAGING}/u-boot.bin + if [ -e ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG_EXTRA} ] ; then + cp ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG_EXTRA} \ + ${BOOT_STAGING}/u-boot-spl.bin + fi +} + +compile_mx8ulp() { + bbnote 8ULP boot binary build + cp ${DEPLOY_DIR_IMAGE}/${SECO_FIRMWARE_NAME} ${BOOT_STAGING}/ + cp ${DEPLOY_DIR_IMAGE}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin + cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/upower.bin ${BOOT_STAGING}/upower.bin + cp ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME_EXTRA} ${BOOT_STAGING}/u-boot.bin + if [ -e ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG_EXTRA} ] ; then + cp ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG_EXTRA} \ ${BOOT_STAGING}/u-boot-spl.bin fi } + +compile_mx93() { + bbnote i.MX 93 boot binary build + for ddr_firmware in ${DDR_FIRMWARE_NAME}; do + bbnote "Copy ddr_firmware: ${ddr_firmware} from ${DEPLOY_DIR_IMAGE} -> ${BOOT_STAGING} " + cp ${DEPLOY_DIR_IMAGE}/${ddr_firmware} ${BOOT_STAGING} + done + + cp ${DEPLOY_DIR_IMAGE}/${SECO_FIRMWARE_NAME} ${BOOT_STAGING}/ + cp ${DEPLOY_DIR_IMAGE}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin + cp ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME_EXTRA} ${BOOT_STAGING}/u-boot.bin + if [ -e ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG_EXTRA} ] ; then + cp ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG_EXTRA} \ + ${BOOT_STAGING}/u-boot-spl.bin + fi +} + do_compile() { # mkimage for i.MX8 # Copy TEE binary to SoC target folder to mkimage if ${DEPLOY_OPTEE}; then cp ${DEPLOY_DIR_IMAGE}/tee.bin ${BOOT_STAGING} fi - for target in ${IMXBOOT_TARGETS}; do - compile_${SOC_FAMILY} - if [ "$target" = "flash_linux_m4_no_v2x" ]; then - # Special target build for i.MX 8DXL with V2X off - bbnote "building ${IMX_BOOT_SOC_TARGET} - ${REV_OPTION} V2X=NO ${target}" - make SOC=${IMX_BOOT_SOC_TARGET} ${REV_OPTION} V2X=NO dtbs=${UBOOT_DTB_NAME} flash_linux_m4 + for type in ${UBOOT_CONFIG}; do + if [ "${@d.getVarFlags('UBOOT_DTB_NAME')}" = "None" ]; then + UBOOT_DTB_NAME_FLAGS="${type}:${UBOOT_DTB_NAME}" else - bbnote "building ${IMX_BOOT_SOC_TARGET} - ${REV_OPTION} ${target}" - make SOC=${IMX_BOOT_SOC_TARGET} ${REV_OPTION} dtbs=${UBOOT_DTB_NAME} ${target} - fi - if [ -e "${BOOT_STAGING}/flash.bin" ]; then - cp ${BOOT_STAGING}/flash.bin ${S}/${BOOT_CONFIG_MACHINE}-${target} + UBOOT_DTB_NAME_FLAGS="${@' '.join(flag + ':' + dtb for flag, dtb in (d.getVarFlags('UBOOT_DTB_NAME')).items()) if d.getVarFlags('UBOOT_DTB_NAME') is not None else '' }" fi + + for key_value in ${UBOOT_DTB_NAME_FLAGS}; do + type_key="${key_value%%:*}" + dtb_name="${key_value#*:}" + + if [ "$type_key" = "$type" ] + then + bbnote "UBOOT_CONFIG = $type, UBOOT_DTB_NAME = $dtb_name" + + UBOOT_CONFIG_EXTRA="$type_key" + if [ -e ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${dtb_name}-${type} ] ; then + UBOOT_DTB_NAME_EXTRA="${dtb_name}-${type}" + else + # backward compatibility + UBOOT_DTB_NAME_EXTRA="${dtb_name}" + fi + UBOOT_NAME_EXTRA="u-boot-${MACHINE}.bin-${UBOOT_CONFIG_EXTRA}" + BOOT_CONFIG_MACHINE_EXTRA="${BOOT_NAME}-${MACHINE}-${UBOOT_CONFIG_EXTRA}.bin" + + for target in ${IMXBOOT_TARGETS}; do + compile_${SOC_FAMILY} + if [ "$target" = "flash_linux_m4_no_v2x" ]; then + # Special target build for i.MX 8DXL with V2X off + bbnote "building ${IMX_BOOT_SOC_TARGET} - ${REV_OPTION} V2X=NO ${target}" + make SOC=${IMX_BOOT_SOC_TARGET} ${REV_OPTION} V2X=NO dtbs=${UBOOT_DTB_NAME_EXTRA} flash_linux_m4 + else + bbnote "building ${IMX_BOOT_SOC_TARGET} - ${REV_OPTION} ${target}" + make SOC=${IMX_BOOT_SOC_TARGET} ${REV_OPTION} dtbs=${UBOOT_DTB_NAME_EXTRA} ${target} + fi + if [ -e "${BOOT_STAGING}/flash.bin" ]; then + cp ${BOOT_STAGING}/flash.bin ${S}/${BOOT_CONFIG_MACHINE_EXTRA}-${target} + fi + done + + unset UBOOT_CONFIG_EXTRA + unset UBOOT_DTB_NAME_EXTRA + unset UBOOT_NAME_EXTRA + unset BOOT_CONFIG_MACHINE_EXTRA + fi + + unset type_key + unset dtb_name + done + + unset UBOOT_DTB_NAME_FLAGS done + unset type } do_install () { install -d ${D}/boot - for target in ${IMXBOOT_TARGETS}; do - install -m 0644 ${S}/${BOOT_CONFIG_MACHINE}-${target} ${D}/boot/ + for type in ${UBOOT_CONFIG}; do + + bbnote "UBOOT_CONFIG = $type" + + UBOOT_CONFIG_EXTRA="$type" + BOOT_CONFIG_MACHINE_EXTRA="${BOOT_NAME}-${MACHINE}-${UBOOT_CONFIG_EXTRA}.bin" + + for target in ${IMXBOOT_TARGETS}; do + install -m 0644 ${S}/${BOOT_CONFIG_MACHINE_EXTRA}-${target} ${D}/boot/ + done + + unset UBOOT_CONFIG_EXTRA + unset BOOT_CONFIG_MACHINE_EXTRA done + + unset type } deploy_mx8m() { install -d ${DEPLOYDIR}/${BOOT_TOOLS} - install -m 0644 ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} \ - ${DEPLOYDIR}/${BOOT_TOOLS} for ddr_firmware in ${DDR_FIRMWARE_NAME}; do install -m 0644 ${DEPLOY_DIR_IMAGE}/${ddr_firmware} ${DEPLOYDIR}/${BOOT_TOOLS} done + install -m 0644 ${BOOT_STAGING}/signed_dp_imx8m.bin ${DEPLOYDIR}/${BOOT_TOOLS} install -m 0644 ${BOOT_STAGING}/signed_hdmi_imx8m.bin ${DEPLOYDIR}/${BOOT_TOOLS} install -m 0755 ${BOOT_STAGING}/${TOOLS_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} install -m 0755 ${BOOT_STAGING}/mkimage_fit_atf.sh ${DEPLOYDIR}/${BOOT_TOOLS} } + deploy_mx8() { install -d ${DEPLOYDIR}/${BOOT_TOOLS} install -m 0644 ${BOOT_STAGING}/${SECO_FIRMWARE_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} install -m 0755 ${S}/${TOOLS_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} + if [ -e ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG_EXTRA} ] ; then + install -m 0644 ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG_EXTRA} \ + ${DEPLOYDIR}/${BOOT_TOOLS} + fi +} + +deploy_mx8x() { + install -d ${DEPLOYDIR}/${BOOT_TOOLS} + install -m 0644 ${BOOT_STAGING}/${SECO_FIRMWARE_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} + install -m 0755 ${S}/${TOOLS_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} if [ -e ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} ] ; then install -m 0644 ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} \ ${DEPLOYDIR}/${BOOT_TOOLS} fi } -deploy_mx8x() { + +deploy_mx8ulp() { + install -d ${DEPLOYDIR}/${BOOT_TOOLS} + install -m 0644 ${BOOT_STAGING}/${SECO_FIRMWARE_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} + install -m 0755 ${S}/${TOOLS_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} + if [ -e ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG_EXTRA} ] ; then + install -m 0644 ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} \ + ${DEPLOYDIR}/${BOOT_TOOLS} + fi +} + +deploy_mx93() { install -d ${DEPLOYDIR}/${BOOT_TOOLS} + + for ddr_firmware in ${DDR_FIRMWARE_NAME}; do + install -m 0644 ${DEPLOY_DIR_IMAGE}/${ddr_firmware} ${DEPLOYDIR}/${BOOT_TOOLS} + done + install -m 0644 ${BOOT_STAGING}/${SECO_FIRMWARE_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} install -m 0755 ${S}/${TOOLS_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} if [ -e ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} ] ; then @@ -169,34 +293,55 @@ deploy_mx8x() { ${DEPLOYDIR}/${BOOT_TOOLS} fi } + do_deploy() { deploy_${SOC_FAMILY} - # copy the sc fw, dcd and uboot to deploy path - install -m 0644 ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${DEPLOYDIR}/${BOOT_TOOLS} # copy tee.bin to deploy path if ${DEPLOY_OPTEE}; then install -m 0644 ${DEPLOY_DIR_IMAGE}/tee.bin ${DEPLOYDIR}/${BOOT_TOOLS} fi - # copy makefile (soc.mak) for reference install -m 0644 ${BOOT_STAGING}/soc.mak ${DEPLOYDIR}/${BOOT_TOOLS} - # copy the generated boot image to deploy path - for target in ${IMXBOOT_TARGETS}; do - # Use first "target" as IMAGE_IMXBOOT_TARGET - if [ "$IMAGE_IMXBOOT_TARGET" = "" ]; then - IMAGE_IMXBOOT_TARGET="$target" - echo "Set boot target as $IMAGE_IMXBOOT_TARGET" + + for type in ${UBOOT_CONFIG}; do + UBOOT_CONFIG_EXTRA="$type" + UBOOT_NAME_EXTRA="u-boot-${MACHINE}.bin-${UBOOT_CONFIG_EXTRA}" + BOOT_CONFIG_MACHINE_EXTRA="${BOOT_NAME}-${MACHINE}-${UBOOT_CONFIG_EXTRA}.bin" + + if [ -e ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG_EXTRA} ] ; then + install -m 0644 ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG_EXTRA} \ + ${DEPLOYDIR}/${BOOT_TOOLS} fi - install -m 0644 ${S}/${BOOT_CONFIG_MACHINE}-${target} ${DEPLOYDIR} + # copy the tool mkimage to deploy path and sc fw, dcd and uboot + install -m 0644 ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME_EXTRA} ${DEPLOYDIR}/${BOOT_TOOLS} + + # copy the generated boot image to deploy path + for target in ${IMXBOOT_TARGETS}; do + # Use first "target" as IMAGE_IMXBOOT_TARGET + if [ "$IMAGE_IMXBOOT_TARGET" = "" ]; then + IMAGE_IMXBOOT_TARGET="$target" + echo "Set boot target as $IMAGE_IMXBOOT_TARGET" + fi + install -m 0644 ${S}/${BOOT_CONFIG_MACHINE_EXTRA}-${target} ${DEPLOYDIR} + done + + # The first UBOOT_CONFIG listed will be the ${BOOT_NAME} binary + if [ ! -f "${DEPLOYDIR}/${UUU_BOOTLOADER}" ]; then + ln -sf ${BOOT_CONFIG_MACHINE_EXTRA}-${IMAGE_IMXBOOT_TARGET} ${DEPLOYDIR}/${BOOT_NAME} + else + bbwarn "Use custom wks.in for $UBOOT_CONFIG = $type" + fi + + unset UBOOT_CONFIG_EXTRA + unset UBOOT_NAME_EXTRA + unset BOOT_CONFIG_MACHINE_EXTRA done - cd ${DEPLOYDIR} - ln -sf ${BOOT_CONFIG_MACHINE}-${IMAGE_IMXBOOT_TARGET} ${BOOT_NAME} - cd - + unset type } addtask deploy before do_build after do_compile PACKAGE_ARCH = "${MACHINE_ARCH}" FILES:${PN} = "/boot" -COMPATIBLE_MACHINE = "(mx8)" +COMPATIBLE_MACHINE = "(mx8-generic-bsp|mx9-generic-bsp)" diff --git a/recipes-bsp/imx-mkimage/imx-mkimage_git.bb b/recipes-bsp/imx-mkimage/imx-mkimage_git.bb index f9943342..f95f2a2b 100644 --- a/recipes-bsp/imx-mkimage/imx-mkimage_git.bb +++ b/recipes-bsp/imx-mkimage/imx-mkimage_git.bb @@ -1,27 +1,23 @@ # Copyright (C) 2016 Freescale Semiconductor -# Copyright (C) 2017-2021 NXP +# Copyright (C) 2017-2022 NXP require imx-mkimage_git.inc DESCRIPTION = "i.MX make image" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" SECTION = "BSP" inherit deploy native -CFLAGS = "-O2 -Wall -std=c99 -I ${STAGING_INCDIR} -L ${STAGING_LIBDIR}" +EXTRA_OEMAKE = "SOC=iMX8M mkimage_imx8" -do_compile () { - cd ${S} - oe_runmake clean - oe_runmake bin - oe_runmake -C iMX8M -f soc.mak mkimage_imx8 -} +CFLAGS = "-O2 -Wall -std=c99 -I ${STAGING_INCDIR} -L ${STAGING_LIBDIR}" -do_install () { - cd ${S} +do_install() { install -d ${D}${bindir} install -m 0755 iMX8M/mkimage_imx8 ${D}${bindir}/mkimage_imx8m + install -m 0755 iMX8M/mkimage_fit_atf.sh ${D}${bindir}/mkimage_fit_atf.sh + install -m 0755 iMX8M/print_fit_hab.sh ${D}${bindir}/print_fit_hab.sh install -m 0755 mkimage_imx8 ${D}${bindir}/mkimage_imx8 } diff --git a/recipes-bsp/imx-mkimage/imx-mkimage_git.inc b/recipes-bsp/imx-mkimage/imx-mkimage_git.inc index c51c1e08..fb3df750 100644 --- a/recipes-bsp/imx-mkimage/imx-mkimage_git.inc +++ b/recipes-bsp/imx-mkimage/imx-mkimage_git.inc @@ -1,13 +1,13 @@ -# Copyright 2017-2021 NXP +# Copyright 2017-2022 NXP DEPENDS = "zlib-native openssl-native" -SRCBRANCH = "lf-5.10.52_2.1.0" -SRC_URI = "git://source.codeaurora.org/external/imx/imx-mkimage.git;protocol=https;branch=${SRCBRANCH} \ - file://0001-mkimage_fit_atf-fix-fit-generator-node-naming.patch \ +SRC_URI = "git://github.com/nxp-imx/imx-mkimage.git;protocol=https;branch=${SRCBRANCH} \ file://0001-iMX8M-soc.mak-use-native-mkimage-from-sysroot.patch \ " -SRCREV = "1112c88470f339dc631e2a7117087f416af6d6b5" +SRCBRANCH = "lf-6.6.3_1.0.0" +SRCREV = "cbb99377cc2bb8f7cf213794c030e1c60423ef1f" + S = "${WORKDIR}/git" BOOT_TOOLS = "imx-boot-tools" |