summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Hochstein <tom.hochstein@nxp.com>2024-09-11 09:46:22 -0700
committerTom Hochstein <tom.hochstein@nxp.com>2024-09-16 04:36:03 -0700
commitef8b4c41cf0abb41ade7371c2abb16ffe708a8c9 (patch)
tree7ce6114ed9d4ad11b74883411c5b667e9cb778f0
parent0e3a84c9d46abfd62143887ada7a58b8127ff747 (diff)
downloadmeta-freescale-ef8b4c41cf0abb41ade7371c2abb16ffe708a8c9.tar.gz
boot: Fix UUU tagging, extend to fslc
Using the UUU-tagged bootloader image directly with UUU can cause UUU to hang. The bootloader image is split on a certain transmit size, and the hang occurs if the tag does not fit with the final bytes of the bootloader image and must be split into a new transmit package. The UUU tag is needed by UUU only in the SD Card image file itself so that UUU can find the end of the boot partition. Rework the design so the default bootloader and the default imx-boot binaries are not tagged. Also, extend the UUU tagging to fslc so it can gain the same benefit. Fixes: https://github.com/Freescale/meta-freescale/pull/1762 Fixes: https://github.com/nxp-imx/mfgtools/issues/416 Co-authored-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
-rw-r--r--classes/imx-boot-container.bbclass2
-rw-r--r--classes/uuu_bootloader_tag.bbclass24
-rw-r--r--conf/machine/include/imx-base.inc4
-rw-r--r--recipes-bsp/imx-mkimage/imx-boot_1.0.bb4
-rw-r--r--recipes-bsp/u-boot/u-boot-fslc_2024.07.bb5
-rw-r--r--recipes-bsp/u-boot/u-boot-imx_2024.04.bb13
-rw-r--r--wic/imx-imx-boot-bootpart.wks.in2
-rw-r--r--wic/imx-imx-boot.wks.in2
-rw-r--r--wic/imx-uboot-bootpart.wks.in2
-rw-r--r--wic/imx-uboot-spl-bootpart.wks.in2
-rw-r--r--wic/imx-uboot-spl.wks.in2
-rw-r--r--wic/imx-uboot.wks2
12 files changed, 33 insertions, 31 deletions
diff --git a/classes/imx-boot-container.bbclass b/classes/imx-boot-container.bbclass
index 8ba32cac..b0d3dc1f 100644
--- a/classes/imx-boot-container.bbclass
+++ b/classes/imx-boot-container.bbclass
@@ -96,7 +96,7 @@ do_deploy:append() {
96 if [ ! -f "${DEPLOYDIR}/imx-boot" ]; then 96 if [ ! -f "${DEPLOYDIR}/imx-boot" ]; then
97 ln -sf flash.bin-${MACHINE}-${type} flash.bin 97 ln -sf flash.bin-${MACHINE}-${type} flash.bin
98 ln -sf flash.bin-${MACHINE}-${type} imx-boot 98 ln -sf flash.bin-${MACHINE}-${type} imx-boot
99 99 ln -sf flash.bin.tagged imx-boot.tagged
100 else 100 else
101 bbwarn "Use custom wks.in for $UBOOT_CONFIG = $type" 101 bbwarn "Use custom wks.in for $UBOOT_CONFIG = $type"
102 fi 102 fi
diff --git a/classes/uuu_bootloader_tag.bbclass b/classes/uuu_bootloader_tag.bbclass
index 87745660..b41d22a9 100644
--- a/classes/uuu_bootloader_tag.bbclass
+++ b/classes/uuu_bootloader_tag.bbclass
@@ -1,12 +1,20 @@
1# Append a tag to the bootloader image used in the SD card image. The tag 1# Create a tagged boot partition file for the SD card image file. The tag
2# contains the size of the bootloader image so UUU can easily find the end of 2# contains the size of the boot partition image so UUU can easily find
3# the bootloader in the SD card image. 3# the end of it in the SD card image file.
4#
5# IMPORTANT: The tagged boot partition file should never be used directly with
6# UUU, as it can cause UUU to hang.
7
8UUU_BOOTLOADER = "${UBOOT_BINARY}"
9UUU_BOOTLOADER:mx8-generic-bsp = "${@d.getVar('UBOOT_PROVIDES_BOOT_CONTAINER') == '0' and 'imx-boot' or 'flash.bin'}"
10UUU_BOOTLOADER:mx9-generic-bsp = "${@d.getVar('UBOOT_PROVIDES_BOOT_CONTAINER') == '0' and 'imx-boot' or 'flash.bin'}"
11
4do_deploy:append() { 12do_deploy:append() {
5 if [ "${UUU_BOOTLOADER}" != "" ]; then 13 if [ "${UUU_BOOTLOADER}" != "" ]; then
6 cp ${DEPLOYDIR}/${UUU_BOOTLOADER} ${DEPLOYDIR}/${UUU_BOOTLOADER_TAGGED} 14 cp ${DEPLOYDIR}/${UUU_BOOTLOADER} \
7 cp ${DEPLOYDIR}/${UUU_BOOTLOADER} ${DEPLOYDIR}/${UUU_BOOTLOADER_UNTAGGED} 15 ${DEPLOYDIR}/${UUU_BOOTLOADER}.tagged
8 ln -sf ${UUU_BOOTLOADER_TAGGED} ${DEPLOYDIR}/${UUU_BOOTLOADER} 16 stat -L -cUUUBURNXXOEUZX7+A-XY5601QQWWZ%sEND \
9 stat -L -cUUUBURNXXOEUZX7+A-XY5601QQWWZ%sEND ${DEPLOYDIR}/${UUU_BOOTLOADER_TAGGED} \ 17 ${DEPLOYDIR}/${UUU_BOOTLOADER}.tagged \
10 >> ${DEPLOYDIR}/${UUU_BOOTLOADER_TAGGED} 18 >> ${DEPLOYDIR}/${UUU_BOOTLOADER}.tagged
11 fi 19 fi
12} 20}
diff --git a/conf/machine/include/imx-base.inc b/conf/machine/include/imx-base.inc
index 43d62756..b127cee4 100644
--- a/conf/machine/include/imx-base.inc
+++ b/conf/machine/include/imx-base.inc
@@ -653,9 +653,9 @@ WKS_FILE_DEPENDS:append:imx-generic-bsp:mx9-generic-bsp = " \
653 ${@oe.utils.ifelse(d.getVar('UBOOT_PROVIDES_BOOT_CONTAINER') == '0', 'imx-boot', '')} \ 653 ${@oe.utils.ifelse(d.getVar('UBOOT_PROVIDES_BOOT_CONTAINER') == '0', 'imx-boot', '')} \
654" 654"
655 655
656SOC_DEFAULT_WKS_FILE ?= "imx-uboot-bootpart.wks.in" 656SOC_DEFAULT_WKS_FILE ?= "imx-uboot-bootpart.wks.in"
657SOC_DEFAULT_WKS_FILE:mx8-generic-bsp ?= "imx-imx-boot-bootpart.wks.in"
658SOC_DEFAULT_WKS_FILE:mxs-generic-bsp ?= "imx-uboot-mxs-bootpart.wks.in" 657SOC_DEFAULT_WKS_FILE:mxs-generic-bsp ?= "imx-uboot-mxs-bootpart.wks.in"
658SOC_DEFAULT_WKS_FILE:mx8-generic-bsp ?= "imx-imx-boot-bootpart.wks.in"
659SOC_DEFAULT_WKS_FILE:mx9-generic-bsp ?= "imx-imx-boot-bootpart.wks.in" 659SOC_DEFAULT_WKS_FILE:mx9-generic-bsp ?= "imx-imx-boot-bootpart.wks.in"
660 660
661WKS_FILE ?= "${SOC_DEFAULT_WKS_FILE}" 661WKS_FILE ?= "${SOC_DEFAULT_WKS_FILE}"
diff --git a/recipes-bsp/imx-mkimage/imx-boot_1.0.bb b/recipes-bsp/imx-mkimage/imx-boot_1.0.bb
index ed6a155f..3c027044 100644
--- a/recipes-bsp/imx-mkimage/imx-boot_1.0.bb
+++ b/recipes-bsp/imx-mkimage/imx-boot_1.0.bb
@@ -22,9 +22,7 @@ DEPENDS:append:mx93-generic-bsp = " u-boot-mkimage-native dtc-native"
22 22
23inherit deploy uuu_bootloader_tag 23inherit deploy uuu_bootloader_tag
24 24
25UUU_BOOTLOADER = "imx-boot" 25UUU_BOOTLOADER = "imx-boot"
26UUU_BOOTLOADER_TAGGED = "imx-boot-tagged"
27UUU_BOOTLOADER_UNTAGGED = "imx-boot-untagged"
28 26
29# Add CFLAGS with native INCDIR & LIBDIR for imx-mkimage build 27# Add CFLAGS with native INCDIR & LIBDIR for imx-mkimage build
30CFLAGS = "-O2 -Wall -std=c99 -I ${STAGING_INCDIR_NATIVE} -L ${STAGING_LIBDIR_NATIVE}" 28CFLAGS = "-O2 -Wall -std=c99 -I ${STAGING_INCDIR_NATIVE} -L ${STAGING_LIBDIR_NATIVE}"
diff --git a/recipes-bsp/u-boot/u-boot-fslc_2024.07.bb b/recipes-bsp/u-boot/u-boot-fslc_2024.07.bb
index eba8876a..4dc69821 100644
--- a/recipes-bsp/u-boot/u-boot-fslc_2024.07.bb
+++ b/recipes-bsp/u-boot/u-boot-fslc_2024.07.bb
@@ -6,8 +6,6 @@ order to provide support for some backported features and fixes, or because it \
6was submitted for revision and it takes some time to become part of a stable \ 6was submitted for revision and it takes some time to become part of a stable \
7version, or because it is not applicable for upstreaming." 7version, or because it is not applicable for upstreaming."
8 8
9inherit ${@oe.utils.ifelse(d.getVar('UBOOT_PROVIDES_BOOT_CONTAINER') == '1', 'imx-boot-container', '')}
10
11DEPENDS += "bc-native dtc-native python3-setuptools-native gnutls-native" 9DEPENDS += "bc-native dtc-native python3-setuptools-native gnutls-native"
12 10
13PROVIDES += "u-boot u-boot-mfgtool" 11PROVIDES += "u-boot u-boot-mfgtool"
@@ -21,5 +19,8 @@ EXTRA_OEMAKE += 'HOSTCC="${BUILD_CC} ${BUILD_CPPFLAGS}" \
21 HOSTLDFLAGS="${BUILD_LDFLAGS}" \ 19 HOSTLDFLAGS="${BUILD_LDFLAGS}" \
22 HOSTSTRIP=true' 20 HOSTSTRIP=true'
23 21
22inherit ${@oe.utils.ifelse(d.getVar('UBOOT_PROVIDES_BOOT_CONTAINER') == '1', 'imx-boot-container', '')}
23inherit uuu_bootloader_tag
24
24PACKAGE_ARCH = "${MACHINE_ARCH}" 25PACKAGE_ARCH = "${MACHINE_ARCH}"
25COMPATIBLE_MACHINE = "(imx-generic-bsp)" 26COMPATIBLE_MACHINE = "(imx-generic-bsp)"
diff --git a/recipes-bsp/u-boot/u-boot-imx_2024.04.bb b/recipes-bsp/u-boot/u-boot-imx_2024.04.bb
index 3d03c834..29d83527 100644
--- a/recipes-bsp/u-boot/u-boot-imx_2024.04.bb
+++ b/recipes-bsp/u-boot/u-boot-imx_2024.04.bb
@@ -9,15 +9,10 @@ PROVIDES += "u-boot u-boot-mfgtool"
9 9
10inherit uuu_bootloader_tag 10inherit uuu_bootloader_tag
11 11
12UUU_BOOTLOADER = "" 12# The UUU tag goes on the boot partition. For 8+, the boot partition image
13UUU_BOOTLOADER:mx6-generic-bsp = "${UBOOT_BINARY}" 13# is imx-boot, so disable UUU-tagging here
14UUU_BOOTLOADER:mx7-generic-bsp = "${UBOOT_BINARY}" 14UUU_BOOTLOADER:mx8-generic-bsp = ""
15UUU_BOOTLOADER_TAGGED = "" 15UUU_BOOTLOADER:mx9-generic-bsp = ""
16UUU_BOOTLOADER_TAGGED:mx6-generic-bsp = "u-boot-tagged.${UBOOT_SUFFIX}"
17UUU_BOOTLOADER_TAGGED:mx7-generic-bsp = "u-boot-tagged.${UBOOT_SUFFIX}"
18UUU_BOOTLOADER_UNTAGGED = ""
19UUU_BOOTLOADER_UNTAGGED:mx6-generic-bsp = "u-boot-untagged.${UBOOT_SUFFIX}"
20UUU_BOOTLOADER_UNTAGGED:mx7-generic-bsp = "u-boot-untagged.${UBOOT_SUFFIX}"
21 16
22do_deploy:append:mx8m-generic-bsp() { 17do_deploy:append:mx8m-generic-bsp() {
23 # Deploy u-boot-nodtb.bin and fsl-imx8m*-XX.dtb for mkimage to generate boot binary 18 # Deploy u-boot-nodtb.bin and fsl-imx8m*-XX.dtb for mkimage to generate boot binary
diff --git a/wic/imx-imx-boot-bootpart.wks.in b/wic/imx-imx-boot-bootpart.wks.in
index b50364d1..20af7a6a 100644
--- a/wic/imx-imx-boot-bootpart.wks.in
+++ b/wic/imx-imx-boot-bootpart.wks.in
@@ -13,7 +13,7 @@
13# 0 | 8MiB 72MiB 72MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB) 13# 0 | 8MiB 72MiB 72MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
14# ${IMX_BOOT_SEEK} 32 or 33kiB, see reference manual 14# ${IMX_BOOT_SEEK} 32 or 33kiB, see reference manual
15# 15#
16part u-boot --source rawcopy --sourceparams="file=imx-boot" --ondisk mmcblk --no-table --align ${IMX_BOOT_SEEK} 16part u-boot --source rawcopy --sourceparams="file=imx-boot.tagged" --ondisk mmcblk --no-table --align ${IMX_BOOT_SEEK}
17part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 8192 --size 64 17part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 8192 --size 64
18part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 8192 18part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 8192
19 19
diff --git a/wic/imx-imx-boot.wks.in b/wic/imx-imx-boot.wks.in
index 8e78b5e3..fdb41180 100644
--- a/wic/imx-imx-boot.wks.in
+++ b/wic/imx-imx-boot.wks.in
@@ -13,7 +13,7 @@
13# 0 | 8MiB 8MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB) 13# 0 | 8MiB 8MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
14# ${IMX_BOOT_SEEK} 32 or 33kiB, see reference manual 14# ${IMX_BOOT_SEEK} 32 or 33kiB, see reference manual
15# 15#
16part u-boot --source rawcopy --sourceparams="file=imx-boot" --ondisk mmcblk --no-table --align ${IMX_BOOT_SEEK} 16part u-boot --source rawcopy --sourceparams="file=imx-boot.tagged" --ondisk mmcblk --no-table --align ${IMX_BOOT_SEEK}
17part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 8192 17part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 8192
18 18
19bootloader --ptable msdos 19bootloader --ptable msdos
diff --git a/wic/imx-uboot-bootpart.wks.in b/wic/imx-uboot-bootpart.wks.in
index 8fe019c0..4959d02d 100644
--- a/wic/imx-uboot-bootpart.wks.in
+++ b/wic/imx-uboot-bootpart.wks.in
@@ -12,7 +12,7 @@
12# | | | | 12# | | | |
13# 0 1kiB 4MiB 16MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB) 13# 0 1kiB 4MiB 16MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
14# 14#
15part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}" --ondisk mmcblk --no-table --align 1 15part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}.tagged" --ondisk mmcblk --no-table --align 1
16part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 4096 --size 16 16part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 4096 --size 16
17part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096 17part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096
18 18
diff --git a/wic/imx-uboot-spl-bootpart.wks.in b/wic/imx-uboot-spl-bootpart.wks.in
index 8062c51e..be0f0fe0 100644
--- a/wic/imx-uboot-spl-bootpart.wks.in
+++ b/wic/imx-uboot-spl-bootpart.wks.in
@@ -13,7 +13,7 @@
13# 0 1kiB 69kiB 4MiB 16MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB) 13# 0 1kiB 69kiB 4MiB 16MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
14# 14#
15part SPL --source rawcopy --sourceparams="file=SPL" --ondisk mmcblk --no-table --align 1 15part SPL --source rawcopy --sourceparams="file=SPL" --ondisk mmcblk --no-table --align 1
16part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}" --ondisk mmcblk --no-table --align 69 16part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}.tagged" --ondisk mmcblk --no-table --align 69
17part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 4096 --size 16 17part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 4096 --size 16
18part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096 18part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096
19 19
diff --git a/wic/imx-uboot-spl.wks.in b/wic/imx-uboot-spl.wks.in
index db2f89dd..c6c9aaa2 100644
--- a/wic/imx-uboot-spl.wks.in
+++ b/wic/imx-uboot-spl.wks.in
@@ -13,7 +13,7 @@
13# 0 1kiB 69kiB 4MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB) 13# 0 1kiB 69kiB 4MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
14# 14#
15part SPL --source rawcopy --sourceparams="file=SPL" --ondisk mmcblk --no-table --align 1 15part SPL --source rawcopy --sourceparams="file=SPL" --ondisk mmcblk --no-table --align 1
16part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}" --ondisk mmcblk --no-table --align 69 16part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}.tagged" --ondisk mmcblk --no-table --align 69
17part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096 17part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096
18 18
19bootloader --ptable msdos 19bootloader --ptable msdos
diff --git a/wic/imx-uboot.wks b/wic/imx-uboot.wks
index 60870c34..cde24798 100644
--- a/wic/imx-uboot.wks
+++ b/wic/imx-uboot.wks
@@ -12,7 +12,7 @@
12# | | | | 12# | | | |
13# 0 1kiB 4MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB) 13# 0 1kiB 4MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
14# 14#
15part u-boot --source rawcopy --sourceparams="file=u-boot.imx" --ondisk mmcblk --no-table --align 1 15part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}.tagged" --ondisk mmcblk --no-table --align 1
16part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096 16part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096
17 17
18bootloader --ptable msdos 18bootloader --ptable msdos