uboot环境变量(设置bootargs向linux内核传递正确的参数)(

本文介绍了如何设置U-Boot的环境变量`bootargs`,以便支持通过nfs启动Linux内核并进行程序测试。通过设置`root=/dev/nfs`、`nfsroot`、`ip`等相关参数,实现了内核从nfs根文件系统正常启动,并成功挂载。同时,文章也提到了其他关键环境变量如`bootcmd`的作用及其设置方法。
摘要由CSDN通过智能技术生成
 这是我uboot的环境变量设置,在该设置下可以运行initram内核(从内存下载到nandflash再运行),但是运行nfs根文件系统的时候一直出错,各种错误。查看了很多资料后猜想应该是uboot传递给linux内核的参数有问题,也就是bootargs的设置有问题。

#printenv

bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200 rootfstype=yaffs2 rw mem=64M

bootcmd=nand read 0x32000000 0x60000 0x300000; bootm 0x32000000
bootdelay=3
baudrate=115200
ethaddr=08:00:3e:26:0a:5b
ipaddr=192.168.1.110
serverip=192.168.1.100
netmask=255.255.255.0
stdin=serial
stdout=serial
stderr=serial
ethact=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 down
IP-Config: Guessing netmask 255.0.0.0
IP-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.216
eth0: link up, 10Mbps, half-duplex, lpa 0x0021
Looking up port of RPC 100005/1 on 10.103.4.216
VFS: Mounted root (nfs filesystem) on device 0:11.
Freeing init memory: 128K

Processing /etc/profile... Done

#

   最后实现了内核正常启动,nfs根文件系统成功挂载(此时烧写在nandflash中的initram根文件系统不能正常启动了,需改回到上面的最初的设置才行)。此时的环境变量如下所示:

[u-boot@lhc]#printenv
bootdelay=3
baudrate=115200
netmask=255.255.255.0
ethact=dm9000
ethaddr=00:01:02:03:04:05
ipaddr=10.103.4.211
serverip=10.103.4.216
bootcmd=nand read 31000000 200000 600000;bootm 31000000
bootargs=root=/dev/nfs rw nfsroot=10.103.4.216:/nfsroot/rootfs ip=10.103.4.211 console=ttySAC0
stdin=serial
stdout=serial
stderr=serial

Environment size: 324/131068 bytes

 

****************************************************************************************************************************************************************************************************

                                          以下内容为网上资料

**************************************************************************************************************************************************************************************************** 

   编好了u-boot,但是如何来使用确不是那么简单的,u-boot的环境变量经常设置错误而导致内核启动失败。

    u-boot的环境变量是使用u-boot的关键,它可以由你自己定义的,但是其中有一些也是大家经常使用,约定俗成的,有一些是u-boot自己定义的,更改这些名字会出现错误,下面的表中我们列出了一些常用的环境变量:

环境变量

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值