All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCHv2] scripts: Add script to extract default environment
@ 2016-09-17  4:57 Lukasz Majewski
  2016-09-27  0:33 ` Simon Glass
  2016-10-08 17:06 ` [U-Boot] [U-Boot, PATCHv2] " Tom Rini
  0 siblings, 2 replies; 6+ messages in thread
From: Lukasz Majewski @ 2016-09-17  4:57 UTC (permalink / raw)
  To: u-boot

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

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
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCHv2] scripts: Add script to extract default environment
  2016-09-17  4:57 [U-Boot] [PATCHv2] scripts: Add script to extract default environment Lukasz Majewski
@ 2016-09-27  0:33 ` Simon Glass
  2016-09-27 13:37   ` Lukasz Majewski
  2016-10-08 17:06 ` [U-Boot] [U-Boot, PATCHv2] " Tom Rini
  1 sibling, 1 reply; 6+ messages in thread
From: Simon Glass @ 2016-09-27  0:33 UTC (permalink / raw)
  To: u-boot

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCHv2] scripts: Add script to extract default environment
  2016-09-27  0:33 ` Simon Glass
@ 2016-09-27 13:37   ` Lukasz Majewski
  2016-09-28 15:46     ` Simon Glass
  0 siblings, 1 reply; 6+ messages in thread
From: Lukasz Majewski @ 2016-09-27 13:37 UTC (permalink / raw)
  To: u-boot

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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160927/d47c2111/attachment.sig>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCHv2] scripts: Add script to extract default environment
  2016-09-27 13:37   ` Lukasz Majewski
@ 2016-09-28 15:46     ` Simon Glass
  2016-09-28 20:33       ` Lukasz Majewski
  0 siblings, 1 reply; 6+ messages in thread
From: Simon Glass @ 2016-09-28 15:46 UTC (permalink / raw)
  To: u-boot

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

[...]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCHv2] scripts: Add script to extract default environment
  2016-09-28 15:46     ` Simon Glass
@ 2016-09-28 20:33       ` Lukasz Majewski
  0 siblings, 0 replies; 6+ messages in thread
From: Lukasz Majewski @ 2016-09-28 20:33 UTC (permalink / raw)
  To: u-boot

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
> 
> [...]

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160928/b321f61f/attachment.sig>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [U-Boot, PATCHv2] scripts: Add script to extract default environment
  2016-09-17  4:57 [U-Boot] [PATCHv2] scripts: Add script to extract default environment Lukasz Majewski
  2016-09-27  0:33 ` Simon Glass
@ 2016-10-08 17:06 ` Tom Rini
  1 sibling, 0 replies; 6+ messages in thread
From: Tom Rini @ 2016-10-08 17:06 UTC (permalink / raw)
  To: u-boot

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!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20161008/acae0638/attachment.sig>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-10-08 17:06 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-17  4:57 [U-Boot] [PATCHv2] scripts: Add script to extract default environment Lukasz Majewski
2016-09-27  0:33 ` Simon Glass
2016-09-27 13:37   ` Lukasz Majewski
2016-09-28 15:46     ` Simon Glass
2016-09-28 20:33       ` Lukasz Majewski
2016-10-08 17:06 ` [U-Boot] [U-Boot, PATCHv2] " Tom Rini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.