分类: 嵌入式
2011-08-29 23:40:07
U-boot 201103rc1在s3c2440上的移植
[日期:2011-04-05] 来源:Linux社区 作者:xautfengzi
移植环境
•主机:Oracl VM VirtualBox + RedHat9.0
•开发板:FL2440
•编译器:arm-linux-gcc-4.3.2
•u-boot:201103rc1
步骤
u-boot的移植过程在网上都有,大致差不多。我是参考u-boot1.3.4的移植来做的。2011版跟1.3.4版在目录结构上做了一点更改,以前的/cpu目录更改到/arch/arm/cpu。所以移植步骤如下:
1.在board/samsung/目录下拷贝一份smdk2410,命名为fl2440.
2.将fl2440目录下的smdk2410.c改名为fl2440.c
3.修改Makefile内容,将smdk2410.o改为fl2440.o
4.在include/configs/目录下拷贝一份smdk2410.h,命名为fl2440.h
5.编辑u-boot根目录下的Makefile,指定CROSS_COMPILE ?= 为arm-linux-
6.在Makefile中建立编译选项格式
1.fl2440_config :
unconfig
) $(@:_config=)
arm arm920t fl2440 samsung s3c24x0
此版本的Makefile中找不到smdk2410_config这个配置,所以我是写在了smdk6410_config后面了。后来查了一下目录结构,发现smdk2410_config放在了boards.cfg这个文件中了,所以在这里面加应该也是可以的。
7.接下来就是敲make fl2440_config了, 到出现Configuring for
fl2440 board…,说明配置好了。
8.然后敲make,生成u-boot.bin。
遇到的问题及解决办法
•由于我的内核使用3.4.1版的crosstool编译的,开始的时候我也是用此版本编译u-boot,所以在make的时候出现了这个错误,"...user
hardware FP whereas u-boot user software
FP..."。这是关于硬浮点和软浮点的问题,因为u-boot使用的是software FP,而编译器使用的是hardware
FP,所以会出现问题。网上有部分帖子是说把arch/arm/cpu/arm920t/config.mk里面的-msoft-float改为-mhard-float,但是好像arm920t是没有浮点运算协处理器的,所以我找到了4.3.2版使用software
FP的crosstool才将此问题解决。
•还是要注意环境变量的问题,以前使用3.4,1的编译器,改为4.3.2后要修改环境变量。这个要盯着make的提示信息看,如有必要重定向到文件中更查看。
•提示get_sp()这个函数没有定义,根据提示找到源文件,发现是有些宏没有定义导致这个函数没有被编译,我直接强制让其总是被编译,最后终于通过。hoho~,不知道会不会有啥副作用。
至此,u-boot移植的框架已经搭好,接下来要根据具体的硬件环境来修改u-boot的源码。
本篇文章来源于 Linux公社网站() 原文链接: