Thanks Pierre-loup for the patch. This is going to be very useful. Reviewed-by: Martin Schwan <[email protected]>
Regards, Martin On Fri, 2025-11-21 at 09:49 +0100, Pierre-loup GOSSE via lists.openembedded.org wrote: > From: Pierre-Loup GOSSE <[email protected]> > > Build the U-Boot initial environment binary image if > UBOOT_INITIAL_ENV_BINARY is set to "1". The environment partition > size > (in bytes, hexadecimal or decimal) must be defined using > UBOOT_INITIAL_ENV_BINARY_SIZE. > > If U-Boot environment redundancy is enabled, > UBOOT_INITIAL_ENV_BINARY_REDUND must be set to "1". > > The resulting binary can be flashed using WIC at the environment > offset, > overriding any existing environment if present, for example: > > part --source rawcopy --sourceparams="file=u-boot-initial-env- > sd.bin" --ondisk sda --no-table --offset 4096 > > Signed-off-by: Pierre-Loup GOSSE <[email protected]> > --- > Note: Once merged, a patch with the new variables will be submitted > to the > documentation mailing list. > > changes in v2: > - fix uboot_deploy_config (builddir was missing) > > no changes in v3 > --- > meta/classes-recipe/uboot-config.bbclass | 11 +++++++++ > meta/recipes-bsp/u-boot/u-boot.inc | 30 > ++++++++++++++++++++++++ > 2 files changed, 41 insertions(+) > > diff --git a/meta/classes-recipe/uboot-config.bbclass b/meta/classes- > recipe/uboot-config.bbclass > index fd6c045142..81057b5cad 100644 > --- a/meta/classes-recipe/uboot-config.bbclass > +++ b/meta/classes-recipe/uboot-config.bbclass > @@ -71,6 +71,14 @@ UBOOT_ENV_BINARY ?= > "${UBOOT_ENV}.${UBOOT_ENV_SUFFIX}" > UBOOT_ENV_IMAGE ?= "${UBOOT_ENV}-${MACHINE}- > ${UBOOT_VERSION}.${UBOOT_ENV_SUFFIX}" > UBOOT_ENV_SYMLINK ?= "${UBOOT_ENV}-${MACHINE}.${UBOOT_ENV_SUFFIX}" > > +# Enable the build of the U-Boot initial env binary image. The > binary size is > +# required (i.e. the U-Boot partition environment size). Since the > environment > +# layout with multiple copies is different, set > UBOOT_INITIAL_ENV_BINARY_REDUND > +# to "1" if the U-Boot environment redundancy is enabled. > +UBOOT_INITIAL_ENV_BINARY ?= "0" > +UBOOT_INITIAL_ENV_BINARY_SIZE ?= "" > +UBOOT_INITIAL_ENV_BINARY_REDUND ?= "0" > + > # U-Boot EXTLINUX variables. U-Boot searches for > /boot/extlinux/extlinux.conf > # to find EXTLINUX conf file. > UBOOT_EXTLINUX_INSTALL_DIR ?= "/boot/extlinux" > @@ -100,6 +108,9 @@ UBOOT_DTB_BINARY ??= "" > UBOOT_FIT_CHECK_SIGN ?= "uboot-fit_check_sign" > > python () { > + if bb.utils.to_boolean(d.getVar('UBOOT_INITIAL_ENV_BINARY')) and > d.getVar('UBOOT_INITIAL_ENV_BINARY_SIZE') == "": > + bb.fatal("UBOOT_INITIAL_ENV_BINARY requires setting the U- > Boot partition environment size with the > UBOOT_INITIAL_ENV_BINARY_SIZE variable") > + > ubootmachine = d.getVar("UBOOT_MACHINE") > ubootconfigflags = d.getVarFlags('UBOOT_CONFIG') > ubootbinary = d.getVar('UBOOT_BINARY') > diff --git a/meta/recipes-bsp/u-boot/u-boot.inc b/meta/recipes-bsp/u- > boot/u-boot.inc > index 16c9836508..ffa9ef2d59 100644 > --- a/meta/recipes-bsp/u-boot/u-boot.inc > +++ b/meta/recipes-bsp/u-boot/u-boot.inc > @@ -4,6 +4,7 @@ PROVIDES = "virtual/bootloader" > PACKAGE_ARCH = "${MACHINE_ARCH}" > > DEPENDS += "${@bb.utils.contains('UBOOT_ENV_SUFFIX', 'scr', 'u-boot- > mkimage-native', '', d)}" > +DEPENDS += "${@ 'u-boot-mkenvimage-native' if > bb.utils.to_boolean(d.getVar('UBOOT_INITIAL_ENV_BINARY')) else ''}" > > inherit uboot-config uboot-extlinux-config uboot-sign deploy > python3native kernel-arch > > @@ -104,6 +105,10 @@ uboot_compile_config () { > if [ -n "${UBOOT_INITIAL_ENV}" ]; then > oe_runmake -C ${S} O=${B}/${builddir} u-boot-initial-env > cp ${B}/${builddir}/u-boot-initial-env ${B}/${builddir}/u- > boot-initial-env-${type} > + if [ "${UBOOT_INITIAL_ENV_BINARY}" = "1" ] ; then > + uboot_compile_initial_env_binary > + cp ${B}/${builddir}/u-boot-initial-env.bin > ${B}/${builddir}/u-boot-initial-env-${type}.bin > + fi > fi > } > > @@ -123,7 +128,18 @@ uboot_compile () { > # Generate the uboot-initial-env > if [ -n "${UBOOT_INITIAL_ENV}" ]; then > oe_runmake -C ${S} O=${B} u-boot-initial-env > + if [ "${UBOOT_INITIAL_ENV_BINARY}" = "1" ] ; then > + uboot_compile_initial_env_binary > + fi > + fi > +} > + > +uboot_compile_initial_env_binary() { > + redund="" > + if [ "${UBOOT_INITIAL_ENV_BINARY_REDUND}" = "1" ] ; then > + redund="-r" > fi > + uboot-mkenvimage -s ${UBOOT_INITIAL_ENV_BINARY_SIZE} ${redund} - > o ${B}/${builddir}/u-boot-initial-env.bin ${B}/${builddir}/u-boot- > initial-env > } > > do_install () { > @@ -388,9 +404,16 @@ uboot_deploy_config () { > # Deploy the uboot-initial-env > if [ -n "${UBOOT_INITIAL_ENV}" ]; then > install -D -m 644 ${B}/${builddir}/u-boot-initial-env- > ${type} ${DEPLOYDIR}/${UBOOT_INITIAL_ENV}-${MACHINE}-${type}- > ${UBOOT_VERSION} > + if [ "${UBOOT_INITIAL_ENV_BINARY}" = "1" ]; then > + install -D -m 644 ${B}/${builddir}/u-boot-initial-env- > ${type}.bin ${DEPLOYDIR}/${UBOOT_INITIAL_ENV}-${MACHINE}-${type}- > ${UBOOT_VERSION}.bin > + fi > cd ${DEPLOYDIR} > ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}- > ${UBOOT_VERSION} ${UBOOT_INITIAL_ENV}-${MACHINE}-${type} > ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}- > ${UBOOT_VERSION} ${UBOOT_INITIAL_ENV}-${type} > + if [ "${UBOOT_INITIAL_ENV_BINARY}" = "1" ]; then > + ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}- > ${UBOOT_VERSION}.bin ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}.bin > + ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${type}- > ${UBOOT_VERSION}.bin ${UBOOT_INITIAL_ENV}-${type}.bin > + fi > fi > } > > @@ -405,9 +428,16 @@ uboot_deploy () { > # Deploy the uboot-initial-env > if [ -n "${UBOOT_INITIAL_ENV}" ]; then > install -D -m 644 ${B}/u-boot-initial-env > ${DEPLOYDIR}/${UBOOT_INITIAL_ENV}-${MACHINE}-${UBOOT_VERSION} > + if [ "${UBOOT_INITIAL_ENV_BINARY}" = "1" ]; then > + install -D -m 644 ${B}/u-boot-initial-env.bin > ${DEPLOYDIR}/${UBOOT_INITIAL_ENV}-${MACHINE}-${UBOOT_VERSION}.bin > + fi > cd ${DEPLOYDIR} > ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${UBOOT_VERSION} > ${UBOOT_INITIAL_ENV}-${MACHINE} > ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}-${UBOOT_VERSION} > ${UBOOT_INITIAL_ENV} > + if [ "${UBOOT_INITIAL_ENV_BINARY}" = "1" ]; then > + ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}- > ${UBOOT_VERSION}.bin ${UBOOT_INITIAL_ENV}-${MACHINE}.bin > + ln -sf ${UBOOT_INITIAL_ENV}-${MACHINE}- > ${UBOOT_VERSION}.bin ${UBOOT_INITIAL_ENV}.bin > + fi > fi > } > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#227577): https://lists.openembedded.org/g/openembedded-core/message/227577 Mute This Topic: https://lists.openembedded.org/mt/116405112/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
