根据uboot 2011,env的初始化主要是用env_relocate来实现。它的实现主要有:
1、如果gd->env_valid等于1,那么,从dataflash中读出数据,调用env_relocate_spec。
2、如果gd->env_valid等于0,那么,直接使用default的env,这是直接编进code中的,调用set_default_env。
3、获得数据要先创建env的hush table,然后导入表中。
env_reloc,实现与env有关的命令的命令表的迁移,移动gd->reloc_off
环境变量在flash中的地址和大小是编译时define的,因此,更新code之后环境变量不变。
get_env的实现
default_environment,是一张表,每行数据分别是环境变量和值
struct hsearch_data env_htable,hush表中的环境变量
get_env就是通过name查找hush表得到value