buf

BE something YOU love and understand
posts - 94, comments - 35, trackbacks - 0, articles - 2
   :: 首页 :: 新随笔 :: 联系 ::  :: 管理

终于把U-Boot移植到44B0开发板了,暂时的

Posted on 2007-12-04 01:03 buf 阅读(2835) 评论(3)  编辑 收藏 引用 所属分类: Embedded
真是不容易,没想到问题出在我的交叉编译环境上。最初我在cygwin下用arm-elf-tools编译u-boot-1.1.1,一切都很顺利。因为厂家已经提供了u-boot-1.1.1的源码,所以我尝试着升级到u-boot-1.1.4,然而在cygwin下编译时遇到很多问题。

于是,我装了Ubuntu7.04,交叉编译环境使用arm-linux-gcc(因为注意到针对ARM体系结构,uboot的Makefile中默认选择这个)。编译没有遇到太大困难,可是,烧写到Flash以后总是不能工作。上电后串口有输出,最后输出一个"Warning, bad crc……"然后就死机了。添加一些调试信息后我发现问题出在/u-boot/lib_arm/board.c文件中,在devices_init()函数中一个内存申请失败。这个问题困扰了我有两天的时间,后来我用蹩脚的英文表达搜索到有人也遇到同样的问题:http://www.nabble.com/Arm-linux-gcc-malloc-get-failure-while-arm-elf-gcc-ok-p8662780.html,但是没有后续解答。为了看看是不是他说的这么回事,我试着用arm-elf-gcc编译了一下,果真如此!

我看了一下U-Boot的官方文档DULG-tqm8xxl.pdf,发现使用的交叉编译环境为ELDK,而这个ELDK中有个叫crosstool的东西。这个和前面的arm-linux-gcc、arm-elf-gcc是什么联系,有什么区别,我现在还搞不清楚。有一篇arm-elf与arm-linux的区别的文章让我对这一问题多了一些了解。唯一明确的是现在用arm-elf-gcc编译uboot是没有问题的,这也算是个小小的收获吧,和大家分享一下。如果有遇到我说的melloc的问题,可以参考一下。

arm-elf-tools可以从http://opensrc.sec.samsung.com/download.html获得,我这里用的是arm-elf-tools-20040427.sh,GCC 2.95.3 based。

Feedback

# re: 终于把U-Boot移植到44B0开发板了,暂时的  回复  更多评论   

2008-12-29 20:35 by cora
crosstool就是把你的binutils gcc glibc 内核等文件一起自动编译,很方便,而且很多组合,我用的gcc好像就是4.0.1 glibc好像是2.5.6xp下没法看我的linux

# re: 终于把U-Boot移植到44B0开发板了,暂时的  回复  更多评论   

2008-12-29 21:52 by buf
@cora
crosstool不就是交叉工具链么... 测试了一下snapgear提供的arm-linux-tools20070708,只需要修改下examples/Makefile就可以编译u-boot-1.1.4,hello_world.bin运行也没有问题,不过u-boot没测试过。

# re: 终于把U-Boot移植到44B0开发板了,暂时的  回复  更多评论   

2009-09-29 21:46 by brucewoo
遇到同样的问题,不过我的是uboot1.1.6版本,用你的方法解决不了问题
只有注册用户登录后才能发表评论。