| Message ID | 20251121084918.875151-1-pierre-loup.gosse@smile.fr |
|---|---|
| State | New |
| Headers | show |
| Series | [v3,1/2] u-boot: make initial environment binary image | expand |
Hi Just a few thoughts on the matter. There are several ways to transfer the default environment to a target device: * Compile the environment in u-boot and run env default -a on the target device, as documented at https://docs.u-boot.org/en/latest/usage/environment.html#text-based-environment . * Install the file in /etc/u-boot-initial-env, which is used by libubootenv as the initial environment on the target device. * Install it as suggested in this patch, e.g., via wic or another flash approach during device manufacturing. It is important to enforce some consistency between all these different approaches. Ideally, all approaches should use the same environment source, which should be the file referenced by CONFIG_ENV_SOURCE_FILE. If this is not the case, when the user executes, for example, env default -a, they will get a different environment than the one initialized by wic for fw_setenv. Will this be mentioned in the documentation, or will it not be taken into account in these patches? Thank you for the patches. Regards, Adrian > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#226653): > https://lists.openembedded.org/g/openembedded-core/message/226653 > Mute This Topic: https://lists.openembedded.org/mt/116405112/4454582 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: > https://lists.openembedded.org/g/openembedded-core/unsub [ > adrian.freihofer@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=-
Hi, Thanks for your remark. I did not plan to mention this in the documentation patch, as I think it is outside the scope of these patches, which only create the binary format of the existing u-boot-initial-env file. Besides, from my comprehension, all these approaches use the same environment source from the default_environment structure declared in the env_default.h file, which enforces consistency. However, this is not prevent users from installing a different default environment from the one compiled in U-Boot. If wanted, I can explicitly mention this matter in my documentation patch. Regards, Pierre-Loup On Mon, Dec 1, 2025 at 6:59 PM <adrian.freihofer@gmail.com> wrote: > Hi > > Just a few thoughts on the matter. There are several ways to transfer > the default environment to a target device: > > * Compile the environment in u-boot and run env default -a on the > target device, as documented at > > https://docs.u-boot.org/en/latest/usage/environment.html#text-based-environment > . > * Install the file in /etc/u-boot-initial-env, which is used by > libubootenv as the initial environment on the target device. > * Install it as suggested in this patch, e.g., via wic or another flash > approach during device manufacturing. > > It is important to enforce some consistency between all these different > approaches. Ideally, all approaches should use the same environment > source, which should be the file referenced by CONFIG_ENV_SOURCE_FILE. > If this is not the case, when the user executes, for example, env > default -a, they will get a different environment than the one > initialized by wic for fw_setenv. > > Will this be mentioned in the documentation, or will it not be taken > into account in these patches? > > Thank you for the patches. > Regards, > Adrian > > > > > > -=-=-=-=-=-=-=-=-=-=-=- > > Links: You receive all messages sent to this group. > > View/Reply Online (#226653): > > https://lists.openembedded.org/g/openembedded-core/message/226653 > > Mute This Topic: https://lists.openembedded.org/mt/116405112/4454582 > > Group Owner: openembedded-core+owner@lists.openembedded.org > > Unsubscribe: > > https://lists.openembedded.org/g/openembedded-core/unsub [ > > adrian.freihofer@gmail.com] > > -=-=-=-=-=-=-=-=-=-=-=- >
Hi Pierre-Loup Thank you for the explanation. I took a closer look at the tests and now think I understand how it works and why it is consistent by default. Regards, Adrian On Thu, 2025-12-11 at 16:36 +0100, Pierre-loup GOSSE wrote: > Hi, > > Thanks for your remark. > > I did not plan to mention this in the documentation patch, as I think > it is outside the scope of these patches, which only create the > binary format of the existing u-boot-initial-env file. > > Besides, from my comprehension, all these approaches use the same > environment source from the default_environment structure declared in > the env_default.h file, which enforces consistency. > > However, this is not prevent users from installing a different > default environment from the one compiled in U-Boot. If wanted, I can > explicitly mention this matter in my documentation patch. > > Regards, > Pierre-Loup > > > > On Mon, Dec 1, 2025 at 6:59 PM <adrian.freihofer@gmail.com> wrote: > > Hi > > > > Just a few thoughts on the matter. There are several ways to > > transfer > > the default environment to a target device: > > > > * Compile the environment in u-boot and run env default -a on the > > target device, as documented at > > https://docs.u-boot.org/en/latest/usage/environment.html#text-based-environment > > . > > * Install the file in /etc/u-boot-initial-env, which is used by > > libubootenv as the initial environment on the target device. > > * Install it as suggested in this patch, e.g., via wic or another > > flash > > approach during device manufacturing. > > > > It is important to enforce some consistency between all these > > different > > approaches. Ideally, all approaches should use the same environment > > source, which should be the file referenced by > > CONFIG_ENV_SOURCE_FILE. > > If this is not the case, when the user executes, for example, env > > default -a, they will get a different environment than the one > > initialized by wic for fw_setenv. > > > > Will this be mentioned in the documentation, or will it not be > > taken > > into account in these patches? > > > > Thank you for the patches. > > Regards, > > Adrian > > > > > > > > > > -=-=-=-=-=-=-=-=-=-=-=- > > > Links: You receive all messages sent to this group. > > > View/Reply Online (#226653): > > > https://lists.openembedded.org/g/openembedded-core/message/226653 > > > Mute This Topic: > > https://lists.openembedded.org/mt/116405112/4454582 > > > Group Owner: openembedded-core+owner@lists.openembedded.org > > > Unsubscribe: > > > https://lists.openembedded.org/g/openembedded-core/unsub [ > > > adrian.freihofer@gmail.com] > > > -=-=-=-=-=-=-=-=-=-=-=-
Thanks Pierre-loup for the patch. This is going to be very useful. Reviewed-by: Martin Schwan <m.schwan@phytec.de> Regards, Martin On Fri, 2025-11-21 at 09:49 +0100, Pierre-loup GOSSE via lists.openembedded.org wrote: > From: Pierre-Loup GOSSE <pierre-loup.gosse@smile.fr> > > 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 <pierre-loup.gosse@smile.fr> > --- > 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 (#226653): > https://lists.openembedded.org/g/openembedded-core/message/226653 > Mute This Topic: https://lists.openembedded.org/mt/116405112/9947111 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: > https://lists.openembedded.org/g/openembedded-core/unsub [ > m.schwan@phytec.de] > -=-=-=-=-=-=-=-=-=-=-=-
On Fri Nov 21, 2025 at 9:49 AM CET, Pierre-loup GOSSE via lists.openembedded.org wrote: > From: Pierre-Loup GOSSE <pierre-loup.gosse@smile.fr> > > 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 <pierre-loup.gosse@smile.fr> > --- > 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 > --- Hi Pierre-loup, After the last comments I took your series for testing, but got the following error during selftest: 2025-12-16 11:06:28,209 - oe-selftest - INFO - uboot.UBootTest.test_uboot_initial_env_binary (subunit.RemotedTestCase) 2025-12-16 11:06:28,210 - oe-selftest - INFO - ... FAIL ... 2025-12-16 11:06:05,623 - oe-selftest - INFO - testtools.testresult.real._StringException: Traceback (most recent call last): File "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/layers/openembedded-core/meta/lib/oeqa/selftest/cases/uboot.py", line 152, in test_uboot_config_initial_env_binary self.assertExists(uboot_initial_env_binary_path) File "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/layers/openembedded-core/meta/lib/oeqa/selftest/case.py", line 251, in assertExists raise self.failureException(msg) AssertionError: '/srv/pokybuild/yocto-worker/oe-selftest-debian/build/build-st-1145752/tmp/work/qemux86_64-poky-linux/u-boot/2025.10/deploy-u-boot/u-boot-initial-env-test.bin' does not exist https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/2838 https://autobuilder.yoctoproject.org/valkyrie/#/builders/48/builds/2732 Can you have a look at this issue? Thanks, Mathieu
On Tue Dec 16, 2025 at 4:20 PM CET, Mathieu Dubois-Briand wrote: > On Fri Nov 21, 2025 at 9:49 AM CET, Pierre-loup GOSSE via lists.openembedded.org wrote: >> From: Pierre-Loup GOSSE <pierre-loup.gosse@smile.fr> >> >> 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 <pierre-loup.gosse@smile.fr> >> --- >> 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 >> --- > > Hi Pierre-loup, > > After the last comments I took your series for testing, but got the > following error during selftest: > > 2025-12-16 11:06:28,209 - oe-selftest - INFO - uboot.UBootTest.test_uboot_initial_env_binary (subunit.RemotedTestCase) > 2025-12-16 11:06:28,210 - oe-selftest - INFO - ... FAIL > ... > 2025-12-16 11:06:05,623 - oe-selftest - INFO - testtools.testresult.real._StringException: Traceback (most recent call last): > File "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/layers/openembedded-core/meta/lib/oeqa/selftest/cases/uboot.py", line 152, in test_uboot_config_initial_env_binary > self.assertExists(uboot_initial_env_binary_path) > File "/srv/pokybuild/yocto-worker/oe-selftest-debian/build/layers/openembedded-core/meta/lib/oeqa/selftest/case.py", line 251, in assertExists > raise self.failureException(msg) > AssertionError: '/srv/pokybuild/yocto-worker/oe-selftest-debian/build/build-st-1145752/tmp/work/qemux86_64-poky-linux/u-boot/2025.10/deploy-u-boot/u-boot-initial-env-test.bin' does not exist > > https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/2838 > https://autobuilder.yoctoproject.org/valkyrie/#/builders/48/builds/2732 > > Can you have a look at this issue? > > Thanks, > Mathieu OK, it looks like the issue is somewhere between my keyboard and my chair. Forget this issue for now...
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 }