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