ARM仿真器-foxICE 设为首页   |   加入收藏夹   |   网站地图         
  站内搜索:
 
http://www.foxice.net
最新下载_foxICE
ARM7TDMI R3内核
ARM7EJS内核
ARM946E-S内核
ARM966E-S内核
ARM9TDMI内核
ARM940T内核
ARM指令集速查卡
ARM925T内核(TI925T)

更多 >> 

 技术专栏RSS订阅

   首页>技术专栏>U-boot>U-boot移植日记(s3c44b0)

U-boot移植日记(s3c44b0)

摘自: http://bbs.chinalinux.com/blog.php?tid=176&starttime=0&endtime=0

点击下载
高速程序代码下载速度200KBytes/S以上内置对于GDB Remote Serial Protocol协议支持FoxICE仿真器完美支持GDB 的 File IO扩展协议免费赠送Eclipse for ARM V 3.2.1集成开发环境支持Nand Flash( S3C2410或 S3C2440可任 选一种 )的烧写,支持超低电压的处理器调试, 目标范围为:0.65 ~ 5.5V
详细信息 >>

        几经艰辛,终于基本完成了 u-boot 在 s3c44b0 的移植工作,在些记录一下在移植过程中所碰到的困难和解决方法(一些心得),作为日后参考之用,也希望能够帮到其它有需要的人 ^_^ 。
1. 来由:
在我搞完 ucos 后 ( 本来我是想学 uclinux 的,不过在对系统一无所知的情况下,还是先学一下 ucos 比较实际 ^_^ ,从中也可以对系统有个清晰的概 念 ) ,我意识到要搞系统的话一个功能强大的 bootloader 是必不可少的,而我的板上自带的是 armboot (其实我个人觉得应用在 ARM 上的话 armboot 已经足够了,毕竟 u-boot 也是从 armboot 中发展过来的,纯属个人意见),如果我的板上自带光盘有已经移植好的 armboot 源代 码供我参考的话,我想我也不会花这么多时间去搞 u-boot ,可恨的是我的光盘上只有 armboot.bin 这个二进制文件,而没有源文件,没办法,我下 定主意自己搞一个,考虑了一番后我选择了 u-boot ,毕竟参考资料相对比较多,再我学完 u-boot 后再回头看 armboot ,简直是一个炉里出的饼, 这是后话。
2. 准备:
          说是容易,做起来却挺难。因为编译 u-boot 要在 linux 环境下,而不能在我们平时所熟悉的 ads 下那么直观。首先要建立好交叉编译环境,这个交叉编 译环境可以自己来做,不过完全没必要,而且难度也挺大,一般是下载人家编译好的工具。我刚开始在这里就郁闷了很久,现在会了以后觉得原来就是这么简单,在 些我把方法说清楚,希望不会再有人为这个问题郁闷了 ^_^ :
1 )在网上下载一个 u-boot 源代码,我用的是 1.1.2 版本的,最新的应该是 1.1.4 的吧,其实差不多,那就像我那样下载一个 1.1.2 版本的吧。 把源文件解压,这个应该不用说了吧,学过 linux 的人应该会,不会的话我想你继续做下去也困难,那就先装个 linux 用下吧(我用的是 RedHat 的, 哦对了,编译程序是需要 gcc 编译器的,所以安装方式一定要选择工作站哦 ^_^ )。好了,解压后你发现在 u-boot.1.1.2 目录下有 Makefile 这个文件吧?让我们看看它里面的内容,最简单的方法就是 vi Makefile 了。我们要看的是它选择的是哪一个交叉编译器。可以看到这一项:
ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-linux-
看到吧,也就是说这里所用的交叉编译器是 arm-linux-gcc 了,( u-boot 默认是用这个的,也有用 arm-elf-gcc 的,网上有个工具包 arm-elf-tools-20030314.sh, 我试过用它来编译,没有问题,顺便提一下, arm-elf-gcc 是用来编译 uClinux 内核的 工具来的)那你就下载一个 arm-linux- 的交叉编译器吧,我是在网上下载 cross-2.95.3.tar.bz2 这个文件,然后解压得到 2.95.3 版本的交叉编译工具的,具体设置如下(参考网上资料):
2 )在宿主机上建立 arm-linux-gcc 交叉编译环境
在 RedHat Linux 系统下以 root 用户登录,
将 cross-2.95.3.tar.bz2 文件复制到 / 目录下,
安装:
# tar jxvf cross-2.95.3.tar.bz2
这个命令会在你的 /usr/local/arm/2.95.3 目录下安装 arm-linux-gcc 交叉编译程序,
然后在 PATH 变量中添加一项: /usr/local/arm/2.95.3/bin.
[root@localhost root]# export ATH=/usr/local/arm/2.95.3/bin:$PATH

把 PATH=/usr/local/arm/2.95.3/bin:$PATH 添加到 /ETC/bash_profile 文件中
或者
在 /etc/bashrc 文件中添加一项 :
export PATH=/usr/local/arm/2.95.3/bin:$PATH
测试:
把终端关闭,重新打开后执行如下命令:
# arm-linux-gcc –v
好了,建立好交叉编译环境后可以试着编译 u-boot 了

这里提几个注意点:
1. 不可用 winRAR 解压 u-boot-1.1.2.tar.bz2 或 u-boot-1.1.2.tar.gz 这种文件(就个可能新手会犯,一般熟悉 linux 命令的人应该都不会这样做吧,在此还是要提一下)
2. 可能下载的文件有一些中间文件会阻碍编译的运行,所以在编译前最好来个彻底清除,在 u-boot.1.1.2 目录下运行命令: make distclean (其实这个命令在 Makefile 文件下就有)我当时为这个问题郁闷了很久,希望你们不会像我这样 ^_^ ) ;
3 ,有些人为了方便想在 cygwin 下编译,但是经常在网上看到在这个虚拟平台下编译有很多的问题,要配置的东西也多,而且好像我用过那个 vi 没有 linux 环境下的好用,所以最好还是不要用这个软件了吧,如果你真的离不开 windows 的话可以像我这样装个虚拟机,在虚拟机下再装 linux 的系 统,具体参考这个网站): http://fedora.linuxsir.org/doc/vmware/
3 )好了,现在开始测试你的交叉编译器搞好没有。在 u-boot. 1.1.2 目录下执行如下命令:
1)Make distclean ( 再次强调 )
2)Make B2_config( 随便再个现成的试试 ^_^)
3)Make ( 没错的话应该会生成 u-boot.bin 文件,发生错误的话也不怕,只要细心看一下哪里错就行了, gcc 碰到错误后会退出编译,所以可以一个个错误来 改,一般的问题都是没找到编译器(可能你没装或者装的不对,例如人家用的是 arm-linux- 而你装的是 arm-elf- ,如果你装了的话看看你的环境 变量设好了没有,前面有讲,如果不关编译器的事的话那就再看看,一般是文件的后缀不对,有些文件后缀是大写的,例如 start.S 但是如果你的是 start.s 小写的话那当然找不到(解决方法很,把它改成大写就行了)。细心看吧,不用怕,它都有注明路径,很容易可以找到的) )
如果以上步骤都无误的话那么恭喜你,你的交叉编译环境可以用来编译你的 u-boot 源代码了,可以开始以下阶段。

3. 移植:
说时迟那时快,现在开始移植工作 ( 以下是我一步步重新做一遍,力求说得详细点,感谢我吧 ^_^)
我以 B2 板子的程序做为模板来做 .
#cd u-boot- 1.1.2
#cd board
#cp -R dave myboard ( 这是我取的板子名字,可以换上你的,但是后面的也要跟着来换哦 ^_^)
#cd myboard
#mv B2 myboards 3c 44b0 ( 自己取个板子名 )
#cd myboards 3c 44b0
# mv B2.c myboards 3c 44b0.c
修改 myboards 3c 44b0 里面的 Makefile, 把 B2 改成 myboards 3c 44b0 ,编译时如果报的其它类似找不到 B2 的错误也是把相应的 B2 改成 myboards 3c 44b0 来处理。

1 )其中的 myboards 3c 44b0.c 文件是板的初始化代码,看一下就知道,根据你的板上自带的 44binit.s

页首  下一页

立即下载:
点击下载
相关文档
U-Boot在44B0X开发板上的移植以及代码分析
uboot移植到S3C44B0X开发板的经历
S3C44B0\U-Boot的启动流程及移植
U-Boot在S3C2410上的移植
uboot在ARM s3c2410上移植过程
VxWorks 的bootrom 到u-boot 的移植心得
嵌入式系统中U-Boot基本特点及其移植方法
下载说明:
  1. 未经本站明确许可,任何网站不得非法盗链及抄袭本站资源!
 

 


首页 | 产品介绍 | 技术支持 | 下载中心 | 技术专栏 | 关于我们 | 联系我们
电话:86-755-82798083   82796301   传真:86-755-82799007    Email:sales@foxice.net   sales6@foxice.net
在线咨询:QQ:346466907   MSN:sales6@foxice.net   ini3000@msn.com

© 2006 Foxice.net 版权所有