bootcmd_SD=mmc dev 1 0; mmc read ${loadaddr} 0x800 0x2000;mmc read ${rd_loadaddr} 0x3000 0x1200:设置启动设备及kernel和ramdisk加载。
<mmc dev 1 0>:设置当前设备为1(在我的系统中1表示mmc,0表示SD)以及分区为0。<mmc read ${loadaddr} 0x800 0x2000>:表示将当前设备中从第0x800个block开始的0x2000个block中的内容读取到内存中的${loadaddr}处。一般每个block大小为512K,因此,这里实际上是将当前设备的第0分区中从1M字节处开始的4M字节数据读取到内存中。(在我的系统中,这里读取的是kernel数据)
<mmc read ${rd_loadaddr} 0x3000 0x1200>:与上面的基本相同。(在我的系统中这里读取的是ramdisk数据)
bootcmd=run bootcmd_SD; bootm ${loadaddr} ${rd_loadaddr}:设置启动命令。
<run bootcmd_SD>:执行bootcmd_SD将kernel和ramdisk读入内存。
<bootm ${loadaddr} ${rd_loadaddr}>:然后执行bootm命令启动kernel和ramdisk。
附上UBoot中的mmc命令说明:
Usage:
mmc read addr blk# cnt ——从存储设备中第blk#个block起的cnt个block的内容读取数据到内存addr处。
mmc write addr blk# cnt ——将内存addr中的内容写入存储设备中第blk#个block起的cnt个block内。
mmc erase blk# cnt ——将存储设备中第blk#个block起的cnt个block中的内容擦除。
mmc rescan ——从新扫描存储设备。
mmc part - lists available partition on currentmmc device ——列出当前mmc设备中有效的分区。
mmc dev [dev] [part] - show or set current mmcdevice [partition] ——显示或设置当前的mmc设备以及分区。
mmc bootpart [dev] [part] - show or set bootpartition ——显示或设置启动分区。
mmc list - lists available devices ——列出当前有效的设备。
bootargs_android_recovery=setenv bootargs ${bootargs} video=mxcdi0fb:RGB24,bpp=16 init=/init root=/dev/mmcblk0p4 rootdelay=2 rootfs=ext4:设置android recovery参数。这里继承了bootargs中的设置,然后重新设置了视频设备参数。
<root=/dev/mmcblk0p4>:设置root设备为/dev/mmcblk0p4,也就是mmc设备的第四个分区。
<rootdelay=2>:设置android recovery启动时延时2秒。
<rootfs=ext4>:设置root设备所使用的文件系统为ext4。
bootcmd_android_recovery=run bootargs_android_recovery;mmc dev 1 4;mmc read ${loadaddr} 0x800 0x2000;bootm:设置android recovery如何加载运行。
<run bootargs_android_recovery>:执行android recovery参数设置。
<mmc dev 1 4;mmc read ${loadaddr} 0x800 0x2000;bootm>:从mmc设备的分区4中读取recovery镜像文件,然后启动保存在${loadaddr}中的recovery镜像文件。
splashimage=0x78000000:设置开机启动画面数据在内存中的保存地址。
stdin=serial:设置标准输入设备为串口。
stdout=serial:设置标准输出设备为串口。
stderr=serial:设置标准错误设备为串口。
最后附上bootm命令的说明:
bootm - boot application image from memory
Usage:
bootm [addr [arg ...]]
- boot application image stored in memory
passing arguments 'arg ...'; when booting a Linux kernel,
'arg' can be the address of an initrd image