加入收藏 | 设为首页 | 会员中心 | RSS
您当前的位置:首页 > Linux技术 > Linux嵌入式

成功移植U-boot-1.2.0到S3C2410

时间:2008-06-06 11:44:49  来源:  作者:

前段时间移植了vivi-0.1.4,也对源代码进行了解析学习。原本的想法是给vivi增加tftp功能,那么就需要写cs8900a驱动(我用的网卡芯片是CS8900A-CQ3Z),然后呢实现tftp协议,最后添加到vivi支持的命令集中。这部分工作如果从头开发,没有必要,因为U-boot就提供了tftp功能,可以借鉴,把相关代码移植到vivi下,这样vivi就具备了tftp下载功能。所以,准备先移植uboot,学习一下。vivi和 uboot互相利用,进行功能完善和理解的深入。
 
【备注: 2007年末就是专心研究bootloader相关技术,以vivi和U-boot进行对比研究,是一个很好的学习思路。两者可以同时进行,互相借鉴,有助于问题的解决。这仅仅是学习的方法,并不是工作开发的方法。毕竟工作中是没有太多的时间让你细致的研究相关的代码的。工作中就是要尽可能快的寻找一切可以有效利用的资源,然后整理吸收,在这个高度上完成自己的工作,绝对不能自大的一切从头做起。】
 
    下面只关注移植流程和解决方案,自己所作的工作量很少,结合的代码分析也比较少,主要解决出现的问题。后续的工作中,会结合uboot源代码分析学习。继续加深对bootloader技术的认识!
 
一、前言
 
    s3c2410在国内还是用的很广泛的,所以资料相对比较多。uboot对基于nand flash启动也提供了支持,相关的移植步骤和资料也比较多。我推荐的方法还是通过读patch来分析解决移植问题。这里主要提到几个参考资料:
 
1、openmoko
 
    网上原创性的解决方案,估计大多数源于openmoko。看看网上那些资料,所用的源代码和思路无一不是来自这里的patch,最多根据自己的开发板做了少许的改动。现在把openmoko的资源列表如下:
 
    wiki openmoko主页网址:http://wiki.openmoko.org/wiki/Main_Page
    wiki openmoko bootloader:http://wiki.openmoko.org/wiki/U-boot/zh_cn
    wiki openmoko uboot patches:http://svn.openmoko.org/trunk/src/target/u-boot/patches/
 
    上面的资源非常丰富,只要有效的利用,能解决遇到大部分通常的问题。
 
2、嵌入式中国 http://www.armchina.cn/default.asp
 
    北邮的hiboy在u-boot-1.2.0的移植上有不少独创性的工作。
 
3、lufuchong http://www.cnitblog.com/luofuchong/
 
    lufuchong也做了很多的工作,利用了hn的keety的补丁。不过我没有找到他的补丁,对其关于bootm的理解还是赞一个。
 
    其他的资料就不一一列出了,最有价值的就是上面三位的工作了。
 
    利用patch是很好的方法,当然我不是说直接打上补丁,而是阅读patch,通过patch把移植的思路和步骤理清理顺,然后形成自己的理解,最后可以深入源代码,增加自己的贡献。如果说我在s3c2410上做了些工作,那就是强调和利用patch,好的patch是最好的资源,即使没有详细的说明,有一定移植经验的人也很容易借鉴,并最终成功。如果对patch不了解,就先看一下我在去年暑假翻译的一篇文章:http://blog.chinaunix.net/u/21948/showart_157145.htmlLinux下patch的制作和使用》。需要注意的是,在制作patch时,一定要用distclean清理一下源文件树,否则的话,制作的patch质量上可是不敢恭维。既然要做,就要做好一些。hiboy提供的patch中,就犯了这个错误,希望不是习惯问题。
 
二、准备工作
 
     1、选择版本
 
     版本虽然不是越新越好,但是新版本提供的特性较多,自己能够学习到的内容也比较多,所以还是选择最新版本。
 
[armlinux@lqm bootloader]$ ftpftp.denx.de
Connected toftp.denx.de.
 

 
    还是从pub/u-boot下载最新版本,现在正式发布版是u-boot-1.2.0。以后就以此版本进行学习和开发。解压等工作不必细说。
 
    为了制作patch的方便,解压之后的u-boot-1.2.0命名为u-boot-1.2.0.orig,然后复制做一个开发版u-boot-1.2.0。为了在命令行下操作方便,可以使用软链接。如下:
 
[armlinux@lqm bootloader]$ cp -rf u-boot-1.2.0.orig/ u-boot-1.2.0
[armlinux@lqm bootloader]$ ln -s u-boot-1.2.0.orig/ orig
[armlinux@lqm bootloader]$ ln -s u-boot-1.2.0 develop
 

 
     这样,使用TAB键就方便多了。关于要删除这些链接文件,可能会遇到一个小的bug。看一下我的解决方案:http://blog.chinaunix.net/u/21948/showart_385132.html
 
    2、交叉编译工具链
 
    u-boot-1.2.0的版本还是比较高的,去年暑假自己做过交叉编译工具链,耗费工作量太大。兴趣也不在那里,所以还是选择已有的质量较高的工具链。还是到ARM的官方网站上找,可以找到CODESOURCERY公司提供高质量的GNU Toolchain,你可以从这里下载:http://www.codesourcery.com/gnu_toolchains/arm/download.html。最新版已经是arm-2007q1。我把交叉编译工具都放到/usr/local/arm/下面了,现在只有两个:
 
[armlinux@lqm arm]$ tree -L 1
.
|-- 2.95.3
`-- arm-2007q1

2 directories, 0 files
 

 
    大多数非最新版使用2.95.3可以解决了,新版本基本采用arm-2007q1。这两个工具都是比较成熟好用的,可以避免出现不少问题。
 
    3、硬件配置说明
 
    实验箱还是深圳Embest的EDUKIT-III,资源如下:
 
   

来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
相关文章
    无相关信息
栏目更新
栏目热门