Hi Simon, > Hi Lukasz, > > On 16 September 2016 at 22:57, Lukasz Majewski <l.majew...@majess.pl> > wrote: > > This script looks for env_common.o object file and extracts from it > > default u-boot environment, which is afterwards printed on standard > > output. > > > > Usage example: > > get_default_envs.sh > u-boot-env-default.txt > > > > The generated text file can be used as input for mkenvimage. > > > > Signed-off-by: Lukasz Majewski <l.majew...@majess.pl> > > > > --- > > Changes for v2: > > - Sort uniquely entries > > - Exclude env_common.o generated for SPL > > --- > > scripts/get_default_envs.sh | 34 ++++++++++++++++++++++++++++++++++ > > 1 file changed, 34 insertions(+) > > create mode 100755 scripts/get_default_envs.sh > > Reviewed-by: Simon Glass <s...@chromium.org> > > But why is this needed?
Some boards for production u-boot have all the envs hardcoded in their ./include/configs/<board>.h file. Also, they support envs stored on persistent memory - like eMMC. During flashing both u-boot and envs are stored on the target memory. Such script allows having the same data in both places. I do know that I could also use external file, which I could include to u-boot during compilation and compile the boot.scr file with mkimage. Or maybe there is any other way? Best regards, Ćukasz Majewski > > > > > diff --git a/scripts/get_default_envs.sh > > b/scripts/get_default_envs.sh new file mode 100755 > > index 0000000..7955db6 > > --- /dev/null > > +++ b/scripts/get_default_envs.sh > > @@ -0,0 +1,34 @@ > > +#! /bin/bash > > +# > > +# Copyright (C) 2016, Lukasz Majewski <l.majew...@majess.pl> > > +# > > +# SPDX-License-Identifier: GPL-2.0+ > > +# > > + > > +# This file extracts default envs from built u-boot > > +# usage: get_default_envs.sh > u-boot-env-default.txt > > +set -ue > > + > > +ENV_OBJ_FILE="env_common.o" > > +ENV_OBJ_FILE_COPY="copy_${ENV_OBJ_FILE}" > > + > > +echoerr() { echo "$@" 1>&2; } > > + > > +path=$(readlink -f $0) > > +env_obj_file_path=$(find ${path%/scripts*} -not -path "*/spl/*" \ > > + -name "${ENV_OBJ_FILE}") > > +[ -z "${env_obj_file_path}" ] && \ > > + { echoerr "File '${ENV_OBJ_FILE}' not found!"; exit 1; } > > + > > +cp ${env_obj_file_path} ${ENV_OBJ_FILE_COPY} > > + > > +# NOTE: objcopy saves its output to file passed in > > +# (copy_env_common.o in this case) > > +objcopy -O binary -j ".rodata.default_environment" > > ${ENV_OBJ_FILE_COPY} + > > +# Replace default '\0' with '\n' and sort entries > > +tr '\0' '\n' < ${ENV_OBJ_FILE_COPY} | sort -u > > + > > +rm ${ENV_OBJ_FILE_COPY} > > + > > +exit 0 > > This isn't needed. > > > -- > > 2.1.4 > > > > Regards, > Simon
pgp0LLKcuapCF.pgp
Description: OpenPGP digital signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot