bootcmd & bootargs
uboot 中有两个重要的环境变量:bootcmd 和 bootargs,设置后保存在 emmc 中。
bootcmd :主要作用是'保存启动命令'。
例如:下载内核、设备树 到 内存中,再启动 Linux 。
uboot 启动倒计时结束后、会默认执行 bootcmd 变量。
bootargs:保存着'传递给内核的参数'。
1.1 bootcmd
fatload mmc 0:1 0x60008000 zImage;
'从 /dev/mmcblk0p1 加载 zImage 到内存的 0x60008000'
fatload mmc 0:1 0x61000000 vexpress-v2p-ca9.dtb;
'从 /dev/mmcblk0p1 加载 dtb 到内存的 0x61000000'
bootz ${kernel_load_address} - ${devicetree_load_address}
bootz 0x60008000 - 0x61000000;
bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address};
1.2 bootargs
mmcargs=setenv bootargs console=${console},${baudrate} root=${mmcroot}
console=tty0,baudrate=115200
mmcroot=/dev/mmcblk0p2 rootwait rw
mmcroot=" CONFIG_MMCROOT " rootwait rw
'rootwait 表示等待 mmc 设备初始化完成以后再挂载,'
'否则 mmc 设备还没初始化完成就挂载根文件系统会出错的。'
'rw 表示根文件系统是可以读写的,不加 rw 的话无法在根文件系统中进行写操作,只能读。'
/dev/mmcblk0
/dev/mmcblk1
/dev/mmcblk0p1
/dev/mmcblk0p2
/dev/mmcblk1p1
/dev/mmcblk1p2
'### 通常 Linux 系统的 mmc 设备存储划分、如下所示 ###'
'0 分区 存放 uboot'
'1 分区 存放 内核及设备树'
'2 分区 存放 根文件系统'