主题 : uboot start_armboot中env_init()初始化 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 48738
精华: 0
发帖: 2
金钱: 10 两
威望: 2 点
综合积分: 4 分
注册时间: 2011-06-03
最后登录: 2011-10-09
楼主  发表于: 2011-06-03 17:05

 uboot start_armboot中env_init()初始化


int  env_init(void)
{
#ifdef CONFIG_OMAP2420H4
    int flash_probe(void);

    if(flash_probe() == 0)
        goto bad_flash;
#endif
    if (crc32(0, env_ptr->data, ENV_SIZE) == env_ptr->crc) {
        gd->env_addr = (ulong)&(env_ptr->data);
        gd->env_valid = 1;
        return(0);
    }
#ifdef CONFIG_OMAP2420H4
bad_flash:
#endif
    gd->env_addr = (ulong)&default_environment[0];
    gd->env_valid = 0;
    return (0);
}

uboot stage2步骤中,gd->env_addr到底指向默认的default_environment,还是env_ptr->data(env_t *env_ptr = (env_t *)CFG_ENV_ADDR;)?
默认的default_environment是存在哪里啊?
非常感谢
级别: 新手上路
UID: 48738
精华: 0
发帖: 2
金钱: 10 两
威望: 2 点
综合积分: 4 分
注册时间: 2011-06-03
最后登录: 2011-10-09
1楼  发表于: 2011-06-03 18:05
已经弄明白了,系统第一次启动的时候,flash中是没有环境变量的,所以crc32检验出错,gd->env_addr到底指向默认的default_environment,flash中环境变量区也会被默认的default_environment装载,这样,下次启动系统时,crc32检验就正确了。
默认的环境变量值跟移植相关,在include/configs/***.h中定义

不知道理解的对不对