Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6900
  • 博文数量: 3
  • 博客积分: 125
  • 博客等级: 入伍新兵
  • 技术积分: 35
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-25 11:00
文章分类
文章存档

2012年(3)

我的朋友
最近访客

分类: LINUX

2012-06-05 13:52:08

一、Bootloader简介 
1、Bootloader的启动方式 
    ①启动加载(Boot loading)模式;②下载(Downloading)模式 
2、Bootloader的结构和启动过程 
2.1 结构
嵌入式Linux的四个层次:
    ①引导加载程序:boot代码(可选,如i386的BIOS)、Bootloader两大部分;
    ②Linux内核:特定于嵌入式板子的定制内核及其启动参数;内核启动参数可以是内核默认的或是由Bootloader传递给内核的; 
    ③文件系统:包括根文件系统和建立于Flash内存设备之上的文件系统。包含了linux系统能够运行所必需的应用程序、库等; 
    ④用户应用程序:特定于用户的应用程序,也存储在文件系统中。 
    如下图为典型嵌入式linux系统中文件分区结构:

        
            
                        图1:典型嵌入式linux系统文件分区结构
    “Boot parameters”分区存放一些可设置参数,正常启动过程中,Bootloader首先运行,然后将内核复制到内存中(也有些内核直接在固态存储设备中运行),并在内核中某个固定的地址设置好要传递给内核的参数,最后运行内核。内核启动后,它会挂载(mount)根文件系统Root filesystem,启动文件系统中的应用程序。
2.2、Bootloader的两个阶段
①Bootloader第一阶段功能:

    ※ 硬件设备初始化:关WATCHDOG、关中断、设置CPU的速度和时钟频率、RAM初始化等(并不都是必须的,可放置在第二阶段);

    ※ 为加载Bootloader的第二阶段代码准备RAM空间;

    ※ 复制Bootloader的第二阶段代码到RAM空间(不是必须的);

    ※ 设置好栈;

    ※ 跳转到第二阶段代码的C入口点。

Bootloader第二阶段功能:

    ※ 初始化本阶段要用到硬件设备;

    ※ 检测系统内存映像(memory map);

    ※ 将内核映像和根文件系统映像从Flash上读到RAM空间;

    ※ 为内核设置启动参数;

    ※ 调用内核

调用内核之前,必须满足下列条件:

①CPU寄存器设置:

    ※ R0=0;

    ※ R1=及其类型ID;可参见linux/arch/arm/tools/mach-types

    ※ R2=启动参数标志列表在RAM中的起始地址;

②CPU工作模式:

    ※ 必须禁止中断

    ※ CPU必须为SVC模式

③Cache和MMU设置:

    ※ MMU必须关闭

    ※ 指令Cache可以打开也可以关闭

    ※ 数据Cache必须关闭

3、Bootloader与内核交互

    传递方法:Bootloader将参数放在某个约定的地方之后,再启动内核,内核启动后从这个地方获得参数。

    标志列表:数据结构tag。

   


阅读(655) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~