好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

uboot的环境变量设置.doc

8页
  • 卖家[上传人]:xiao****1972
  • 文档编号:84827802
  • 上传时间:2019-03-05
  • 文档格式:DOC
  • 文档大小:102.50KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 这是我uboot的环境变量设置,在该设置下可以运行initram内核(从内存下载到nandflash再运行),但是运行nfs根文件系统的时候一直出错,各种错误查看了很多资料后猜想应该是uboot传递给linux内核的参数有问题,也就是bootargs的设置有问题 #printenvbootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200 rootfstype=yaffs2 rw mem=64Mbootcmd=nand read 0x32000000 0x60000 0x300000; bootm 0x32000000bootdelay=3baudrate=115200ethaddr=08:00:3e:26:0a:5bipaddr=192.168.1.110serverip=192.168.1.100netmask=255.255.255.0stdin=serialstdout=serialstderr=serialethact=dm9000#setenv ……#saveenv ……#bdinfo 可以查看机器码等信息 所以查看资料后就开始对bootargs参数进行设置: 因为为了方便对程序测试等工作,使用nfs根文件系统可以在不烧写根文件系统到flash中完成对程序的测试工作,因此设置bootargs使它支持nfs根文件系统启动。

      #setenv bootargs 'root=/dev/nfs rw nfsroot=10.103.4.216:/nfsroot/rootfs ip=10.103.4.211 console=ttySAC0' #saveenv #tftp 31000000 uImage #bootm 31000000 启动信息如下: ……s3c2440-sdi s3c2440-sdi: running at 0kHz (requested: 0kHz).s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 198kHz).s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 198kHz).s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 198kHz).s3c2440-sdi s3c2440-sdi: powered down.eth0: link downIP-Config: Guessing netmask 255.0.0.0IP-Config: Complete: device=eth0, addr=10.103.4.211, mask=255.0.0.0, gw=255.255.255.255, host=10.103.4.211, domain=, nis-domain=(none), bootserver=255.255.255.255, rootserver=10.103.4.216, rootpath=Looking up port of RPC 100003/2 on 10.103.4.216eth0: link up, 10Mbps, half-duplex, lpa 0x0021Looking up port of RPC 100005/1 on 10.103.4.216VFS: Mounted root (nfs filesystem) on device 0:11.Freeing init memory: 128KProcessing /etc/profile... Done# 最后实现了内核正常启动,nfs根文件系统成功挂载(此时烧写在nandflash中的initram根文件系统不能正常启动了,需改回到上面的最初的设置才行)。

      此时的环境变量如下所示:[u-boot@lhc]#printenvbootdelay=3baudrate=115200netmask=255.255.255.0ethact=dm9000ethaddr=00:01:02:03:04:05ipaddr=10.103.4.211serverip=10.103.4.216bootcmd=nand read 31000000 200000 600000;bootm 31000000bootargs=root=/dev/nfs rw nfsroot=10.103.4.216:/nfsroot/rootfs ip=10.103.4.211 console=ttySAC0stdin=serialstdout=serialstderr=serialEnvironment size: 324/131068 bytes **************************************************************************************************************************************************************************************************** 以下内容为网上资料**************************************************************************************************************************************************************************************************** 编好了u-boot,但是如何来使用确不是那么简单的,u-boot的环境变量经常设置错误而导致内核启动失败。

      u-boot的环境变量是使用u-boot的关键,它可以由你自己定义的,但是其中有一些也是大家经常使用,约定俗成的,有一些是u-boot自己定义的,更改这些名字会出现错误,下面的表中我们列出了一些常用的环境变量:环境变量 描述 bootdelay 执行自动启动的等候秒数 baudrate 串口控制台的波特率 netmask 以太网接口的掩码 ethaddr 以太网卡的网卡物理地址 bootfile 缺省的下载文件 bootargs 传递给内核的启动参数 bootcmd 自动启动时执行的命令 serverip 服务器端的ip地址 ipaddr 本地ip 地址 stdin 标准输入设备 stdout 标准输出设备 stderr 标准出错设备 上面只是一些最基本的环境变量,请注意,板子里原本是没有环境变量的,u-boot的缺省情况下会有一些基本的环境变量,在你执行了saveenv之后,环境变量会第一次保存到flash中,之后你对环境变量的修改,保存都是基于保存在flash中的环境变量的操作 U-boot的环境变量值得注意的有两个: bootcmd 和bootargs。

      bootcmd 前面有说过bootcmd是自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数 bootargs bootargs是环境变量中的重中之重,甚至可以说整个环境变量都是围绕着bootargs来设置的bootargs的种类非常非常的多,我们平常只是使用了几种而已,感兴趣的可以看看这篇文章说的很全: 下面介绍一下bootargs常用参数,bootargs的种类非常的多,而且随着kernel的发展会出现一些新的参数,使得设置会更加灵活多样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. consoleconsole=tty 使用虚拟串口终端设备 .console=ttyS[,options] 使用特定的串口,options可以是这样的形式bbbbpnx,这里bbbb是指串口的波特率,p是奇偶校验位,n是指的bitsconsole=ttySAC[,options] 同上面 我当时就是conslve=ttySAC0D. memmem=xxM 指定内存的大小,不是必须的 E. ramdisk_sizeramdisk=xxxxx 不推荐 ramdisk_size=xxxxx 推荐上面这两个都可以告诉ramdisk 驱动,创建的ramdisk的size,默认情况下是4m(s390默认8M),你可以查看Documentation/ramdisk.txt找到相关的描。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.