From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukasz Majewski Date: Tue, 27 Sep 2016 15:37:24 +0200 Subject: [U-Boot] [PATCHv2] scripts: Add script to extract default environment In-Reply-To: References: <1474088259-10095-1-git-send-email-l.majewski@majess.pl> Message-ID: <20160927153724.1bf81b45@jawa> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Simon, > Hi Lukasz, > > On 16 September 2016 at 22:57, 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 > > > > --- > > 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 > > But why is this needed? Some boards for production u-boot have all the envs hardcoded in their ./include/configs/.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 > > +# > > +# 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 -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 181 bytes Desc: OpenPGP digital signature URL: