先说下 我是结合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 ](http://download.csdn.net/detail/qq_21792169/9248959)
补丁文件下载地址:[u-boot-2010.09_jz2440.patch](http://download.csdn.net/detail/qq_21792169/9340099)
## 一, 在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移植(一)
- FL2440的u-boot-2010.09移植(二)
- FL2440的U-boot-2009.08移植(三)支持Nor FLASH
- FL2440的U-boot-2009.08移植(四) 支持DM900网卡
- FL2440的U-boot-2009.08移植(五)uboot架构中NAND Flash驱动修改
- FL2440如何利用JLINK烧写U-boot到NAND Flash中
- uboot中的快捷菜单的制作说明
- env_relocate 函数深入分析
- U-boot mkimage指定Linux内核地址时的两种方式
- 实现u-boot对yaffs/yaffs2文件系统下载的支持