Skip to content

Commit

Permalink
boot: Fix UUU tagging, extend to fslc
Browse files Browse the repository at this point in the history
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: #1762
Fixes: nxp-imx/mfgtools#416
Co-authored-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
  • Loading branch information
thochstein and otavio committed Sep 16, 2024
1 parent 0e3a84c commit ef8b4c4
Show file tree
Hide file tree
Showing 12 changed files with 33 additions and 31 deletions.
2 changes: 1 addition & 1 deletion classes/imx-boot-container.bbclass
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ do_deploy:append() {
if [ ! -f "${DEPLOYDIR}/imx-boot" ]; then
ln -sf flash.bin-${MACHINE}-${type} flash.bin
ln -sf flash.bin-${MACHINE}-${type} imx-boot

ln -sf flash.bin.tagged imx-boot.tagged
else
bbwarn "Use custom wks.in for $UBOOT_CONFIG = $type"
fi
Expand Down
24 changes: 16 additions & 8 deletions classes/uuu_bootloader_tag.bbclass
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
# Append a tag to the bootloader image used in the SD card image. The tag
# contains the size of the bootloader image so UUU can easily find the end of
# the bootloader in the SD card image.
# Create a tagged boot partition file for the SD card image file. The tag
# contains the size of the boot partition image so UUU can easily find
# the end of it in the SD card image file.
#
# IMPORTANT: The tagged boot partition file should never be used directly with
# UUU, as it can cause UUU to hang.

UUU_BOOTLOADER = "${UBOOT_BINARY}"
UUU_BOOTLOADER:mx8-generic-bsp = "${@d.getVar('UBOOT_PROVIDES_BOOT_CONTAINER') == '0' and 'imx-boot' or 'flash.bin'}"
UUU_BOOTLOADER:mx9-generic-bsp = "${@d.getVar('UBOOT_PROVIDES_BOOT_CONTAINER') == '0' and 'imx-boot' or 'flash.bin'}"

do_deploy:append() {
if [ "${UUU_BOOTLOADER}" != "" ]; then
cp ${DEPLOYDIR}/${UUU_BOOTLOADER} ${DEPLOYDIR}/${UUU_BOOTLOADER_TAGGED}
cp ${DEPLOYDIR}/${UUU_BOOTLOADER} ${DEPLOYDIR}/${UUU_BOOTLOADER_UNTAGGED}
ln -sf ${UUU_BOOTLOADER_TAGGED} ${DEPLOYDIR}/${UUU_BOOTLOADER}
stat -L -cUUUBURNXXOEUZX7+A-XY5601QQWWZ%sEND ${DEPLOYDIR}/${UUU_BOOTLOADER_TAGGED} \
>> ${DEPLOYDIR}/${UUU_BOOTLOADER_TAGGED}
cp ${DEPLOYDIR}/${UUU_BOOTLOADER} \
${DEPLOYDIR}/${UUU_BOOTLOADER}.tagged
stat -L -cUUUBURNXXOEUZX7+A-XY5601QQWWZ%sEND \
${DEPLOYDIR}/${UUU_BOOTLOADER}.tagged \
>> ${DEPLOYDIR}/${UUU_BOOTLOADER}.tagged
fi
}
4 changes: 2 additions & 2 deletions conf/machine/include/imx-base.inc
Original file line number Diff line number Diff line change
Expand Up @@ -653,9 +653,9 @@ WKS_FILE_DEPENDS:append:imx-generic-bsp:mx9-generic-bsp = " \
${@oe.utils.ifelse(d.getVar('UBOOT_PROVIDES_BOOT_CONTAINER') == '0', 'imx-boot', '')} \
"

SOC_DEFAULT_WKS_FILE ?= "imx-uboot-bootpart.wks.in"
SOC_DEFAULT_WKS_FILE:mx8-generic-bsp ?= "imx-imx-boot-bootpart.wks.in"
SOC_DEFAULT_WKS_FILE ?= "imx-uboot-bootpart.wks.in"
SOC_DEFAULT_WKS_FILE:mxs-generic-bsp ?= "imx-uboot-mxs-bootpart.wks.in"
SOC_DEFAULT_WKS_FILE:mx8-generic-bsp ?= "imx-imx-boot-bootpart.wks.in"
SOC_DEFAULT_WKS_FILE:mx9-generic-bsp ?= "imx-imx-boot-bootpart.wks.in"

WKS_FILE ?= "${SOC_DEFAULT_WKS_FILE}"
Expand Down
4 changes: 1 addition & 3 deletions recipes-bsp/imx-mkimage/imx-boot_1.0.bb
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,7 @@ DEPENDS:append:mx93-generic-bsp = " u-boot-mkimage-native dtc-native"

inherit deploy uuu_bootloader_tag

UUU_BOOTLOADER = "imx-boot"
UUU_BOOTLOADER_TAGGED = "imx-boot-tagged"
UUU_BOOTLOADER_UNTAGGED = "imx-boot-untagged"
UUU_BOOTLOADER = "imx-boot"

# Add CFLAGS with native INCDIR & LIBDIR for imx-mkimage build
CFLAGS = "-O2 -Wall -std=c99 -I ${STAGING_INCDIR_NATIVE} -L ${STAGING_LIBDIR_NATIVE}"
Expand Down
5 changes: 3 additions & 2 deletions recipes-bsp/u-boot/u-boot-fslc_2024.07.bb
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ order to provide support for some backported features and fixes, or because it \
was submitted for revision and it takes some time to become part of a stable \
version, or because it is not applicable for upstreaming."

inherit ${@oe.utils.ifelse(d.getVar('UBOOT_PROVIDES_BOOT_CONTAINER') == '1', 'imx-boot-container', '')}

DEPENDS += "bc-native dtc-native python3-setuptools-native gnutls-native"

PROVIDES += "u-boot u-boot-mfgtool"
Expand All @@ -21,5 +19,8 @@ EXTRA_OEMAKE += 'HOSTCC="${BUILD_CC} ${BUILD_CPPFLAGS}" \
HOSTLDFLAGS="${BUILD_LDFLAGS}" \
HOSTSTRIP=true'

inherit ${@oe.utils.ifelse(d.getVar('UBOOT_PROVIDES_BOOT_CONTAINER') == '1', 'imx-boot-container', '')}
inherit uuu_bootloader_tag

PACKAGE_ARCH = "${MACHINE_ARCH}"
COMPATIBLE_MACHINE = "(imx-generic-bsp)"
13 changes: 4 additions & 9 deletions recipes-bsp/u-boot/u-boot-imx_2024.04.bb
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,10 @@ PROVIDES += "u-boot u-boot-mfgtool"

inherit uuu_bootloader_tag

UUU_BOOTLOADER = ""
UUU_BOOTLOADER:mx6-generic-bsp = "${UBOOT_BINARY}"
UUU_BOOTLOADER:mx7-generic-bsp = "${UBOOT_BINARY}"
UUU_BOOTLOADER_TAGGED = ""
UUU_BOOTLOADER_TAGGED:mx6-generic-bsp = "u-boot-tagged.${UBOOT_SUFFIX}"
UUU_BOOTLOADER_TAGGED:mx7-generic-bsp = "u-boot-tagged.${UBOOT_SUFFIX}"
UUU_BOOTLOADER_UNTAGGED = ""
UUU_BOOTLOADER_UNTAGGED:mx6-generic-bsp = "u-boot-untagged.${UBOOT_SUFFIX}"
UUU_BOOTLOADER_UNTAGGED:mx7-generic-bsp = "u-boot-untagged.${UBOOT_SUFFIX}"
# The UUU tag goes on the boot partition. For 8+, the boot partition image
# is imx-boot, so disable UUU-tagging here
UUU_BOOTLOADER:mx8-generic-bsp = ""
UUU_BOOTLOADER:mx9-generic-bsp = ""

do_deploy:append:mx8m-generic-bsp() {
# Deploy u-boot-nodtb.bin and fsl-imx8m*-XX.dtb for mkimage to generate boot binary
Expand Down
2 changes: 1 addition & 1 deletion wic/imx-imx-boot-bootpart.wks.in
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
# 0 | 8MiB 72MiB 72MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
# ${IMX_BOOT_SEEK} 32 or 33kiB, see reference manual
#
part u-boot --source rawcopy --sourceparams="file=imx-boot" --ondisk mmcblk --no-table --align ${IMX_BOOT_SEEK}
part u-boot --source rawcopy --sourceparams="file=imx-boot.tagged" --ondisk mmcblk --no-table --align ${IMX_BOOT_SEEK}
part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 8192 --size 64
part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 8192

Expand Down
2 changes: 1 addition & 1 deletion wic/imx-imx-boot.wks.in
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
# 0 | 8MiB 8MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
# ${IMX_BOOT_SEEK} 32 or 33kiB, see reference manual
#
part u-boot --source rawcopy --sourceparams="file=imx-boot" --ondisk mmcblk --no-table --align ${IMX_BOOT_SEEK}
part u-boot --source rawcopy --sourceparams="file=imx-boot.tagged" --ondisk mmcblk --no-table --align ${IMX_BOOT_SEEK}
part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 8192

bootloader --ptable msdos
2 changes: 1 addition & 1 deletion wic/imx-uboot-bootpart.wks.in
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# | | | |
# 0 1kiB 4MiB 16MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
#
part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}" --ondisk mmcblk --no-table --align 1
part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}.tagged" --ondisk mmcblk --no-table --align 1
part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 4096 --size 16
part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096

Expand Down
2 changes: 1 addition & 1 deletion wic/imx-uboot-spl-bootpart.wks.in
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
# 0 1kiB 69kiB 4MiB 16MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
#
part SPL --source rawcopy --sourceparams="file=SPL" --ondisk mmcblk --no-table --align 1
part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}" --ondisk mmcblk --no-table --align 69
part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}.tagged" --ondisk mmcblk --no-table --align 69
part /boot --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 4096 --size 16
part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096

Expand Down
2 changes: 1 addition & 1 deletion wic/imx-uboot-spl.wks.in
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
# 0 1kiB 69kiB 4MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
#
part SPL --source rawcopy --sourceparams="file=SPL" --ondisk mmcblk --no-table --align 1
part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}" --ondisk mmcblk --no-table --align 69
part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}.tagged" --ondisk mmcblk --no-table --align 69
part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096

bootloader --ptable msdos
2 changes: 1 addition & 1 deletion wic/imx-uboot.wks
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# | | | |
# 0 1kiB 4MiB + rootfs + IMAGE_EXTRA_SPACE (default 10MiB)
#
part u-boot --source rawcopy --sourceparams="file=u-boot.imx" --ondisk mmcblk --no-table --align 1
part u-boot --source rawcopy --sourceparams="file=${UBOOT_BINARY}.tagged" --ondisk mmcblk --no-table --align 1
part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4096

bootloader --ptable msdos

0 comments on commit ef8b4c4

Please sign in to comment.