uboot常见环境变量
1、环境变量
可以理解为全局变量,和全局变量不同的地方在于环境变量可以保存下来,下次开机使用最后的变量。全局变量在每次开机时都会是初始值。使用print命令打印出来。
2、环境变量如何参与程序运行
环境变量在flash中有一份,在DDR中也有一份。uboot开机时,一次性从flash中读取全部环境变量到DDR中作为环境变量的初始值。使用过程中都是使用DDR中的这一份。用户使用setenv命令修改的就是DDR中的那一份环境变量然后通过saveenv命令就是将DDR中的环境变量重新写入flash,下一次开机时DDR从flash中读取到的才能是最新的。
3、自动运行倒数时间:bootdelay
4、网络设置相关环境变量
(1)ipaddr:开发板的本地IP地址
(2)servenrip:开发板通过tftp指令去tftp服务器下载东西时,tftp服务器的IP地址
(3)gatewayip:开发板的本地网关地址
(4)netmask:子网掩码
(5)ethaddr:开发板的本地网卡的MAC地址
5、自动运行命令设置:bootcmd
(1)uboot启动后会开机自动倒数bootdelay秒,如果没人按下回车打断启动,则uboot会自动执行启动命令。实现自动启动内核实际上就是在内部执行了bootcmd这个环境变量的值所对应的命令集,movi和bootm命令。
(2)bootcmd=movi read kernel 30008000; bootm 30008000
movi read kernel 30008000 // 从iNand的kernel分区读取到DDR的30008000位置处。
bootm 30008000 // 从30008000位置处启动内核
(3)小实验
set bootcmd printenv // 将bootcmd环境变量修改为printenv,开机后就会去执行print命令打印环境变量。
set bootcmd ‘movi read kernel 30008000; bootm 30008000’
// 设置回原来的命令,注意两个命令之间又分号,所以需要‘’单引号引起来。
6、uboot给kennel传参:bootargs
(1)linux内核接收uboot给他传递启动参数,在启动参数的指导完成启动过程。
(2)在uboot的环境变量中设置bootargs,然后bootm命令启动内核时会自动将bootargs传给内核。
(3)bootargs=console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3
console=ttySAC2,115200 控制台使用串口2,波特率115200
root=/dev/mmcblk0p2 rw 根文件系统使用SD卡端口0设备(iNand)第二分区,rw表示可读可写
init=/linuxrc linux的进程1(init进程)的路径
rootfstype=ext3 根文件系统的类型是ext3