2012年(6)
分类:
2012-06-20 16:02:43
移植U-Boot-2010.03到友善之臂mini2440
开发环境 VMware 7.0 + Redhat En5.4
开发板 mini2440
核心 S3C2440
NAND Flash(K
NOR Flash(SST-39VF1601) 2MB
SDRAM(HY57V561620FTP) 2 *
网卡芯片 DM9000a46
注意:
Uboot2010.03相对于uboot2009.11、uboot2009.08还是有一些改动的地方,主要有:
(1)Move s3c24x0 header files to include/ asm-arm /arch-s3c24x0/ from include/
主要涉及的文件是s
(2) 添加了s
(3)在s3c24x0.h中对nand flash的控制寄存器的定义格式有一些变化
其他的移植过程和前面的uboot2009.08差不多,不过参考Tekkaman Ninja改写了Nand_read.c函数,和uboot2009.08的不一样
本文主要参考一些高手,主要是Tekkaman Ninja和 flyslightly的移植文章,我在声明中已经提到,移植U-Boot-2009.08到友善之臂mini2440 声明。
再次感谢Tekkaman Ninja和 flyslightly!
移植U-Boot.2010.03到友善之臂mini2440(一)
一、在U-Boot中建立自己的开发板类型,并测试编译。
在U-Boot中建立自己的开发板文件(以友善之臂的sbc2410x为基础)。开发板取名《mini2440》。
(1) 在工作目录/opt下解压U-Boot-2010.03
[root@localhost opt]$ tar -xjvf u-boot-2010.03.tar.bz2
(2) 进入U-Boot-2010.03的根目录,修改Makefile,使用vi或gedit编辑器
[root@localhost opt] # cd u-boot-2010.03
[root@localhost u-boot-2010.03] # vi Makefile
u-boot-2010.03的根目录下面的Makefile中为mini2440建立编译项,以sbc2410x为模板例子。
在3035行的后面加上对mini2440板子的支持!
sbc2410x_config: unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t sbc2410x NULL s
mini2440_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t mini2440 NULL s
各项的意思如下:
arm: CPU的架构(ARCH)
arm920t: CPU的类型(CPU),其对应于cpu/arm920t子目录。
mini2440: 开发板的型号(BOARD),对应于board/ mini2440目录。
NULL: 开发者/或经销商(vender),NULL为没有。
s
注意下面要与自己的开发系统一致,一般是默认arm-linux-!
CROSS_COMPILE=arm-linux-
特别注意:
在u-boot
__LIBS := $(subst $(obj),,$(LIBS)) $(subst $(obj),,$(LIBBOARD))
改为: __LIBS := $(subst $(obj),,$(LIBBOARD)) $(subst $(obj),,$(LIBS))
2 在/board子目录中建立自己的开发板mini2440目录
由于在上一步板子的开发者/或经销商(vender)中填了 NULL ,所以开发板mini2440目录一定要建在/board目录下 ,目录结构为board/mini2440。如果开发者/经销商(vender)不为NULL,则目录结构为board/verder_name/mini2440,否则编译会出错。
[root@localhost u-boot-2010.03]$ cd board
[root@localhost board]$ mkdir mini2440
[root@localhost board]$ cp -arf sbc2410x/* mini2440/
[root@localhost board]$ cd mini2440/
[root@localhost mini2440]$ mv sbc2410x.c mini2440.c
还要记得修改自己的开发板mini2440目录下的Makefile文件28行,不然编译时会出错:
[root@localhost mini2440]$ vi Makefile
修改Makefile的依赖文件
COBJS := sbc2410x.o flash.o
COBJS := mini2440.o flash.o
(如果只想支持Nandflash的话,可以将依靠文件flash.c 和flash.o删除。)
3 在include/configs/中建立开发板的配置头文件
[root@localhost mini2440]$ cd ../../.. (回到u-boot-2010.03的根目录下)
[root@localhost u-boot-2010.03]$ cp include/configs/sbc2410x.h include/configs/mini2440.h (添加mini2440的配置头文件)
4 测试编译能否成功
回到U-Boot主目录,(若之前有编译过,最好执行一下make clean) make mini2440_config,再make,编译生成u-boot.bin成功。
1、配置
[root@localhost u-boot-2010.03]$ make mini2440_config
Configuring for mini2440 board...
2、测试编译
[root@localhost u-boot-2010.03]$ make
测试通过后进行下一步
可能出现的问题:
(1) 如果出现:
$ make mini2440_config
Makefile:1927: *** 遗漏分隔符 。 停止。
请在U-boot的根目录下的Makefile的
@$(MKCONFIG) $(@:_config=) arm arm920t mini2440 NULL s
(2)如果编译时出现以下错误(这是编译器的问题,没出错就不要修改):
uses hardware FP, whereas u-boot uses software FP
修正的方法:cpu/arm920t/config.mk的21行:PLATFORM_RELFLAGS += -fno-common -ffixed-r8
#-msoft-float ,删除msoft-float项。