On 27/04/2018 17:07, Marek Vasut wrote: > On 04/27/2018 04:51 PM, Lukasz Majewski wrote: >> This commit provides the ability to generate u-boot environment(s) as >> images, which afterwards can be used to produce image (with wic) for >> flashing (eMMC or SPI-NOR). >> >> This change removes the need to run "env default" during production phase, >> as proper environment (including redundant one) is already stored on >> persistent memory (the CRC is also correct). >> >> Signed-off-by: Lukasz Majewski <lu...@denx.de> > > If your default env is correct, why do you need this ? I can see some > use with non-default env, but then that can be wrapped into a separate > recipe. >
A use case is when the environment must be changed from user space. fw_setenv will report the CRC error and it needs the default environment to add changes. The default environment is linked together to fw_setenv, but this prohibites to use fw_setenv for multiple boards and must be explicitely built for that machine and with the same sources as u-boot (at least, they must share the same CONFIG_EXTRA_ENV). If the default environment is extracted, we could have a general (distro ?) fw_setenv. >> --- >> This patch depends on "u-boot: Upgrade to 2018.03 release" >> https://patchwork.openembedded.org/patch/149998/ >> --- >> meta/recipes-bsp/u-boot/u-boot.inc | 35 +++++++++++++++++++++++++++++++++++ >> 1 file changed, 35 insertions(+) >> >> diff --git a/meta/recipes-bsp/u-boot/u-boot.inc >> b/meta/recipes-bsp/u-boot/u-boot.inc >> index c2bcf99840..2796e503cf 100644 >> --- a/meta/recipes-bsp/u-boot/u-boot.inc >> +++ b/meta/recipes-bsp/u-boot/u-boot.inc >> @@ -305,3 +305,38 @@ do_deploy () { >> } >> >> addtask deploy before do_build after do_compile >> + >> +# Create new rules to extract default envs >> +UBOOT_ENVS_DEFAULT ?= "uboot-envs-default" >> +DEFAULT_ENVS ?= "u-boot-env-default.txt" >> +DEFAULT_ENVS_SIZE ?= "65536" >> + >> +# Generate default environment >> +do_gen_default_envs[doc] = "Generate image with default U-Boot >> environment(s)" >> +do_gen_default_envs () { >> + ${B}/source/scripts/get_default_envs.sh ${B} > ${B}/${DEFAULT_ENVS} >> + >> + # Generate env image >> + ${B}/tools/mkenvimage -s ${DEFAULT_ENVS_SIZE} -o >> ${B}/${UBOOT_ENVS_DEFAULT} ${B}/${DEFAULT_ENVS} > > Does this actually work during cross build , when mkenvimage > architecture is different than host architecture ? > >> + # Generate redundant env image >> + ${B}/tools/mkenvimage -r -s ${DEFAULT_ENVS_SIZE} -o >> ${B}/${UBOOT_ENVS_DEFAULT}_r ${B}/${DEFAULT_ENVS} > > Is redundant env always needed on all systems ? > >> + rm ${B}/${DEFAULT_ENVS} >> +} >> + >> +addtask gen_default_envs before do_deploy_default_envs after do_compile >> + >> +# Deploy default environment >> +do_deploy_default_envs[doc] = "Copy images with default U-Boot environment >> to deployment directory" >> +do_deploy_default_envs () { >> + install -d ${DEPLOYDIR} >> + >> + install ${B}/${UBOOT_ENVS_DEFAULT} ${DEPLOYDIR}/${UBOOT_ENVS_DEFAULT} >> + install ${B}/${UBOOT_ENVS_DEFAULT}_r >> ${DEPLOYDIR}/${UBOOT_ENVS_DEFAULT}_r > > Does this work with multiple machines or will it overwrite the deployed > image ? > > >> + rm ${B}/${UBOOT_ENVS_DEFAULT} >> + rm ${B}/${UBOOT_ENVS_DEFAULT}_r >> +} >> + >> +addtask deploy_default_envs before do_deploy after do_gen_default_envs >> > > Regards, Stefano -- ===================================================================== DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de ===================================================================== -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core