diff options
author | Tom Hochstein <tom.hochstein@nxp.com> | 2024-09-11 09:46:22 -0700 |
---|---|---|
committer | Otavio Salvador <otavio@ossystems.com.br> | 2024-09-14 21:23:00 -0300 |
commit | c3de76272c3db540d1c4e45c3bc908673d81f07e (patch) | |
tree | 2feea6e9c70179773f6df60f714b932756e61240 | |
parent | a154db932b97080cd36abd96c53a407a0624b342 (diff) | |
download | meta-freescale-uuu.tar.gz |
boot: Fix UUU tagging, extend to fslcuuu
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.bbclass | 2 | ||||
-rw-r--r-- | classes/uuu_bootloader_tag.bbclass | 24 | ||||
-rw-r--r-- | conf/machine/include/imx-base.inc | 4 | ||||
-rw-r--r-- | recipes-bsp/imx-mkimage/imx-boot_1.0.bb | 4 | ||||
-rw-r--r-- | recipes-bsp/u-boot/u-boot-fslc_2024.07.bb | 5 | ||||
-rw-r--r-- | recipes-bsp/u-boot/u-boot-imx_2024.04.bb | 13 | ||||
-rw-r--r-- | wic/imx-imx-boot-bootpart.wks.in | 2 | ||||
-rw-r--r-- | wic/imx-imx-boot.wks.in | 2 | ||||
-rw-r--r-- | wic/imx-uboot-bootpart.wks.in | 2 | ||||
-rw-r--r-- | wic/imx-uboot-spl-bootpart.wks.in | 2 | ||||
-rw-r--r-- | wic/imx-uboot-spl.wks.in | 2 | ||||
-rw-r--r-- | wic/imx-uboot.wks | 2 |
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 | |||
8 | UUU_BOOTLOADER = "${UBOOT_BINARY}" | ||
9 | UUU_BOOTLOADER:mx8-generic-bsp = "${@d.getVar('UBOOT_PROVIDES_BOOT_CONTAINER') == '0' and 'imx-boot' or 'flash.bin'}" | ||
10 | UUU_BOOTLOADER:mx9-generic-bsp = "${@d.getVar('UBOOT_PROVIDES_BOOT_CONTAINER') == '0' and 'imx-boot' or 'flash.bin'}" | ||
11 | |||
4 | do_deploy:append() { | 12 | do_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 | ||
656 | SOC_DEFAULT_WKS_FILE ?= "imx-uboot-bootpart.wks.in" | 656 | SOC_DEFAULT_WKS_FILE ?= "imx-uboot-bootpart.wks.in" |
657 | SOC_DEFAULT_WKS_FILE:mx8-generic-bsp ?= "imx-imx-boot-bootpart.wks.in" | ||
658 | SOC_DEFAULT_WKS_FILE:mxs-generic-bsp ?= "imx-uboot-mxs-bootpart.wks.in" | 657 | SOC_DEFAULT_WKS_FILE:mxs-generic-bsp ?= "imx-uboot-mxs-bootpart.wks.in" |
658 | SOC_DEFAULT_WKS_FILE:mx8-generic-bsp ?= "imx-imx-boot-bootpart.wks.in" | ||
659 | SOC_DEFAULT_WKS_FILE:mx9-generic-bsp ?= "imx-imx-boot-bootpart.wks.in" | 659 | SOC_DEFAULT_WKS_FILE:mx9-generic-bsp ?= "imx-imx-boot-bootpart.wks.in" |
660 | 660 | ||
661 | WKS_FILE ?= "${SOC_DEFAULT_WKS_FILE}" | 661 | WKS_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 06832fc4..fb249919 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 | ||
23 | inherit deploy uuu_bootloader_tag | 23 | inherit deploy uuu_bootloader_tag |
24 | 24 | ||
25 | UUU_BOOTLOADER = "imx-boot" | 25 | UUU_BOOTLOADER = "imx-boot" |
26 | UUU_BOOTLOADER_TAGGED = "imx-boot-tagged" | ||
27 | UUU_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 |
30 | CFLAGS = "-O2 -Wall -std=c99 -I ${STAGING_INCDIR_NATIVE} -L ${STAGING_LIBDIR_NATIVE}" | 28 | CFLAGS = "-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 \ | |||
6 | was submitted for revision and it takes some time to become part of a stable \ | 6 | was submitted for revision and it takes some time to become part of a stable \ |
7 | version, or because it is not applicable for upstreaming." | 7 | version, or because it is not applicable for upstreaming." |
8 | 8 | ||
9 | inherit ${@oe.utils.ifelse(d.getVar('UBOOT_PROVIDES_BOOT_CONTAINER') == '1', 'imx-boot-container', '')} | ||
10 | |||
11 | DEPENDS += "bc-native dtc-native python3-setuptools-native gnutls-native" | 9 | DEPENDS += "bc-native dtc-native python3-setuptools-native gnutls-native" |
12 | 10 | ||
13 | PROVIDES += "u-boot u-boot-mfgtool" | 11 | PROVIDES += "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 | ||
22 | inherit ${@oe.utils.ifelse(d.getVar('UBOOT_PROVIDES_BOOT_CONTAINER') == '1', 'imx-boot-container', '')} | ||
23 | inherit uuu_bootloader_tag | ||
24 | |||
24 | PACKAGE_ARCH = "${MACHINE_ARCH}" | 25 | PACKAGE_ARCH = "${MACHINE_ARCH}" |
25 | COMPATIBLE_MACHINE = "(imx-generic-bsp)" | 26 | COMPATIBLE_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..aff04279 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 | ||
10 | inherit uuu_bootloader_tag | 10 | inherit uuu_bootloader_tag |
11 | 11 | ||
12 | UUU_BOOTLOADER = "" | 12 | # The UUU tag goes on the boot partition 8+, the boot partition image is imx-boot, and UUU-tagging |
13 | UUU_BOOTLOADER:mx6-generic-bsp = "${UBOOT_BINARY}" | 13 | # is disabled. |
14 | UUU_BOOTLOADER:mx7-generic-bsp = "${UBOOT_BINARY}" | 14 | UUU_BOOTLOADER:mx8-generic-bsp = "" |
15 | UUU_BOOTLOADER_TAGGED = "" | 15 | UUU_BOOTLOADER:mx9-generic-bsp = "" |
16 | UUU_BOOTLOADER_TAGGED:mx6-generic-bsp = "u-boot-tagged.${UBOOT_SUFFIX}" | ||
17 | UUU_BOOTLOADER_TAGGED:mx7-generic-bsp = "u-boot-tagged.${UBOOT_SUFFIX}" | ||
18 | UUU_BOOTLOADER_UNTAGGED = "" | ||
19 | UUU_BOOTLOADER_UNTAGGED:mx6-generic-bsp = "u-boot-untagged.${UBOOT_SUFFIX}" | ||
20 | UUU_BOOTLOADER_UNTAGGED:mx7-generic-bsp = "u-boot-untagged.${UBOOT_SUFFIX}" | ||
21 | 16 | ||
22 | do_deploy:append:mx8m-generic-bsp() { | 17 | do_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 | # |
16 | part u-boot --source rawcopy --sourceparams="file=imx-boot" --ondisk mmcblk --no-table --align ${IMX_BOOT_SEEK} | 16 | part u-boot --source rawcopy --sourceparams="file=imx-boot.tagged" --ondisk mmcblk --no-table --align ${IMX_BOOT_SEEK} |
17 | part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 8192 --size 64 | 17 | part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 8192 --size 64 |
18 | part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 8192 | 18 | part / --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 | # |
16 | part u-boot --source rawcopy --sourceparams="file=imx-boot" --ondisk mmcblk --no-table --align ${IMX_BOOT_SEEK} | 16 | part u-boot --source rawcopy --sourceparams="file=imx-boot.tagged" --ondisk mmcblk --no-table --align ${IMX_BOOT_SEEK} |
17 | part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 8192 | 17 | part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 8192 |
18 | 18 | ||
19 | bootloader --ptable msdos | 19 | bootloader --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 | # |
15 | part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}" --ondisk mmcblk --no-table --align 1 | 15 | part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}.tagged" --ondisk mmcblk --no-table --align 1 |
16 | part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 4096 --size 16 | 16 | part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 4096 --size 16 |
17 | part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096 | 17 | part / --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 | # |
15 | part SPL --source rawcopy --sourceparams="file=SPL" --ondisk mmcblk --no-table --align 1 | 15 | part SPL --source rawcopy --sourceparams="file=SPL" --ondisk mmcblk --no-table --align 1 |
16 | part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}" --ondisk mmcblk --no-table --align 69 | 16 | part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}.tagged" --ondisk mmcblk --no-table --align 69 |
17 | part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 4096 --size 16 | 17 | part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 4096 --size 16 |
18 | part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096 | 18 | part / --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 | # |
15 | part SPL --source rawcopy --sourceparams="file=SPL" --ondisk mmcblk --no-table --align 1 | 15 | part SPL --source rawcopy --sourceparams="file=SPL" --ondisk mmcblk --no-table --align 1 |
16 | part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}" --ondisk mmcblk --no-table --align 69 | 16 | part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}.tagged" --ondisk mmcblk --no-table --align 69 |
17 | part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096 | 17 | part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096 |
18 | 18 | ||
19 | bootloader --ptable msdos | 19 | bootloader --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 | # |
15 | part u-boot --source rawcopy --sourceparams="file=u-boot.imx" --ondisk mmcblk --no-table --align 1 | 15 | part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}.tagged" --ondisk mmcblk --no-table --align 1 |
16 | part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096 | 16 | part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096 |
17 | 17 | ||
18 | bootloader --ptable msdos | 18 | bootloader --ptable msdos |