[U-Boot] About the variable environment and default_environment when environment is embedded
Xiaojun Li
fdlixiaojun at gmail.com
Mon Dec 7 10:39:57 CET 2009
Hi all,
I'm working with the u-boot-2009-08.tar.bz2 and find some code I am not very
clear.
My puzzle is about the extern array "environment[]" which declared in
"env_flash.c" as
an array composed by unsigned char. However, it is defined as a env_t struct
in the
"env_embedded.c". So the declaration conflicts with definition, but it can
be compiled
normally, does any one tell me why? Thanks.
Here is the code in ./common/env_flash.c and ./common/env_embedded.c
******************************************************************************
/* In file ./common/env_flash.c */
#ifdef ENV_IS_EMBEDDED
extern uchar environment[];
env_t *env_ptr = (env_t *)(&environment[0]);
#ifdef CMD_SAVEENV
/* static env_t *flash_addr = (env_t *)(&environment[0]);-broken on
ARM-wd-*/
static env_t *flash_addr = (env_t *)CONFIG_ENV_ADDR;
#endif
#else /* ! ENV_IS_EMBEDDED */
env_t *env_ptr = (env_t *)CONFIG_ENV_ADDR;
#ifdef CMD_SAVEENV
static env_t *flash_addr = (env_t *)CONFIG_ENV_ADDR;
#endif
******************************************************************************
/* In file ./common/env_embedded.c */
#ifdef ENV_IS_EMBEDDED
...
env_t environment __PPCENV__ = {
ENV_CRC, /* CRC Sum */
#ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
1, /* Flags: valid */
#endif
{
#if defined(CONFIG_BOOTARGS)
"bootargs=" CONFIG_BOOTARGS "\0"
#endif
#if defined(CONFIG_BOOTCOMMAND)
"bootcmd=" CONFIG_BOOTCOMMAND "\0"
#endif
.....
};
...
#endif
******************************************************************************
More information about the U-Boot
mailing list