您的位置:首页 > 其它

uboot启动流程分析和uboot移植(粗略分析)

2013-11-24 19:23 363 查看
BootLoad通常包括以下步骤:

1. Stage 1:

(1 )硬件设备初始化;

(2 )为加载BootLoad的stage2准备RAM空间;

(3 )复制BootLoad的stage2到RAM空间;

(4 )设置好堆栈;

(5 )跳转到stage2的C入口点。

2.Stage2:

(1 )初始化本阶段要用到的硬件设备;

(2 )检测系统内存映射;

(3 )将linux内核和根文件系统映像从Flash上读到RAM空间中;

(4 )为内核设置启动参数;

(5 )调用内核。

现在以TQ2440为目标板,以u-boot1.1.6(网上资源比较丰富,便于学习)为bootload。

移植环境
交叉编译器:crosstools_3.4.5_softfloat
CPU:S3C2440
SDRAM:64M
Nor Flash :2M
NAND Flash :64M
网卡:DM9000

1、解压源码包 

tar - jxvf u - boot- 1.1.6.tar.bz2 

解压后在当前目录下生成 u - boot- 1.1.6 目录

2、建立自己的目标板(在board目录下建立)

--> 进入 u - boot- 1.1.6 目录。

cd u-boot-1.1.6

--> 将 board/s mdk2410 目录复制为 TQ2440目录 

cp - rf board/smdk2410/ board/TQ2440 

-->  修改 smdk2410.c 为 dong2440.c 

mv board/dong2440/smdk2410.c board/TQ2440/TQ2440.c

-->  修改 Makefile 文件中 28 行的 COBJS 改为:

COBJS    := TQ2440.o flash.o

--> 建立目标板配置文件:进入 include/configs 目录下, 将 smdk2410.h 复制为TQ2440.h

cp include/configs/smdk2410.h  include/configs/TQ2440.h

--> 修改顶层(u - boot- 1.1.6 目录)Makefile  文件 1881 行,增加:

TQ2440_config   :   unconfig

@$(MKCONFIG) $(@:_config=) arm arm920t TQ2440 NULL s3c24x0

各项的意思如下:
arm: CPU  的架构(ARCH)
arm920t: CPU  的类型(CPU),其对应于cpu/arm920t  子目录。
TQ2440:  开发板的型号(BOARD),对应于board/TQ2440  目录。
NULL:  开发者/或经销商(vender)。(此处没加vender,为NULL。)
s3c24x0:   片上系统(SOC) 。

-->  配置交叉编译器:修改顶层(u - boot- 1.1.6 目录)Makefile  文件 128 行,修改:

ifeq ($(ARCH),arm)

CROSS_COMPILE=/opt/crosstools_3.4.5_softfloat/gcc- 3.4.5- glibc- 2.3.6/arm - linux/bin/arm - linux        (这是我交叉编译器的路径)

endif

3、编译测试

进入 u - boot- 1.1.6 目录

#make mrproper  //(或# make distclean 修改顶层 Makefile 等相关文件必须执行此步骤)

#make TQ2440_config

#make all
如果没有错误,则会生成 u - boot.bin 文件。
至此,自己的目标板已经建立,下面要做的是修改一些配置,增加一些驱动。

4、增加对S3C2440的支持

5,、配置NOR Flash

6、增加对NAND Flash读写驱动

7、支持网卡DM9000

8、引导Linux内核

9、支持Yaffs2文件系统
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  移植 uboot u-boot