5218|7

603

帖子

1

TA的资源

纯净的硅(中级)

楼主
 

搭建开发环境和使用UBOOT【下】 [复制链接]

本帖最后由 sjtitr 于 2014-7-24 09:26 编辑

搭建开发环境和使用UBOOT【下】
HELPER2416开发板助学计划

接下来是关于UBoot的使用。
根据之前的分析,接下来我们需要集中精力来学习一下UBoot的有关内容。当然了,无论是从Flash启动还是从SD启动,UBoot总是要事先准备好的。其实板子出厂的时候,Flash里已经烧好了UBoot、Kernel和文件系统,所以这部分我们就简单来,直接利用Flash中的UBoot,来通过网络启动我们的kernel和文件系统。如果板子烧成了裸机程序,没有UBoot的话,利用烧写了UBoot的SD卡启动板子也是OK的,而且利用UBoot还可以把UBoot烧写到Flash里,但是这部分内容就不是我们这次的重点,就暂且不展开详解了。

在PC上打开串口工具,然后启动开发板,在看到提示信息的时候随便拍拍键盘,启动过程就暂停了,进入了UBoot的提示符。UBoot可以支持许多的命令,可以用于读写传输数据什么的。


第一件事,能够使UBoot加载NFS中的Kernel。

首先要了解的就是Kernel是怎么被使用起来的。对于我们现在使用UBoot来说,实际上也就是把Kernel文件加载到内存的某个位置,然后跳转过去运行。那么第一件事也就是把NFS的内核文件加载到内存里啦。
准备工作,把/helper2416/boot目录下的zImage.43复制为zImage文件,


接下来需要用到的命令如下:
  1. nfs c0008000 192.168.168.168:/helper2416/boot/zImage
复制代码


这就是说,把后面NFS网络地址上的文件,加载到内存c0008000的位置上了。


别急,你别看我执行成功了,你执行可能就失败啦,如下信息——
==========================================================
  • 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命令来观察设定值是否正确。


设定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中,以后就不需要每次都设置一遍了。

大功告成,启个动吧!

可是不幸的是,启动过程似乎卡住了。


之后显示
==========================================================
  • [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
复制代码


从内核参数上来判断,应该是再准确不过了吧,试着改一下。


再次启动,运行平稳,Qt界面也出现了。


这次真是大功告成了。

论坛ID:sjtitr
提交时间:2014.07.23


最新回复

呃 被加精了 请客     详情 回复 发表于 2014-7-24 10:22
点赞 关注

回复
举报

2万

帖子

74

TA的资源

管理员

沙发
 
非常详细 继续努力哈
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

感谢soso姐捧场! 其实最近还是略忙,上次说的金刚狼的事,忙活到最后还是给忘了……诶,怎么搞的……  详情 回复 发表于 2014-7-24 10:14
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 

回复

603

帖子

1

TA的资源

纯净的硅(中级)

板凳
 
soso 发表于 2014-7-24 10:04
非常详细 继续努力哈

感谢soso姐捧场!
其实最近还是略忙,上次说的金刚狼的事,忙活到最后还是给忘了……诶,怎么搞的……

点评

这样专注的做一件事,也是值得表扬的  详情 回复 发表于 2014-7-24 10:15
 
 
 

回复

2万

帖子

74

TA的资源

管理员

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

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

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

soso姐你好懂啊!  详情 回复 发表于 2014-7-24 10:19
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

603

帖子

1

TA的资源

纯净的硅(中级)

5
 
soso 发表于 2014-7-24 10:15
这样专注的做一件事,也是值得表扬的

soso姐你好懂啊!

点评

呃 被加精了 请客  详情 回复 发表于 2014-7-24 10:22
 
 
 

回复

554

帖子

0

TA的资源

版主

6
 
加精!
 
个人签名My dreams will go on...
http://www.jyxtec.com
 
 

回复

2万

帖子

74

TA的资源

管理员

7
 
sjtitr 发表于 2014-7-24 10:19
soso姐你好懂啊!

呃 被加精了 请客  

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

603

帖子

1

TA的资源

纯净的硅(中级)

8
 
soso 发表于 2014-7-24 10:22
呃 被加精了 请客


 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表