[原创] 搭建开发环境和使用UBOOT【下】

sjtitr   2014-7-23 23:47 楼主
搭建开发环境和使用UBOOT【下】 HELPER2416开发板助学计划 接下来是关于UBoot的使用。 根据之前的分析,接下来我们需要集中精力来学习一下UBoot的有关内容。当然了,无论是从Flash启动还是从SD启动,UBoot总是要事先准备好的。其实板子出厂的时候,Flash里已经烧好了UBoot、Kernel和文件系统,所以这部分我们就简单来,直接利用Flash中的UBoot,来通过网络启动我们的kernel和文件系统。如果板子烧成了裸机程序,没有UBoot的话,利用烧写了UBoot的SD卡启动板子也是OK的,而且利用UBoot还可以把UBoot烧写到Flash里,但是这部分内容就不是我们这次的重点,就暂且不展开详解了。 在PC上打开串口工具,然后启动开发板,在看到提示信息的时候随便拍拍键盘,启动过程就暂停了,进入了UBoot的提示符。UBoot可以支持许多的命令,可以用于读写传输数据什么的。 UBoot命令行.jpg 第一件事,能够使UBoot加载NFS中的Kernel。 首先要了解的就是Kernel是怎么被使用起来的。对于我们现在使用UBoot来说,实际上也就是把Kernel文件加载到内存的某个位置,然后跳转过去运行。那么第一件事也就是把NFS的内核文件加载到内存里啦。 准备工作,把/helper2416/boot目录下的zImage.43复制为zImage文件, 准备kernel文件.jpg 接下来需要用到的命令如下:
  1. nfs c0008000 192.168.168.168:/helper2416/boot/zImage
这就是说,把后面NFS网络地址上的文件,加载到内存c0008000的位置上了。 加载kernel.jpg 别急,你别看我执行成功了,你执行可能就失败啦,如下信息—— ==========================================================
  • Helper2416 # nfs c0008000 192.168.168.168:/helper2416/boot/test smc911x: initializing smc911x: detected LAN9220 controller smc911x: phy initialized smc911x: MAC 00:40:5c:26:0a:5b File transfer via NFS from server 192.168.168.168; our IP address is 192.168.0.1 Filename '/helper2416/boot/test'. Load address: 0xc0008000 Loading: * ARP Retry count exceeded; starting again
========================================================== 为啥呢?因为在加载文件以前,我们还需要正确配置自己的开发板的IP地址。 这就说到另外一个事了,设置参数,也可以认为自定义命令吧。 在UBoot中可以使用set命令或setenv命令设置环境参数和自定义的命令。 那么,废话少说,直接上有营养的,开发板上的UBoot已经设置好了一些参数,我们需要设置开发板的IP地址: ==========================================================
  • set ipaddr 192.168.168.100 set netmask 255.255.255.0 set serverip 192.168.168.168
========================================================== 设置完成以后,可以通过print命令或者printenv命令来观察设定值是否正确。 设置好的ip.jpg 设定OK,这次执行nfs命令吧,应该就成功了吧。 成功以后,执行如下命令,就是跳转到指定位置去运行啦:
  1. bootm c0008000
但是因为还没有配置文件系统从NFS加载,所以现在跳转还为时过早。 启动内核以前,一定要设置好内核参数。 在UBoot中,去设置bootargs就对啦 对于我们使用君益兴的板子来说,把bootargs设置成这样:
  1. set bootargs console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.168.168:/helper2416/rootfs,tcp,nolock,rsize=1024,wsize=1024 rw ip=192.168.168.100 init=/linuxrc
里面的重要内容一看就懂咯,控制台输出不用说,就那样设置,根文件系统利用nfs,加载自指定IP的指定路径,稍微有些读写参数,还要设定本机IP和init程序。 好了,有了以上的内容就足够了。所以我们把ipaddr、netmask、serverip、bootargs按照上面设定好,然后再定义一条命令:
  1. set bootcmd nfs c0008000 192.168.168.168:/helper2416/boot/zImage \; bootm c0008000
这样,执行saveenv命令就能把前面的设置都保存到Flash中,以后就不需要每次都设置一遍了。 大功告成,启个动吧! 可是不幸的是,启动过程似乎卡住了。 卡住了.jpg 之后显示 ==========================================================
  • [31/Dec/1999:16:21:10 +0000] boa: server version Boa/0.94.13 [31/Dec/1999:16:21:10 +0000] boa: server built Mar 26 2009 at 15:28:42. [31/Dec/1999:16:21:10 +0000] boa: starting server pid=71, port 80
========================================================== 过了好一阵子,最后显示
  1. nfs: server 192.168.168.168 not responding, still trying
好吧,只能一步一步查。不说废话了,以下是我发现的线索…… 首先在FC上ping开发板,一开始是通的,到上述LOG boa信息之后就ping不通了,看来是这里的问题…… Boa据说是http服务器,所以观察文件系统中的/etc/init.d/rcS,在httpd启动之后,有两条脚本命令: ==========================================================
  • /sbin/ifconfig lo 127.0.0.1 /etc/init.d/ifconfig-eth0
========================================================== 不用说,就是ifconfig搞的了,继续,检查这个ifconfig-eth0 检查这个文件,发现里面没什么不对劲的,当然它确实是在设置IP,会导致开发板和NFS的连接断开,但是看起来,从NFS启动的时候应该不会重新设置IP啊。 把脚本中的条件单独拿出来跑一下,原形毕露了,条件判断不正常! 好吧,在网上使劲搜一搜,发现问题根源了。 脚本中的判断
  1. if grep -q "^/dev/root / nfs " /etc/mtab ; then
在我们使用的这个版本已经不好用了,需要修改这一行,变更为:
  1. if grep -q "root=/dev/nfs" /proc/cmdline ; then
从内核参数上来判断,应该是再准确不过了吧,试着改一下。 变更后的脚本.jpg 再次启动,运行平稳,Qt界面也出现了。 大功告成.jpg 这次真是大功告成了。
论坛ID:sjtitr
提交时间:2014.07.23
本帖最后由 sjtitr 于 2014-7-24 09:26 编辑

回复评论 (7)

非常详细 继续努力哈
加油!在电子行业默默贡献自己的力量!:)
点赞  2014-7-24 10:04
引用: soso 发表于 2014-7-24 10:04
非常详细 继续努力哈

感谢soso姐捧场!
其实最近还是略忙,上次说的金刚狼的事,忙活到最后还是给忘了……诶,怎么搞的……
点赞  2014-7-24 10:14
引用: sjtitr 发表于 2014-7-24 10:14
感谢soso姐捧场!
其实最近还是略忙,上次说的金刚狼的事,忙活到最后还是给忘了……诶,怎么 ...

  这样专注的做一件事,也是值得表扬的

加油!在电子行业默默贡献自己的力量!:)
点赞  2014-7-24 10:15
引用: soso 发表于 2014-7-24 10:15
这样专注的做一件事,也是值得表扬的

soso姐你好懂啊!
点赞  2014-7-24 10:19
加精!
My dreams will go on... http://www.jyxtec.com
点赞  2014-7-24 10:21
引用: sjtitr 发表于 2014-7-24 10:19
soso姐你好懂啊!

呃 被加精了 请客  

加油!在电子行业默默贡献自己的力量!:)
点赞  2014-7-24 10:22
引用: soso 发表于 2014-7-24 10:22
呃 被加精了 请客


点赞  2014-7-24 10:25
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复