加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

uboot的命令参数整理

发布时间:2020-12-15 06:16:47 所属栏目:百科 来源:网络整理
导读:整理下实习期间对uboot的使用,和参数的理解 1.setenv ipaddr 192.168.1.3 设置arm板的ip地址 2.setenv serverip 192.168.1.103 设置主机的ip地址 3.tftp 0xc0700000 uImage 通过tftp下载uImage文件到arm板内存0xc0700000中 4.nand erase 0x200000 0x400000

整理下实习期间对uboot的使用,和参数的理解

1.setenv ipaddr 192.168.1.3 设置arm板的ip地址

2.setenv serverip 192.168.1.103 设置主机的ip地址

3.tftp 0xc0700000 uImage 通过tftp下载uImage文件到arm板内存0xc0700000中

4.nand erase 0x200000 0x400000 擦出nandflash中,开始地址为0x200000,大小为0x400000的空间

5. nand write.e 0xc0700000 0x200000 0x400000 将内存0xc0700000中的数据写入nandflash中,nandflash的开始地址为0x200000,大小为0x400000.

6.setenv bootcmd 'nand read.e 0xc0700000 0x200000 0x400000;bootm' 设置自动启动参数,读取nandflash中开始地址为0x200000大小为0x400000的数据,到内存0xc0700000中,并读取内核文件

7.setenv bootargs 'console=ttyS2,115200n8 noinitrd rw ip=192.168.0.3 root=/dev/nfs nfsroot=192.168.0.222:/home/realtimedsp/workdir/filesys,nolock mem=64M'

console指定串口设备,波特率。ip地址。nfs挂载位置。内存大小。

经常使用的几种组合:

1).假设文件系统是ramdisk,且直接就在内存中,bootargs的设置应该如下:

setenv bootargs ‘initrd=0x32000000,0xa00000 root=/dev/ram0 console=ttySAC0 mem=64Minit=/linuxrc’

2).假设文件系统是ramdisk,且在flash中,bootargs的设置应该如下:

setenv bootargs ‘mem=32M console=ttyS0,115200 root=/dev/ram rw init=/linuxrc’

注意这种情况下你应该要在bootm命令中指定ramdisk在flash中的地址,如bootm kernel_addr ramdisk_addr (fdt_addr)

3).假设文件系统是jffs2类型的,且在flash中,bootargs的设置应该如下

setenv bootargs ‘mem=32M console=ttyS0,115200 noinitrd root=/dev/mtdblock2 rwrootfstype=jffs2 init=/linuxrc’

4).假设文件系统是基于nfs的,bootargs的设置应该如下

setenv bootargs‘noinitrd mem=64M console=ttySAC0 root=/dev/nfs nfsroot=192.168.0.3:/nfs ip=192.168.0.5:192.168.0.3:192.168.0.3:255.255.255.0::eth0:off’

或者

setenv bootargs‘noinitrd mem=64M console=ttySAC0 root=/dev/nfs nfsroot=192.168.0.3:/nfs ip=192.168.0.5’

A. 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,即指明文件系统存在那个主机的那个目录下面。

B. rootfstype

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

C.console

console=tty<n> 使用虚拟串口终端设备<n>.

console=ttyS<n>[,options] 使用特定的串口<n>,options可以是这样的形式bbbbpnx,这里bbbb是指串口的波特率,p是奇偶校验位,n是指的bits。

console=ttySAC<n>[,options] 同上面。

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

D. mem

mem=xxM指定内存的大小,不是必须的

E. ramdisk_size

ramdisk=xxxxx?????????? 不推荐?

ramdisk_size=xxxxx? 推荐

上面这两个都可以告诉ramdisk驱动,创建的ramdisk的size,默认情况下是4m(s390默认8M),你可以查看Documentation/ramdisk.txt找到相关的描述,不过ramdisk=xxxxx在新版的内核都已经没有提了,不推荐使用。

F. initrd,noinitrd

当你没有使用ramdisk启动系统的时候,你需要使用noinitrd这个参数,但是如果使用了的话,就需要指定initrd=r_addr,size,r_addr表示initrd在内存中的位置,size表示initrd的大小。

G. init

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

H. ip

指定系统启动之后网卡的ip地址,如果你使用基于nfs的文件系统,那么必须要有这个参数,其他的情况下就看你自己的喜好了。设置ip有两种方法:

ip = ip addr

ip=ip addr:server ip addr:gateway:netmask::which netcard:off

这两种方法可以用,不过很明显第二种要详细很多,请注意第二种中which netcard是指开发板上的网卡,而不是主机上的网卡。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读