Message ID | 1474088259-10095-1-git-send-email-l.majewski@majess.pl |
---|---|
State | Accepted |
Commit | 27229b2a4caf60ef685f8b9d1a3f6304487b18c7 |
Delegated to: | Tom Rini |
Headers | show |
Hi Lukasz, On 16 September 2016 at 22:57, Lukasz Majewski <l.majewski@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.majewski@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 <sjg@chromium.org> But why is this needed? > > 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.majewski@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
Hi Simon, > Hi Lukasz, > > On 16 September 2016 at 22:57, Lukasz Majewski <l.majewski@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.majewski@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 <sjg@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.majewski@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
Hi, On 27 September 2016 at 07:37, Lukasz Majewski <l.majewski@majess.pl> wrote: > Hi Simon, > >> Hi Lukasz, >> >> On 16 September 2016 at 22:57, Lukasz Majewski <l.majewski@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.majewski@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 <sjg@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? Seems OK to me, I was just curious. > > Best regards, > Łukasz Majewski [...]
Hi Simon, > Hi, > > On 27 September 2016 at 07:37, Lukasz Majewski <l.majewski@majess.pl> > wrote: > > Hi Simon, > > > >> Hi Lukasz, > >> > >> On 16 September 2016 at 22:57, Lukasz Majewski > >> <l.majewski@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.majewski@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 <sjg@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? > > Seems OK to me, I was just curious. I was afraid that similar functionality was already provided for e.g. sandbox :-). Thanks for review. Best regards, Łukasz Majewski > > > > > Best regards, > > Łukasz Majewski > > [...]
On Sat, Sep 17, 2016 at 06:57:39AM +0200, Lukasz Majewski 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.majewski@majess.pl> > Reviewed-by: Simon Glass <sjg@chromium.org> Applied to u-boot/master, thanks!
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.majewski@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 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.majewski@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