u-boot之环境变量

本文基于u-boot.2016.03.

1、环境变量的作用

uboot中环境变量的作用就是在不改变源码、不用重新编译的情况下,可以使我们通过设置环境变量来使得代码有不同表现,如bootdelay时间、IP地址,向内核的传参bootargs等等,有些环境变量要重启后才能生效使用,有些设置后马上可以使用新设置的值了。

2、常用的环境变量

常用的环境变量定义在一个结构体中,每个环境变量由变量名,等于符号,变量内容,和"\0"组成。

/include/env_default.h

const uchar default_environment[] = {
...
#ifdef	CONFIG_BOOTARGS
	"bootargs="	CONFIG_BOOTARGS			"\0"
#endif
#ifdef	CONFIG_BOOTCOMMAND
	"bootcmd="	CONFIG_BOOTCOMMAND		"\0"
#endif
...
#ifdef	CONFIG_EXTRA_ENV_SETTINGS
	CONFIG_EXTRA_ENV_SETTINGS
#endif
...
};
环境变量描述
bootargs传给内核的启动参数
bootcmd自启动时执行的命令
bootdelay执行自动启动的等候秒数
baudrate串口控制台的波特率
ipaddr本机的IP地址
serverip服务器端的IP地址
gatewayip本机网关
netmask子网掩码
arch架构(arm)
vendor芯片厂(freescale)

这里的 CONFIG_EXTRA_ENV_SETTINGS比较特殊,一般在板级文件里定义。
我们这里使用的是sabreauto的参考开发板,这个宏定义在mx6sabre_common.h中定义。

3、代码分析

主要涉及的文件有:

common/board_f.c//uboot启动时比较靠前的初始化工作
common/board_r.c//uboot启动时比较靠后的初始化工作
common/env_common.c// 中间层实现
cmd/nvedit.c//命令层实现
common/env_flash.c//驱动层实现(以eimnor为例)
lib/Hashtable.c //哈希表实现

3.1 顺序结构:

在这里插入图片描述

3.2 分层结构:

uboot中env的整个架构可以分为3部分:

在这里插入图片描述

4、使用“bootdelay”分析

6、有用参考

https://www.cnblogs.com/lidabo/p/5274162.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值