一步步教你移植uboot(超精华版).pdf
文本预览下载声明
广州广嵌电子科技有限公司
GEC2440U-BOOT-2009.11移植实验
u-boot简介
u-boot是德国DENX小组的开发用于多种嵌入式CPU的bootloader程序, u-boot不仅
仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD,VxWorks,QNX,RTEMS,ARTOS,
LynxOS嵌入式操作系统。u-boot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、
ARM、NIOS、XScale等诸多常用系列的处理器。
u-boot
u-boot
uu--bboooott源码目录介绍
目录 内容
和一些已有开发板有关的文件. 每一个开发板都以一个子目录出现在当前
board
目录中,比如说:SMDK2410,子目录中存放与开发板相关的配置文件.
实现uboot命令行下支持的命令,每一条命令都对应一个文件。例如go命令
common
对应就是cmd_boot.c
与特定CPU架构相关目录,每一款uboot下支持的CPU在该目录下对应一个子
cpu
目录,比如有子目录arm920t等。
disk 对磁盘的支持
doc 文档目录。uboot有非常完善的文档,推荐大家参考阅读。
uboot支持的设备驱动程序都放在该目录,比如各种网卡、支持CFI的Flash、
drivers
串口和USB等。
fs 支持的文件系统,uboot现在支持cramfs、fat、fdos、jffs2和registerfs。
uboot使用的头文件,还有对各种硬件平台支持的汇编文件,系统的配置文
件和对文件系统支持的文件。该目录下configs目录有与开发板相关的配置
include
头文件,如smdk2410.h。该目录下的asm目录有与CPU体系结构相关的头文
件,asm对应的是asmarm.
lib_xxxx 与体系结构相关的库文件。如与ARM相关的库放在lib_arm中。
与网络协议栈相关的代码,BOOTP协议、TFTP协议、RARP协议和NFS文件系
net
统的实现。
tools uboot的工具,如:mkimage, crc等等。
u-boot的启动过程
启动流程
我们一般把bootloader都分为阶段1(stage1)和阶段2(stage2)两大部分,依赖于
CPU体系结构的代码(如CPU初始化代码等)通常都放在阶段1中且通常用汇编语言实现,
而阶段2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植
性。
阶段1,汇编代码,对于s3c2440是cpu/arm920t/start.s文件。
主要流程如下:
设置CPU的模式为SVC模式
关闭看门狗
禁掉所有中断
设置以CPU的频率
把自己拷贝到RAM
1
广州广嵌电子科技有限公司
配置内存区控制寄存器
配置的栈空间
进入C代码部分
阶段2是C语言代码,在lib_arm/board.c中的start_armboot是C语言开始的函数,也是整个启动代
码中C语言的主函数。这个函数调用一系列的初始化函数,然后进入主UBOOT命令行,进入命令循环
(即整个boot的工作循环),接受用户从串口输入的命令,然后进行相应的工作,如下图所示。
显示全部