FL2440的u-boot-2010.09移植(一)

先说下  我是结合yanghao和韦东山老师两位的博客文档自己移植U-boot来搭建整个系统,我用的u-boot-2010.09版本来移植的,对不同的开发板基本上是通用的,最多就是Not flash需要更改一些参数吧了,有可能文章写得不是很全,可以直接看补丁文件。                                                                                                                                                             自己移植这一块确实挺幸苦的,今天在这里写出来,希望给大家带来帮助,同时也是给自己的一个总结,更方便查找笔记。在这里我讲写出U-boot,kernel,rootfs怎么的移植步骤,这是一个耗时间的过程,不急慢慢写,呵呵。这里面移植U-boot是最难的,你会学到很多东西,毕竟是跟硬件打交道,好了废话不多说。

虚拟机:VMWare--ubuntu9.0

开发板:SDRAM:64M    ROM:NAND FLASH 256M  

U-boot下载地址:u-boot-2010.09.tar.bz2 

补丁文件下载地址:u-boot-2010.09_jz2440.patch

一 在Uboot中添加jz2440开发板的支持

#tar -xjvf u-boot-2010.09.tar.bz2  /*测试下自己的交叉编译器是否支持该版本的U-boot*/

#make smdk2410_config

make  //如果编译不出错的话就可以开始移植了,我用的交叉编译器版本是一下是查看自己交叉编译器的版本

如果有错请更换交叉编译器版本。

#arm-linux-gcc -v    //查看自己的交叉编译版本
/work/tools/gcc-3.4.5-glibc-2.3.6/lib/gcc/arm-linux/3.4.5/specs

# cd u-boot-2010.09.tar.bz2 

#make distclean

二 u-boot移植步骤方向说明:

1.以SMDK2410为模板,建立好开发板相关的文件,并利用交叉编译器编译生成.bin文件;

2.再修改相关时钟频率使之适应开发板硬件配置,让uboot能在ram中运行调试成功(即串口能打印数据);

3.修改norflash相关配置,使uboot能支持norfalsh的读写,附:uboot默认支持从norflash启动;

4.修改nandflash相关配置,使uboot能支持nandflash的读写;使uboot能从nand flash启动;

5.增加uboot的功能,如网络(此开发板是DM9000A)、USB等(这个功能没实现);

6.修改相应配置,使uboot能引导Linux系统启动;

7。增加yaffs2文件系统的烧写;

三、让U-B00T在内存中运行起来

(一)创建开发板文件夹

1.进入board/samsung目录,拷贝目录中的smdk2410文件夹放在当前目录下,并重命名为jz2440(这是板子配置文件夹);

2.进入jz2440 ,把文件smdk2410.c重命名为jz2440 .c(uboot启动第二步执行的文件);打开Makefile,修改COBJS:=jz2440 .o flash.o

(二)创建配置文件

进到include/configs目录下,找到配置文件smdk2410.h,将其拷贝并重命名为jz2440.h(uboot相关各种宏定义,关键文件);

(三)创建编译规则

打开顶层Makefile(注意是在根目录下),修改(红色部分):

老版本:

1.添加编译板配置文件时用到的命令(即makejz2440 _config ;注意@之前加的是tab,不是空格)

smdk2410_config :unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0

jz2440 _config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t jz2440  samsung s3c24x0   //命令前面一定留个tab行

新版本:

smdk2410        arm     arm920t         -               samsung         s3c24x0
jz2440          arm     arm920t         -               samsung         s3c24x0

四 编译U-boot

编译之前打开/include/configs/jz2440.h;增加宏定义   

#define CONFIG_SKIP_LOWLEVEL_INIT   1 //跳过底层初始化,测试的u-boot.bin直接运行在SDRAM中

/*#define CONFIG_SKIP_RELOCATE_UBOOT    1  */ 这是针对Nor FLASH 运行的 注释掉u-boo才能初始化CPU  避免重新定位

   1.make distclean //清空之前操作生成的各种文件

   2. makejz2440_config //生成配置文件

   3.make //编译.bin文件

若能成功编译出.bin文件,则说明交叉编译器没问题,初步移植也没问题,此时的.bin 文件只是基于smdk2410开发板的,在咱们的开发板是jz2440上不能适用的,所以在此基础上还要对相应的文件进行修改配置,例如要修改jz2440.c;jz2440.h等文件使其能支持本开发板,以上的步骤是很通用的。                                              

到这里这个U-boot的模板就建立起来了,把u-boot.bin烧写在SDRAM中,但是不会显示任何信息,那是对的,我们还没有初始化时钟,下章我们主要在start.S中修改文件。


你可能感兴趣的:(FL2440的u-boot-2010.09移植(一))