u-boot2010.06的移植(1)——准备移植

来源:互联网 发布:软件原型设计 编辑:程序博客网 时间:2024/06/09 19:47
由于本人比较菜,胆也比较小,所以先移植比较老的版本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
成功!
0 0