[fl2440的uboot2010.09移植1]

一、移植环境

  • 主 机:VMWare--Ubuntu9.10
  • 开发板:Mini2440--64MB Nand
  • 内核:Kernel:2.6.31.23
  • 编译器:arm-linux-gcc-3.4.5.tgz
  • u-boot:u-boot-2010.09.tar.bz2

查看内核版本:

  cat /proc/version

查看交叉编译器的版本:

 arm-linux-gcc -v

二、移植步骤

1. uboot结构及启动过程

uboot最主要的目标是:启动内核,从flash中读出内核,然后启动。主要有两个阶段,包括stage1stage2

[fl2440的uboot2010.09移植1]_第1张图片
1.1 stage1阶段

u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言写成;主要对底层硬件进行初始化,实现的功能有如下几点:
a. 设置SVC模式
b. 关看门狗
c. 屏蔽中断
d. 初始化SDRAM
e. 设置栈
f. 时钟
g. 将flash中的代码拷贝的sdram中
h. 清除BSS段
i. 调用_start_armboot(这个是C函数,然后跳转到stage2步骤中,该函数在arch/arm/lib/board.c中)

1.2 stage2阶段

u-boot的stage2代码主要用C语言写成,实现了一些外设的功能,包括网卡,USB,串口.....等外设,stage2执行的第一个函数是start_armboot(该函数很重要),具体实现的功能可以查看代码。

2. 测试自己的开发板项目并编译

目前u-boot对很多CPU直接支持,可以查看board目录的一些子目录,如:board/samsung/目录下就是对三星一些ARM处理器的支持,有smdk2400、smdk2410和smdk6400,但没有2440,所以我们就在这里建立自己的开发板项目。
可以先测试交叉编译器是否安装正确,在uboot的主目录下输入如下命令:

 make distclean
 make smdk2410_config
 make

如果正确,则会生成uboot.bin文件

1)因2440和2410的资源差不多,主频和外设有点差别,所以我们就在board/samsung/下建立自己开发板的项目,取名叫fl2440
#tar -jxvf u-boot-2010.09.tar.bz2 //解压源码
#cd u-boot-2010.09/board/samsung/ //进入目录
#mkdir fl2440
2)因2440和2410的资源差不多,所以就以2410项目的代码作为模板,以后再修改
#cp -rf smdk2410/* fl2440/ //将2410下所有的代码复制到2440下
#cd fl2440 //进入fl2440目录
#mv smdk2410.c fl2440.c //将fl2440下的smdk2410.c改名为my2440.c
#cd ../../../ //回到u-boot根目录
#cp include/configs/smdk2410.h include/configs/fl2440.h //建立2440头文件
#vi board/samsung/fl2440/Makefile //修改fl2440下Makefile的编译项,如下:
COBJS := fl2440.o flash.o //因在my2440下我们将smdk2410.c改名为my2440.c
3)修改u-boot跟目录下的Makefile文件。查找到smdk2410_config的地方,在他下面按照smdk2410_config的格式建立fl2440_config的编译选项,另外还要指定交叉编译器
#vi Makefile


在smdk6400的上方添加如下代码

CROSS_COMPILE ?= arm-linux-        //指定交叉编译器为arm-linux-gcc
fl2440 _config    :    unconfig     //2440编译选项格式
        @$(MKCONFIG) $(@:_config=) arm arm920t fl2440 samsung s3c24x0


 *说明:arm    :CPU的架构(ARCH)
   arm920t:CPU的类型
   fl2440 :对应在board目录下建立新的开发板项目的目录
   samsung:新开发板项目目录的上级目录,如直接在board下建立新的开发板项目的目录,则这里就为NULL
   s3c24x0:CPU型号
  *注意:编译选项格式的第二行要用Tab键开始,否则编译会出错

在boards.cfg中添加fl2440
修改如下:

  在主目录下输入:
  vi boards.cfg
  然后在smdk2410下方添加如下代码:
  fl2440          arm     arm920t         fl2440          samsung         s3c24x0

4)测试编译新建的fl2440开发板项目:

  make distclean
  make fl2440_config
  make

如果正常,则会生成uboot.bin

你可能感兴趣的:([fl2440的uboot2010.09移植1])