主要讲述在XC2440开发板上移植u-boot-2010.03的过程及遇到的问题,如有错误之处,谢请指正。一、移植环境
- 主机:VMWare8 -- Ubuntu10.10
- 开发板:XC2440 -- 2M Norflash 256M Nandflash
- 编译器:arm920t-eabi-4.1.2.tar
- u-boot:u-boot-2010.03
二、移植步骤
本次移植的功能特点包括:
- 支持Nandflash读写
- 支持Norflash/Nandflash启动
- 支持MTD(NAND)分区
- 支持DM9000网卡
- 支持串口xmodem协议(loadx命令)
- 支持USB下载
- 支持烧写yaffs2文件系统镜像
- 支持开机logo
- 支持快捷菜单
1、了解u-boot的主要目录结构和启动流程
u-boot主要目录说明图
u-boot的stage1代码通常放在cpu/xxx/start.S文件中,用汇编语言写成;
u-boot的stage2代码通常放在lib_arm/board.c文件中,用C语言写成。
各个部分的流程图如下:
u-boot启动流程图
2、建立自己的开发板项目
u-boot支持很多cpu,可以查看board下的目录结构,如board/samsung/目录下就是对三星一
些ARM处理器的支持,有smdk2400、smdk2410和smdk6400,但是没有smdk2440,这就需要我们建立自己的开发板项目。
(1) 2440和2410的资源差不多,主频和外设有点差别,所以我们就在board/samsung/目录下建立自己的开发板项目,取名smdk2440
# tar -xjvf u-boot-2010.03.tar.bz2
# cd u-boot-2010.03/board/samsung
# mkdir smdk2440
(2) 2440和2410的资源差不多,所以就以2410项目的代码作为模版,以后再修改
① 把smdk2410下面的文件全拷到smdk2440文件加下,然后把smdk2410.c修改为smdk2440.c,同时修改Makefile文件,把smdk2410.o修改为smdk2440.o,删除board/samsung/目录下除了smdk2440目录以外的其它目录,同时删除board/目录下除了samsung以外的其它目录。
② 进入include目录,在include/configs/目录下建立smdk2440的头文件,可以把smdk2410.h修改为smdk2440.h ,然后删掉除了smdk2440.h以外的所有文件。回到include目录,删除该目录下除了asm-arm和asm-generic以外的其它asm-xxx形式的目录。再进入asm-arm目录,删除该目录下除了arch-s3c24x0以外的其它arch-xxx形式的目录。
③ 修改u-boot的Makefile文件,指定交叉编译器为arm-inux-, 找到smdk2410_config的地方,在其下面按照smdk2410_config的格式建立smdk2440_config的编译选项。
CROSS_COMPILE ?= arm-linux-
smdk2410_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0
smdk2440_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2440 samsung s3c24x0
④ 进入cpu目录,删除该目录下除了arm920t以外的其它目录,然后进入arm920t目录,删除该目录下除了s3c24x0以外的其它目录。
⑤进入u-boot-2010.03目录,删除该目录下除了lib_arm和lib_generic以外的其它lib_xxx形式的目录。
(3)测试编译新建的smd2440开发板项目
# make smdk2440_config //如果出现Configuring for smdk2440 board...则表示设置正确
# make //编译后在根目录下会出现u-boot.bin文件,则u-boot移植的第一步就算完成了
到此为止,u-boot对自己的smdk2440开发板没有任何用处,以上的移植只是搭建了一个smdk2440开发板u-boot的框架,要使其功能实现,还需要根据smdk2440开发板的具体资源情况来对u-boot源码进行修改。
阅读(1233) | 评论(0) | 转发(1) |