Chinaunix首页 | 论坛 | 博客
  • 博客访问: 381259
  • 博文数量: 87
  • 博客积分: 983
  • 博客等级: 准尉
  • 技术积分: 685
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-25 07:20
文章分类

全部博文(87)

文章存档

2016年(1)

2015年(3)

2014年(55)

2013年(13)

2012年(15)

分类: 嵌入式

2014-01-22 19:55:45

由于本人比较菜,胆也比较小,所以先移植比较老的版本u-boot从smdk2410移植到2440板上。
移植前准备:
从内核文档“readme”可以看到这么一句话,Configuration depends on the combination of board and CPU type; all such information is kept in a configuration file "include/configs/.h".

先配置(eg: make smdk2410_config),再编译(make)。
note:  如果一个编译的时候出现段错误之类的问题,可能是编译器版本过低所致,换一个高一点的试试。

分析源码:
首先要了解u-boot的结构,分析Makefile,找出第一个文件和链接地址。或者直接make,在编译信息里找寻第一个文件和链接地址等信息。
入口是 start.S,从start.S进行分析,分析过程略(一个详细分析的链接地址 http://blog.csdn.net/slj_win/article/details/6952241)

分析完后,make distclean。

建立单板:
find -name *smdk2410* 添加相应的2440文件;grep smdk2410 * -rn 添加2440的配置.
或者直接在修改相应的2410文件为2440。

然后make smdk2440_config, make,出错: 出现arm-linux-gcc command not found 之类的,Google了下,是因为交叉编译器没有设置好,
echo $PATH可以找到交叉编译器的目录是 /usr/local/arm/4.3.2/bin
Makefile中
查找关键字 CROSS,可以看到:

# load ARCH, BOARD, and CPU configuration 
include $(obj)include/config.mk 
export ARCH CPU BOARD VENDOR SOC

# set default to nothing for native builds 
ifeq ($(HOSTARCH),$(ARCH)) 
CROSS_COMPILE ?= 
endif


改为:
CROSS_COMPILE=/usr/local/arm/4.3.2/bin/arm-linux-


make distclean
make
编译成功!
将smdk2440.h中所有关于2410(CONFIG_S3C2410、CONFIG_SMDK2410)配置改为2440的(CONFIG_S3C2440、CONFIG_SMDK2440)
make 出错,出现xxx未声明之类的错误,原因自然是内核没有2440配置的代码,按错误修改代码(主要是平台结构体)。
make
成功!


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