U_boot 的 bootcmd 和bootargs参数详解 (基于real210)

来源:互联网 发布:sql删除含带4的语句 编辑:程序博客网 时间:2024/06/05 01:07

本文参考:http://blog.csdn.net/kehui123/article/details/7777351

http://blog.csdn.net/shuaishuai80/article/details/6200359


对于real210的内核烧录的最后 需要输入如下的两行命令:

setenv bootcmd "movi read kernel C0008000; movi readrootfs 30800000 180000; bootm C0008000 30800000"

setenv bootargs "console=ttySAC2,115200 noinitrd root=/dev/mmcblk0p2 rootfstype=ext2 rootdelay=2 rwinit=/linuxrc"

初学者一般都是直接进行复制、粘贴,导致部分学习者很头痛,这里给出以下解释:

1、setenv a “b”是设置环境变量的命令,其中a表示需要设置的环境变量;

2、bootcmd 和bootargsU-boot中值得注意的环境变量

(1)bootcmd 是自动启动时默认执行的一些命令;

1)movi read即从sd/mmc里读数据到内存里;

例如:上述中 movi read kernel C0008000; movi readrootfs 30800000 180000; 指的是从sd/mmc读偏移量为kernel的地方读数据到内存C0008000中去;
从sd/mmc读偏移量为 rootfs的地方读数据到内存30800000中去,读取的数据为180000。

2)bootm:1--读取头部,把内核拷贝到合适的地方

                      2--把参数给内核准备好,并告诉内核参数的首地址
                      3-- 引导内核

(2)bootargs是环境变量中的重中之重,甚至可以说整个环境变量都是围绕着bootargs来设置的,bootargs的种类非常非常的多,非常的灵活,内核和文件系统的不同搭配就会有不同的设置方法,甚至你也可以不设置bootargs,而直接将其写到内核中去(在配置内核的选项中可以进行这样的设置),正是这些原因导致了bootargs使用上的困难。

其中

1--console

console=tty  使用虚拟串口终端设备 .
console=ttyS[,options] 使用特定的串口,options可以是这样的形式bbbbpnx,这里bbbb是指串口的波特率,p是奇偶位,n是指的bits.
console=ttySAC[,options] 同上面.

      看你当前的环境,有时用ttyS,有时用ttySAC,网上有人说,这是跟内核的版本有关,2.4用ttyS,2.6用ttySAC,但实际情况是官方文档中也是使用ttyS,所以应该是跟内核版本没有关联的.可以查看Documentation/serial-console.txt找到相关描述.

例如:上述中console=ttySAC2,115200 noinitrd,使用的是串口2,波特率为115200

2-- root
    用来指定rootfs的位置, 常见的情况有:
       root=/dev/ram rw   
       root=/dev/ram0 rw
    请注意上面的这两种设置情况是通用的,我做过测试甚至root=/dev/ram1 rw和root=/dev/ram2 rw也是可以的,网上有人说在某些情况下是不通用的,即必须设置成ram或者ram0,但是目前还没有遇到,还需要进一步确认,遇到不行的时候可以逐一尝试。
       root=/dev/mtdx rw
       root=/dev/mtdblockx rw
       root=/dev/mtdblock/x rw
       root=31:0x
     上面的这几个在一定情况下是通用的,当然这要看你当前的系统是否支持,不过mtd是字符设备,而mtdblock是块设备,有时候你的挨个的试到底当前的系统支持上面那种情况下,不过root=/dev/mtdblockx rw比较通用。此外,如果直接指定设备名可以的话,那么使用此设备的设备号也是可以的.
       root=/dev/nfs
     在文件系统为基于nfs的文件系统的时候使用。当然指定root=/dev/nfs之后,还需要指定nfsroot=serverip:nfs_dir,即指明文件系统存在那个主机的那个目录下面.

3--rootfstype
      这个选项需要跟root一起配合使用,一般如果根文件系统是ext2的话,有没有这个选项是无所谓的,但是如果是jffs2,squashfs等文件系统的话,就需要rootfstype指明文件系统的类型,不然会无法挂载根分区.

4--rootdelay

执行自动启动的等候秒数

5--rw

权限可读可写

6--init

init指定的是内核启起来后,进入系统中运行的第一个脚本,一般init=/linuxrc,或者init=/etc/preinit,preinit的内容一般是创建console,null设备节点,运行init程序,挂载一些文件系统等等操作。请注意,很多初学者以为init=/linuxrc是固定写法,其实不然,/linuxrc指的是/目录下面的linuxrc脚本,一般是一个连接罢了。


0 0
原创粉丝点击