一、 准备移植
1、嵌入式 Linux软件结构与分布
一般情况下嵌入式Linux系统中的软件主要分为以下几部分:
1) 引导加载程序:其中包括内部 ROM中的固化启动代码和 BootLoader两部分。
内部固化ROM是厂家在芯片生产时候固化的,作用基本上是引导BootLoader。
有的芯片比较复杂,比如 Omap3在 flash中没有代码的时候有许多启动方式:
USB、UART或以太网等等。而 S3C24x0则很简单,只有 Norboot和
Nandboot。
2) Linux kernel和 drivers。
3) 文件系统。包括根文件系统和建立于Flash内存设备之上的文件系统(EXT4、
UBI、CRAMFS等等)。它是提供管理系统的各种配置文件以及系统执行用户应
用程序的良好运行环境及载体。
4) 应用程序。用户自定义的应用程序,存放于文件系统之中。
在 Flash存储器中,他们的分布一般如下:
2、获得源码:
u-boot-2010.03.tar.bz2可到官网ftp://ftp.denx.de/pub/u-boot/获得。
3、 U-BOOT主要目录结构和启动流程:
一、 建立自己的开发板项目
1、解压源码,进入目录:
#tar xjvf u-boot-2010.03.tar.bz2
#cd u-boot-2010.03/board/samsung/
1、 建立smdk6410目录:
因s6410和6400的资源差不多,主频和外设有点差别,故在board/samsung/下建立自己开发板的项目,取名叫smdk6410。并将smdk6400里的所有文件复制到smdk6410中,进入smdk6410文件夹将smdk6400.c更名为smdk6410.c,并且打开此文件,将里面的6400全部改为6410。打开Makfile,将里面的6400改为6410。
2、 进入/u-boot-2011.03 /nand_spl/board/samsung/smdk6400/的目录,复制smdk6400,并黏贴,将副本smdk6400更名为smdk6410,更改Makefile文件,将里面的6400全部改成6410。
4、进入到 include/configs/ 复制smdk6400.h,并将副本改为smdk6410.h。
5、指定交叉编译工具,找到CROSS_COMPILE?=在等号后面添加arm-linux-
注:*说明:arm :CPU的架构(ARCH)
arm1176:CPU的类型
smdk6410:对应在board目录下建立新的开发板项目的目录
samsung:新开发板项目目录的上级目录,如直接在board下建立新的开发板项目的目录,则这里就为NULL
s3c64xx:CPU型号
*注意:编译选项格式的第二行要用Tab键开始,否则编译会出错
6、测试编译新建的smdk6410开发板项目
#make smdk6410_config
如果出现Configuring for smdk6410 board...则表示设置正确
#make
编译后在根目录下会出现u-boot.bin文件,则u-boot移植的第一步就算完成了。
到此为止,u-boot对自己的smdk6410开发板还没有任何用处,以上的移植只是搭建了一个th6410开发板u-boot的框架,要使其功能实现,还要根据smdk6410开发板的具体资源情况来对u-boot源码进行修改。