Chinaunix首页 | 论坛 | 博客
  • 博客访问: 28331
  • 博文数量: 8
  • 博客积分: 55
  • 博客等级: 民兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-21 16:54
文章分类

全部博文(8)

文章存档

2012年(1)

2011年(7)

我的朋友

分类: 嵌入式

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公社网站()  原文链接:

阅读(500) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~