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"\
mtdparts=gpmi-nand:64m(boot),16m(kernel),16m(dtb),1m(misc),-(rootfs)
bootargs 环境变量主要设置两个参数: console,root与 rootfstype。
Linux系统启动以后,会有一个根文件系统的概念。这个根文件系统也就是 root。
这里根文件系统的位置是 "ubi0:rootfs "。