uboot 中有两个非常重要的环境变量 bootcmd 和 bootargs。本文来学习 uboot的环境变量 bootargs。
bootargs 环境变量也叫命令行参数。bootargs 保存着 uboot 传递给 Linux 内核的参数。
环境变量 bootargs 的设置是在 mx6ull_alientek_nand.h文件中。
mx6ull_alientek_nand.h文件所在目录:Uboot源码的根目录下 include/configs
如果是 NAND-Flash版的开发板,则 bootargs参数值如下设置:
#if defined(CONFIG_SYS_BOOT_NAND)
#define CONFIG_EXTRA_ENV_SETTINGS \
CONFIG_MFG_ENV_SETTINGS \
"panel=TFT43AB\0" \
"fdt_addr=0x83000000\0" \
"fdt_high=0xffffffff\0" \
"console=ttymxc0\0" \
"bootargs=console=ttymxc0,115200 ubi.mtd=4 " \
"root=ubi0:rootfs rootfstype=ubifs " \
CONFIG_BOOTARGS_CMA_SIZE \
"mtdparts=gpmi-nand:64m(boot),16m(kernel),16m(dtb),1m(misc),-(rootfs)\0"\
"bootcmd=nand read ${loadaddr} 0x4000000 0x800000;"\
"nand read ${fdt_addr} 0x5000000 0x100000;"\
"bootz ${loadaddr} - ${fdt_addr}\0"
下面对上面的 bootargs环境变量值进行分析。
环境变量 bootargs值如下:
"bootargs=console=ttymxc0,115200 ubi.mtd=4 " \
"root=ubi0:rootfs rootfstype=ubifs " \
CONFIG_BOOTARGS_CMA_SIZE \
"mtdparts=gpmi-nand:64m(boot),16m(kernel),16m(dtb),1m(misc),-(rootfs)\0"\
CONFIG_BOOTARGS_CMA_SIZE 宏为空,如下:
#define CONFIG_BOOTARGS_CMA_SIZE ""
环境变量 bootargs最终展开为:
"bootargs=console=ttymxc0,115200 ubi.mtd=4 " \
"root=ubi0:rootfs rootfstype=ubifs " \
"mtdparts=gpmi-nand:64m(boot),16m(kernel),16m(dtb),1m(misc),-(rootfs)\0"\
bootargs 环境变量主要设置两个参数: console,root与 rootfstype。
Linux系统启动以后,会有一个根文件系统的概念。这个根文件系统也就是 root。
这里根文件系统的位置是 "ubi0:rootfs "。