1. u-boot的使用
uboot是一段裸机代码,它的实现非常复杂,主要是初始化一些硬件,部署整个计算机系统,将内核读到内存,根据环境变量去启动内核,并向内核传递参数。它的目标就是启动内核,内核启动后它的生命也随之结束。
u-boot是SourceForge上的开源项目,由一个人发起,然后由整个世界所有感兴趣的人共同维护发展而来的一个bootloader,bootloader是用来引导和加载内核,向内核传递参数的,是内核引导程序的统称,bootloader除了u-boot还有bios,LilO,redboot,vivi等。
1.1 环境变量
在uboot命令行输入printenv,打印出环境变量(使用的 NAND flash版本):
1.baudrate=115200,波特率为115200。
2.bootargs=console=ttymxc0,115200 root=ubi0:rootfs rootfstype=ubifs ubi.mtd=5 mtdparts=gpmi-nand:4m(u-boot),2m(-boot-env),4m(logo),10m(kernel),2m(dtb),-(rootfs) rootwait rw
参数说明:.bootargs后面的变量是传递给linux内核的参数,主要用来告诉内核启动信息,分区信息和根文件系统所在的分区,console=ttymxc0代表串口节点ttymxc0实现内核和PC的交互。波特率是115200,root=ubi0:rootfs文件系统的名字叫做rootfs,分区依次是uboot,uboot环境变量,开机logo,内核,设备树,文件系统。进入内核可以在/proc/mtd看到分区信息:
通过bootargs可以设置文件系统的挂载方式,可以挂载flash中的根文件系统,还可以通过NFS挂载网络文件系统。
3.bootcmd=nand read ${loadaddr} 0xa00000 0xa00000; nand read ${fdt_addr} 0x144B000 0xc800;bootz ${loadaddr} - ${fdt_addr}
bootcmd后面是系统自启动参数,在启动参数由一些uboot命令组成,在倒计时结束后uboot会依次执行设置好的命令,
NAND read ${loadaddr} 0xa00000 0xa00000:将nand flash的偏移地址0xa00000开始,读大小为0xa00000的内核镜像到内存的开始地址为loadaddr处,loadaddr为0x80800000,如图 1.1.3。
nand read ${fdt_addr} 0x144B000 0xc800:将设备树从flash的偏移地址0x1