Uboot 启动模式和工作过程

启动模式介绍
    大多数 Boot Loader 都包含两种不同的操作模式:"启动加载"模式和"下载"模式,这种区别仅对于开发人
员才有意义。但从最终用户的角度看,Boot Loader 的作用就是用来加载操作系统,而并不存在所谓的启动加
载模式与下载工作模式的区别。
    启动加载(Boot loading)模式:这种模式也称为"自主"(Autonomous)模式。也即 Boot Loader 从目标机
上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。这种模式是 Boot
Loader 的正常工作模式,因此在嵌入式产品发布的时侯,Boot Loader 显然必须工作在这种模式下。
    下载(Downloading)模式:在这种模式下,目标机上的 Boot Loader 将通过串口连接或网络连接等通信手
段从主机(Host)下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被 Boot
Loader 保存到目标机的 RAM 中,然后再被 BootLoader 写到目标机上的 FLASH 类固态存储设备中。Boot
Loader 的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用 Boot
Loader 的这种工作模式。工作于这种模式下的 Boot Loader 通常都会向它的终端用户提供一个简单的命令
行接口。
   U­Boot 这样功能强大的 Boot Loader 同时支持这两种工作模式,而且允许用户在这两种工作模式之间进行切换。
大多数 bootloader 都分为阶段 1(stage1)和阶段 2(stage2)两大部分,u­boot 也不例外。依赖于 CPU 体系结构的代码(如 CPU 初始化代码等)通常都放在阶段 1 中且通常用汇编语言实现,而阶段 2 则通常用 C 语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。
 
一个嵌入式系统从软件角度来看分为四个层次:

1、引导加载程序:包括固化在固件(firmware)中的boot代码(可选),和Boot Loader两打部分。

2、Linux内核:特定于嵌入式板子的指定内核以及内核的启动参数。

3、文件系统:包括根文件系统和建立于Flash内存设备之上的文件系统。通常用RAM DISK来作为root fs。

4、用户应用程序:特定于用户的应用程序。

  Uboot是德国DENX小组开发用于多种嵌入式CPU的bootloader程序,Uboot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS嵌入式操作系统。Uboot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多通用的处理器。

Uboot代码目录构架

board:和一已有开发板有关的文件。每一个开发板都以一个子目录出现在当前目录中,比如:SMDK2410,子目录中存放与开发板相关的配置文件。

common:实现Uboot命令行下支持的命令,每一条命令都对应一个文件。例如bootm命令对应就是cmd_bootm.c。

cpu:与特定PCU架构相关目录,每一款Uboot下支持的CPU在该目录下对应一个子目录,比如有子目录arm920t等。

disk:对磁盘的支持。

doc:文档目录。Uboot有非常完善的文档,推荐大家参考阅读。

drivers:Uboot支持的设备驱动程序都放在该目录,比如各种网卡、支持CFI的Flash、串口和USB等。

fs:支持的文件系统,Uboot现在支持cramfs、fat、fdos、jffs2和registerfs。

include:Uboot使用的头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统的支持的文件。该目录下configs目录有与开发板相关的配置头文件,如smdk2410.h。该目录下的asm目录有与CPU体系结构相关的头文件,asm对应的是asmarm9

.lib-xxxx:与体系结构相关的库文件。如与ARM相关的库放在.lib_arm中。

net:与网络协议栈相关的代码,BOOTP协议、TFTP洗衣、RARP协议和NFS文件系统的实现。

tools:生成Uboot的工具,如mkimage,crc等等。

Boot Loader的stage1通常包括以下步骤(以执行的先后顺序):

(1)、硬件设备的初始化;

(2)、为加载Boot Loader的stage2准备RAM空间;

(3)、拷贝Boot Loader的stage2到RAM空间中;

(4)、设置好堆栈;

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

        Boot Loader的stage2通常包括以下步骤(一执行的先后顺序):

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

(2)、检测系统内存映射(memory map)

(3)、将kernel映像和根文件系统映像从flash上读到RAM空间中;

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

(5)、调用内核。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值