wblyuyang

博客园 首页 新随笔 联系 订阅 管理

bootloader:
    bootloader是系统上的后最初加载运行的代码。
    简单的说,bootloader就是在操作系统内核运行前就运行的一段小程序。这段小程序可以初始化必要的硬件设备,将系统的软硬件
环境带到一个合适的状态,并从外部存储器或通过网络等通信方式加载内核,创建内核需要的一些信息并将这些信息通过相关机制传递
给内核,最终调用操作系统内核。
    一个嵌入式Linux系统从软件的角度看通常可以分为四个部分:bootloader、Linux内核、跟文件系统及用户的应用程序。bootloader
处于系统的最底层,运行于系统启动的最初阶段。

    bootloader的启动过程可以是单阶段的,也可以是多阶段的。多阶段的bootloader一般比单阶段的bootloader提供更为复杂的功能,
以及更好的可移植性。从固态存储设备上启动的bootloader大多数是二阶段的启动过程,比如U-boot。
    以U-boot为例对两个阶段中bootloader所做的操作进行简要说明:
第一阶段:
 bootloader执行最基本的硬件初始化操作,如关闭中断、关闭看门狗以避免处理器被复位,以及关闭MMU功能、关闭处理器缓存、
    设置系统时钟、初始化内存等。
  这一阶段的代码通常由汇编编写,为了运行下一阶段的C语言程序还必须设置好堆栈。
 如果是从NAND Flash启动,则必须通过NAND Flash控制器将bootloader代码复制到内存。
第二阶段:
 此阶段一般用C语言编写,大体分为以下步骤.
    1:初始化各种硬件设备,比如配置处理器正常工作的时钟频率、初始化串口等。
    2:检测系统内存,主要是确定系统内存容量以及其他地址空间信息。
    3:将内核映像文件加载到内存。
    4:准备内核引导参数。
    5:跳转到内核的第一条指令处,开始执行内核初始化代码,控制权转移到内核代码,bootloader的使命结束。


大多数bootloader都包含两种不同的操作模式:“启动加载”模式和“下载”模式。

对于一个运行于ARM平台的系统来说,bootloader作为引导与加载内核映像的工具需要提供以下几个功能.
 1.初始化内存
 2.初始化串口
 3.参加内核参数列表
 4.加载内核映像到内存
 5.启动内核镜像

在实际使用中,U-boot被固化在CPU的上电/复位启动地址处(通常在非易失存储器中)。每当嵌入式设备上电/复位时,CPU总是从启动
地址处执行,也就是执行U-boot。U-boot启动后,首先初始化各种硬件设备,如CPU、缓冲、存储器、MMU、总线控制器、各种I/O接口等,
然后从远程或者本地非易失存储设备中装载可执行文件或操作系统,为整个嵌入式系统准备运行环境。


 MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控

制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权。

posted on 2012-11-03 21:12  wblyuyang  阅读(2564)  评论(1编辑  收藏  举报