uboot 之环境变量

u-boot-2016.11 hi3559a

1、初始全局变量gd的env信息
在board_f.c中:
init_sequence_f() -> env_init():
gd->env_addr = (ulong)&default_environment[0];
gd->env_valid = 1;


2、获取env的媒介
env一般和uboot存放再同一个媒介(即启动媒介)
在board_r.c中
init_sequence_r() -> board_init():

gd->bd->bi_boot_params = CFG_BOOT_PARAMS: 存放boot传递给内核的参数地址(物理内存起始地址+0x100)
boot_flag_init(): 获取启动媒介,存放在boot_media变量里

3、初始化媒介(这里使用spi nand flash)
init_sequence_r() -> initr_nand() -> nand_init() -> nand_init_chip():
board_nand_init(): 初始化host控制器,及driver所有操作接口
nand_scan():扫描nand device(hifmc_spi_nand_flash_table添加自己的spi nand 型号)
nand_register():注册nand device

4、获取媒介中的env变所有量
init_sequence_r() -> initr_env() -> env_relocate() -> env_relocate_spec():
根据boot_media变量的媒介信息,函数指针指向env存放的媒介
env_cmn_func = &nand_env_cmn_func;
env_cmn_func->env_relocate_spec();

static struct env_common_func_t nand_env_cmn_func = {
    .saveenv = nand_saveenv,   保存环境变量
    .env_relocate_spec = nand_env_relocate_spec, 从媒介中读出保存好的env所有环境变量
    .env_name_spec = "NAND",
};
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值