Hello Simon,

Am 11.11.2019 um 21:07 schrieb Simon Goldschmidt:
On Mon, Nov 11, 2019 at 7:15 AM Heiko Schocher <h...@denx.de> wrote:

Hello Simon,

Am 10.11.2019 um 15:51 schrieb Simon Goldschmidt:


Heiko Schocher <h...@denx.de <mailto:h...@denx.de>> schrieb am Sa., 9. Nov. 
2019, 05:02:

     Enable the new Kconfig option ENV_SPI_EARLY if you want
     to use Environment in SPI flash before relocation.
     Call env_init() and than you can use env_get_f() for
     accessing Environment variables.

     Signed-off-by: Heiko Schocher <h...@denx.de <mailto:h...@denx.de>>

     ---
     travis build:
     https://travis-ci.org/hsdenx/u-boot-test/builds/609101712

       env/Kconfig |   8 ++++
       env/sf.c    | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++
       2 files changed, 117 insertions(+)

     diff --git a/env/Kconfig b/env/Kconfig
     index bc03816bc8..f2e1e1ba87 100644
     --- a/env/Kconfig
     +++ b/env/Kconfig
     @@ -370,6 +370,14 @@ config ENV_SPI_MODE
                Value of the SPI work mode for environment.
                See include/spi.h for value.

     +config ENV_SPI_EARLY
     +       bool "Access Environment in SPI flashes before relocation"
     +       depends on ENV_IS_IN_SPI_FLASH
     +       help
     +         Enable this if you want to use Environment in SPI flash
     +         before relocation. Call env_init() and than you can use
     +         env_get_f() for accessing Environment variables.
     +
       config ENV_IS_IN_UBI
              bool "Environment in a UBI volume"
              depends on !CHAIN_OF_TRUST
     diff --git a/env/sf.c b/env/sf.c
     index 590d0cedd8..c4dd7dc611 100644
     --- a/env/sf.c
     +++ b/env/sf.c
     @@ -308,6 +308,113 @@ static int env_sf_init(void)
[...]


Sorry I haven't looked at the file in detail yet, but doesn't this duplicate 
quite a lot of env
decision code?

Yes, correct, I take a look to remove this duplication ...

Hmm... just detected when booting with invalid environment in spi nor flash,
that the board selects correct the default environment (before relocation)
but I see in U-Boot commandshell:

=> printenv

Environment size: 1/12283 bytes
=>

and even worser, saveenv never calls the save function for the spi nor...
it seems, the reason is:

diff --git a/env/env.c b/env/env.c
index 9237bb9c74..6faef1136d 100644
--- a/env/env.c
+++ b/env/env.c
@@ -189,7 +189,7 @@ int env_load(void)
                  if (!drv->load)
                          continue;

-               if (!env_has_inited(drv->location))
+               if (env_has_inited(drv->location))
                          continue;

                  printf("Loading Environment from %s... ", drv->name);

With this change, all is fine again. This seems a bug to me ... but wonder
why this does not pop up on other boards ... what do you think?

I don't think I really get what your problem is, yet. But the code above looks
correct: only call load/save/erase on env drivers that have successfully been
initialized via env_init.

Yes, you are right, sorry for your time. I try to find out, whats going
wrong...

bye,
Heiko
--
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-52   Fax: +49-8142-66989-80   Email: h...@denx.de
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to