how u-boot handles the environment (rpi4, fat environment)

marty leisner maleisner at gmail.com
Sun Sep 25 18:46:10 CEST 2022


I'm running ubuntu 20.04 server (which uses u-boot v2021.01 with minor
changes/enhancements)

fw_printenv doesn't seem to work -- it always comes up with a crc error (I
haven't tried fw_setenv yet).

Is there a spec of how the environment works?  I haven't seen one.

Without this patch, I get:
Warning: Bad CRC, using default environment

The first environment variable has a "0x1" in front of it.
When I apply this patch, things seem to work:

diff --git a/tools/env/fw_env.c b/tools/env/fw_env.c
index 66cb9d2a..c85b471a 100644
--- a/tools/env/fw_env.c
+++ b/tools/env/fw_env.c
@@ -1457,8 +1457,8 @@ int fw_env_open(struct env_opts *opts)
               goto open_cleanup;
       }

-       crc0 = crc32(0, (uint8_t *)environment.data, ENV_SIZE);
-
+       crc0 = crc32(0, (uint8_t *) (environment.data + 1) , ENV_SIZE - 1);

But I'm not at the phase of doing fw_setenv (I would have used a newer
u-boot, but I'm getting resets on bootup (it works
on a vanilla 20.04 system).

marty
marty


More information about the U-Boot mailing list