主题 : 关于env_init.c 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 39698
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
贡献值: 0 点
综合积分: 14 分
注册时间: 2011-03-11
最后登录: 2012-07-18
楼主  发表于: 2012-04-06 01:19

 关于env_init.c

在第一阶段nor flash中应该没有环境变量
然后运行saveenv
调用env_flash.c中的函数saveenv()
但是问题来了
之前定义了env_t *env_ptr = (env_t *)CONFIG_ENV_ADDR;
然后再saveenv函数中uchar *env_buffer = (uchar *)env_ptr;
因为第一次flash中是没有环境变量的
那么
flash_write((char *)env_buffer, flash_sect_addr, len);
要从CONFIG_ENV_ADDR地址为源在flash_sect_addr地址处写入环境变量,怎么可能呢?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2012-04-07 07:13

 回 楼主(smk851224) 的帖子

在flash中没有保存的环境变量的情况下,u-boot会使用配置文件include/configs/*.h中指定的环境变量, 比如CONFIG_EXTRA_ENV_SETTINGS,并且在执行saveenv的时候把这些环境变量写入flash中。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."