[U-Boot] __mmc_get_env_addr() is not being called?
Shawn Guo
shawn.guo at freescale.com
Fri Dec 16 06:54:00 CET 2011
Hi,
I'm running v2011.12-rc1 (with one missing usdhc patch applied) on
mx6qarm2 board, and seeing a problem. When I install u-boot on a
blank SD card, it boots fine with messge "*** Warning - bad CRC,
using default environment" seen as expected. But once I run command
'save' to write envs to the card, the card stop booting.
I tracked the issue a little bit, and found __mmc_get_env_addr() does
not get called at all. Therefore when I run 'save' for the first time,
the envs are written to offset 0 of the card, which in turn overwrites
the boot image.
I have not figured out why it does. But the following change fixes
the problem for me.
diff --git a/common/env_mmc.c b/common/env_mmc.c
index 8441c77..3832fe4 100644
--- a/common/env_mmc.c
+++ b/common/env_mmc.c
@@ -46,13 +46,11 @@ DECLARE_GLOBAL_DATA_PTR;
#define CONFIG_ENV_OFFSET 0
#endif
-static int __mmc_get_env_addr(struct mmc *mmc, u32 *env_addr)
+static int mmc_get_env_addr(struct mmc *mmc, u32 *env_addr)
{
*env_addr = CONFIG_ENV_OFFSET;
return 0;
}
-int mmc_get_env_addr(struct mmc *mmc, u32 *env_addr)
- __attribute__((weak, alias("__mmc_get_env_addr")));
Any comment on why the change fixes the problem is appreciated.
--
Regards,
Shawn
More information about the U-Boot
mailing list