u-boot移植后的一些琐事和感想。。。

      u-boot基本功能移植完后,在移植网卡驱动是我遇到了很大的麻烦。前面说过,u-boot对开发人员来说一个最主要的功能就是下载操作系统和文件系统。如果网络功能不能实现的话,u-boot就变得毫无意义了。当然还可以通过usb下载,不过usb驱动更复杂,还有就是串口下载,不过速度太慢。而且以后开发应用程序时,开发板会通过nfs协议挂载主机的文件,所以网络驱动对u-boot来说非常重要。

      我的网络芯片是dm9000ep,u-boot-2009.06的dm9000驱动在这个芯片上没有正常工作。我参考网上的资料更换过很多版本驱动,也试过很多解决方法,最终还是没有把这个问题解决。

      这个问题困扰了我好几天,一点办法也没有。最终我决定更换u-boot版本。

      突然想起友善之臂的光盘里面有一个YL2440A的u-boot-1.1.6。于是我拿出来试了一下,真是意外的惊喜,这个u-boot在我的开发板上除了nor flash(nor flash型号不一样)不能用外,其他功能都能用。什么网络,usb等等都是好的。于是我剩下的工作就是移植nor flash驱动了。

     我的nor flash是sst39vf1601,参照了网上一牛人的日志http://www.loveshanxi.com/space-1-do-blog-id-7200.html,我对nor flash驱动进行了移植,一次通过。

      至此,u-boot的移植基本上完成。

      后来,我对这个u-boot做了一些改进(当然,先把logo改成了我的名字 呵呵)。主要是增加了自动判别启动环境而显示不同的启动界面的功能。因为我的板子上既有nor flash,又有nand flash。nor flash上只装了一个bootloader,主要是做调试和下载系统用。nand flash上的bootloader主要是自动引导操作系统。所以我将u-boot修改为自己判断这两种启动环境。当处在nor flash时,将显示菜单,等待用户选择操作,而不引导系统;当初在nand flash时,自动引导系统。

      今天下午,我测试我移植的u-boot是否能顺利引导linux时,结果令我大失所望。不管我是把内核下载到flash还是sdram,u-boot都不能将其引导。然后不得不回过头去分析u-boot引导内核部分的代码。在代码里遨游了一个下午,还是一点收获都没有。

      同样的一个内核(2.6.29的,友善的网上下的),用友善的vivi就能引导,用我的u-boot就不行,停止“start kernel....."就不动了,改来该去都不行。这时我算是深刻体会了一个网友的一段话:

       “这就有点土了。没有仿真器,没有打印信息,我和mini2440之间又不能通过脑电波交流…冥思苦想中,我进入了准无意识状态,大脑在迷惘,手指在不停地用NOR或者NAND启动mini2440。”

       唉,穷人就是不行啊,想想那些大公司的人,用的都是几万块的仿真器,遇到这些问题还不是三两下就解决了,而我们这些没钱的就只能在这儿冥思苦想了。

      后来实在没办法,只能将u-boot启动信息 google一下,居然很多人都遇到了我这样的情况,而且用的都是友善的内核。原来友善的人在移植这个内核时修改了s3c2440的id号,而u-boot是用的是三星官方的id号,u-boot和内核定义的cpu ID不一致,所以内核无法启动。

      这时候我不得不问候一下友善之臂公司那些技术人员的家人了,移植一个内核还做这种手脚,使其只能运行在友善之臂的板子上,而且只能由它们提供的vivi进行引导。不知道他们这样做是有意的还是无意的,反正是浪费了我一下午的时间。

     当然,对内核进行修改后,重新编译后,一切问题都解决了。到这里,我移植的这个u-boot才算彻底完美了。

     总的来说这次u-boot的移植彻底让我体会到了搞嵌入式开发特别是搞硬件驱动的难度,问题总是千奇百怪层出不穷。本来还想接下来就移植linux内核的,下一步再把google的androd也移植到我的板子上去,想想还是算了,还是先踏踏实实的学学基本功吧。u-boot基本上算是裸机代码,不带操作系统的,什么进程线程的一点也没牵涉到。想想linux内核的复杂结构,linux驱动的开发难度,我想我现在的水平完全不行。还是得先耐心学习一下这方面的基础。

     希望以后搞系统移植时,能自己code,不能总是一味google了,毕竟google的都是别人的,自己其实还是一点都不会,再说有些问题是google也解决不了的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值