嵌入式linux之我行全集 详细uboot移植 下载
?嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(一)?2009-11-27 10:46:35
分类:?嵌入式
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。
共享资源,欢迎转载:
一、移植环境
主 ?机:VMWare--Fedora 9
开发板:Mini2440--64MB Nand,Kernel:
编译器:arm-linux-gcc-4.3.2.tgz
u-boot:u-boot-2009.08.tar.bz2
二、移植步骤
本次移植的功能特点包括:
支持Nand Flash读写
支持从Nor/Nand Flash启动
支持CS8900或者DM9000网卡?
支持Yaffs文件系统?
支持USB下载(还未实现)
1.?了解u-boot主要的目录结构和启动流程,如下图。
?
??? u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言写成;
??? u-boot的stage2代码通常放在lib_xxxx/board.c文件中,他用C语言写成。
??? 各个部分的流程图如下:
?
?
?
2. 建立自己的开发板项目并测试编译。
???目前u-boot对很多CPU直接支持,可以查看board目录的一些子目录,如:board/samsung/目录下就是对三星一些ARM处理器的支持,有smdk2400、smdk2410和smdk6400,但没有2440,所以我们就在这里建立自己的开发板项目。
?
1)因2440和2410的资源差不多,主频和外设有点差别,所以我们就在board/samsung/下建立自己开发板的项目,取名叫my2440
#tar -jxvf u-boot-2009.08.tar.bz2????//解压源码#cd u-boot-2009.08/board/samsung/????//进入目录#mkdir my2440????????????????????????//创建my2440文件夹#cp -rf smdk2410/* my2440/???//将2410下所有的代码复制到2440下
#cd my2440???????????????????//进入my2440目录
#mv smdk2410.c my2440.c??????//将my2440下的smdk2410.c改名为my2440.c
#cd ../../../????????????????//回到u-boot根目录#cp include/configs/smdk2410.h include/configs/my2440.h?//建立2440头文件#gedit board/samsung/my2440/Makefile???//修改my2440下Makefile的编译项,如下:COBJS????:=?my2440.o flash.o??//因在my2440下我们将smdk2410.c改名为my2440.c#gedit Makefile
CROSS_COMPILE ?= arm-linux-????????//指定交叉编译器为arm-linux-gcc
?
smdk2410_config????:????unconfig???//2410编译选项格式????@$(MKCONFIG) $(@:_config=)?arm arm920t smdk2410 samsung s3c24x0
?
my2440_config????:????unconfig?????//2440编译选项格式????@$(MKCONFIG) $(@:_config=)?arm arm920t?my2440 samsung s3c24x0
?
*说明:arm??? :CPU的架构(ARCH)
?????? arm920t:CPU的类型
?????? my2440 :对应在board目录下建立新的开发板项目的目录
?????? samsung:新开发板项目目录的上级目录,如直接在board下建立新的开发板项目的目录,则这里就为NULL
?????? s3c24x0:CPU型号
*注意:编译选项格式的第二行要用Tab键开始,否则编译会出错4)测试编译新建的my2440开发板项目
#make my2440_config?//如果出现Configuring for my2440 board...则表示设置正确
#make?//编译后在根目录下会出现u-boot.bin文件,则u-boot移植的第一步就算完成了#gedit?cpu/arm920t/u-boot.lds
OUTP