Hi, > On 7/9/19 7:20 AM, Lukasz Majewski wrote: > > This change provides tasks to generate default U-Boot environment > > images from built U-Boot (via. get_default_envs.sh script). > > > > Those images then can be used to generate wic images (with e.g. > > eMMC layout). With such approach the end user doesn't see the "CRC > > environment" error after the first boot. > > > > Moreover, those are built per MACHINE (as u-boot itself is) so then > > could be used in SWUpdate scenarios with single tar'ed archive with > > multiple MACHINE specific *.swu images. > I like this idea. > > > > > > It is also possible to adjust the *_ENVS_* variables in machine > > specific conf file. > Can you give an example on how that is done or what it would look > like?
This code simply needs to have defined: UBOOT_ENVS_SIZE in machine conf if two machines use different medium for storing the envs (e.g. NAND vs SPI-NOR). > > > I have been using this class I created a while back to do just that > > https://github.com/akuster/meta-odroid/blob/master/classes/uboot-boot-scr.bbclass It seems like your class builds the envs from provided values. Just a hint it is now possible with u-boot to "create" at build time envs with data provided from a simple text file. The patch here just extracts default envs from build u-boot. Part of the wic script: part u-boot-env --source rawcopy --sourceparams="file=u-boot-env.img" --ondisk mmcblk --no-table --align 1024 part u-boot-env-r --source rawcopy --sourceparams="file=u-boot-env.img_r" --ondisk mmcblk --no-table --align 1032 > > - armin > > > Test: > > Newest master-next for poky repo - SHA1: > > eb5b0a0b5e53a6e55a09e66489d3f24d0c6232ee MACHINE = > > "beaglebone-yocto" in local.conf bitbake virtual/bootloader > > > > > > As a result following links are available in deploy directory: > > u-boot-env.img{_r}. > > > > Signed-off-by: Lukasz Majewski <[email protected]> > > --- > > meta/recipes-bsp/u-boot/u-boot.inc | 41 > > ++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 > > insertions(+) > > > > diff --git a/meta/recipes-bsp/u-boot/u-boot.inc > > b/meta/recipes-bsp/u-boot/u-boot.inc index 9a754fd09b..e0ccf1ce1f > > 100644 --- a/meta/recipes-bsp/u-boot/u-boot.inc > > +++ b/meta/recipes-bsp/u-boot/u-boot.inc > > @@ -331,3 +331,44 @@ do_deploy () { > > } > > > > addtask deploy before do_build after do_compile > > + > > +# Extract default envs from build U-Boot > > +DEFAULT_UBOOT_ENVS_FILE ?= "u-boot-env" > > +DEFAULT_ENVS ?= "${DEFAULT_UBOOT_ENVS_FILE}.txt" > > +UBOOT_ENVS_DEFAULT ?= > > "${DEFAULT_UBOOT_ENVS_FILE}-${MACHINE}-${PV}-${PR}.img" > > +UBOOT_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 ${UBOOT_ENVS_SIZE} -o > > ${B}/${UBOOT_ENVS_DEFAULT} ${B}/${DEFAULT_ENVS} + > > + # Generate redundant env image > > + ${B}/tools/mkenvimage -r -s ${UBOOT_ENVS_SIZE} -o > > ${B}/${UBOOT_ENVS_DEFAULT}_r ${B}/${DEFAULT_ENVS} + > > + rm ${B}/${DEFAULT_ENVS} > > +} > > + > > +addtask gen_default_envs before do_deploy 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 + > > + cd ${DEPLOYDIR} > > + ln -sf ${UBOOT_ENVS_DEFAULT} ${DEFAULT_UBOOT_ENVS_FILE}.img > > + ln -sf ${UBOOT_ENVS_DEFAULT}_r > > ${DEFAULT_UBOOT_ENVS_FILE}.img_r + > > + rm ${B}/${UBOOT_ENVS_DEFAULT} > > + rm ${B}/${UBOOT_ENVS_DEFAULT}_r > > +} > > + > > +addtask deploy_default_envs before do_deploy after > > do_gen_default_envs > > Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: [email protected]
pgp1nhur_fw8o.pgp
Description: OpenPGP digital signature
-- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
