分类: LINUX
2010-04-26 22:03:35
首先认识一下uboot的功能:
Uboot主要是引导加载程序,可以传递启动参数给内核。不过他的启动方式有两种:从nor flash中启动和nand flash中启动。从nor flash中启动不需要4K的内存就直接能在flash中启动而nand flash则不能,需要4K内存,完成以下:初始化存储器端口
移植uboot能完成的功能:利用串口下载,usb下载,tftp传输文件,烧写文件系统cramfs,yaffs2,jaffs。
移植的功能有:
网卡、nand、串口、存储器初始化
移植前的准备:
1. uboot源码下载:到:
2. 交叉编译工具:因为刚开始学习arm,对于它的编译环境还不了解所以走了不少弯路。开始交叉编译时,总是出错,这时候就要看看是不是你的交叉编译器是不是完整的。通常用crosstools生成的交叉编译器是完整的,否则可能会出现错误。比如说:不支持软浮点功能;
3. 设置交叉编译环境:
export PATH=$PATH:/usr/local/arm/3.4.5/bin(根据你的交叉编译器路径进行设置),最后用arm-linux-gcc –v命令检查一下交叉编译器版本是不是有问题;
用Nand flash烧写的功能实现分为两种:1)nand legecy的旧的烧写形式2)采用nand_read.C的烧写形式。
采用第一种方式需要主要修改的文件:
1. 顶层根目录下Makefile文件修改:
1)#为你的开发板建立编译项以sky2440为例
sbc2410x_config: unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t sbc2410x NULL s3c24x0
sky2440_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t sky2440 NULL s3c24x0
各项的意思如下:
arm: CPU的架构(ARCH)
arm920t: CPU的类型(CPU),其对应于cpu/arm920t子目录。
sky2440: 开发板的型号(BOARD),对应于board/sky2440目录。
NULL: 开发者/或经销商(vender)。 NULL
s3c24x0: 片上系统(SOC)。
2) 同时在“ifndef CROSS_COMPILE ”之前加上自己交叉编译器的路径,比如我使用crosstool-0.43制作的基于2.6.24内核和gcc-4.1.1-glibc-2.3.2的ARM9TDMI交叉编译器,则:
CROSS_COMPILE=/usr/local/arm/3.4.5/bin/arm-linux -(根据具体情况修改);
2. 如果开发者/或经销商设置成NULL时,在/board子目录中建立自己的开发板sky2440目录 即可完成,否则,要先建立开发者或经销商目录再在此目录下建立开发板目录。
3.复制sbc2410x目录下文件到