1. Boot Loader的概念

   BootLoader就是在操作系统内核运行前之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件带到一个合适的状态,以便为最终

调用操作系统内核准备好正确的环境。

   1.BootLoader 的安装媒介

    系统加电或者复位后,所有的CPU通常都从某个由CPU制造商预先安排的地址取指令。比如,基于ARM7TDMI core 的CPU在复位时通常从地址0x00000000取它的第一条指令。而基于CPU构建的嵌入式系统通常都在某种类型的固态设备(比如ROM、EEPROM、FLASH)被映射到这个预先安排的地址上。因此在系统加电后,CPU将首先执行BootLoader程序。

下图就是一个同时装有BootLoader、内核启动参数、内核映像和根文件系统映像的固态设备的典型空间分配结构图

    2.用来控制BootLoader的设备和机制

      主机和目标机之间一般通过串口来建立连接,BootLoader执行时通过串口进行I/O,比如:输出打印信息、从串口读取控制字符

    3.BootLoader的启动过程是单阶段还是多阶段

      通常多阶段的BootLoader能提供更复杂的功能和更好的移植性能。从固态设备上启动的BootLoader大多数是2阶段的。

    4.BootLoader的操作模式

      包含2中操作模式:启动加载模式和下载模式

      启动加载模式(boot loading):BootLoader从目标机上的某个固态设备上将操作系统加载到RAM中运行

      下载模式(downloading):目标机上的BootLoader将通过串口连接或者网络连接等通信手段从主机上下载文件,比如:下载内核映像和根文件系统映像。从主机下          载的文件通常先被BootLoader保存到RAM中再写到固态设备中。

    5.BootLoader与主机之间进行文件传输所用的通信设备以及协议

     最通常的情况是,目标机上的BootLoader通过串口和主机进行文件传输,传输协议通常是 xmodem/ymodem/zmodem中的一种。

   通过以太网体积TFTP协议来下载,主机方必须也需要软件来提供TFTP服务。

2.BootLoader主要任务和典型框架

   从操作系统的角度看,BootLoader的目的就是正确调用内核来执行。另外,由于BootLoader的实现依赖于CPU的体系结构,因此大多数BootLoader都分为 stage1和stage2两部分。依赖于CPU的体系结构的代码,比如设备初始化代码等,通常都放在stage1中,而且通常都用汇编语言来实现,以达到短小精悍的目的。而stage2通常用C语言来实现,这样可以实现复杂的功能,而且代码具有更好的可读性和可移植性。

  1.BootLoader的stage1通常包括以下执行步骤

  .硬件初始化

  。为BootLoader的stage2准备RAM空间

  。拷贝BootLoader的stage2到RAM空间中

  。设置好堆栈

  。跳转到stage2的C入口点

  2.BootLoader的stage2通常包括以下执行步骤

。初始化本阶段需要使用到的设备硬件

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

  。将kernel 映像和根文件系统映像从flash上读到RAM

  。为内核设置启动参数

  。调用内核

结:关于Bootloader的stage1和stage2,下回合详讲

BootLoader 详解(1)的更多相关文章

  1. 【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795 转载请著名出处 相关资源下载 :  -- u-boo ...

  2. BootLoader 详解(3)

    BootLoader的stage2 stage2的代码是C语言来实现的,以便于实现更复杂的功能和取得更好的代码可读性和移植性.它与普通C语言程序不同的是,在编译和链接BootLoader这样的程序时, ...

  3. BootLoader 详解(2)

    BootLoader的stage1 1.基本的硬件初始化 这是BootLoader一开始就执行的操作,其目的是为stage2的执行以及随后的kernel的执行准备好一些基本的硬件环境.它通 常包括以下 ...

  4. CFE Bootloader详解 — 引导过程

    CFE命令 CFE引导过程 系统加电后,CFE从boot.S (src/shared/boot.S)开始执行,完成判断芯片类型.设置时钟.初始化缓存.把自身加载进RAM等任务后,跳转到c_main() ...

  5. 【转载】 硬盘主引导记录(MBR)及其结构详解

    硬盘的0柱面.0磁头.1扇区称为主引导扇区,FDISK程序写到该扇区的内容称为主引导记录(MBR).该记录占用512个字节,它用于硬盘启动时将系统控制权交给用户指定的,并在分区表中登记了的某个操作系统 ...

  6. uboot mkimage使用详解

    mkimage使用详解uboot源代码的tools/目录下有mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动映象文件. mkimage在制作映象文件的时候,是在原来的可执行映象文件的 ...

  7. 引用 mkimage使用详解

    引用 鱼 的 mkimage使用详解  uboot源代码的tools/目录下有mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动映象文件. mkimage在制作映象文件的时候,是在原来 ...

  8. Android的init过程详解(一)

    Android的init过程详解(一) Android的init过程(二):初始化语言(init.rc)解析 本文使用的软件版本 Android:4.2.2 Linux内核:3.1.10 本文及后续几 ...

  9. 黑苹果引导工具 Clover 配置详解及Clover Configurator使用

    黑苹果引导工具 Clover 配置详解及Clover Configurator使用  2017-03-11 14:01:40 by SemiconductorKING 转自:@三个表哥   简介: 可 ...

随机推荐

  1. git新建仓库

    克隆地址 git clone https://git.oschina.net/dy09/dy_shop.git 在克隆下来的文件夹里面进行下面的操作1.git add -A 2.git commit ...

  2. 《C与指针》第五章练习

    本章问题 1.这个表达式的类型和值为多少? (/) answer:The cast is applied to the result of the division,and because both ...

  3. arcgis server 10.2安装后,忘记Manager的用户名和密码

    arcgis server 10.2安装完毕后,需要创建站点,创建站点时,填写管理站点的用户名和密码.自己不小心,创建完毕后,给忘记了用户名和密码.求助Esri,解决方法如下: (1)找到arcgis ...

  4. C# 给某个方法设定执行超时时间 C#如何控制方法的执行时间,超时则强制退出方法执行 C#函数运行超时则终止执行(任意参数类型及参数个数通用版)

    我自己写的 /// <summary> /// 函数运行超时则终止执行(超时则返回true,否则返回false) /// </summary> /// <typepara ...

  5. Centos 安装vsftpd 服务器

    一:检查有没有安装vsftpd 二:安装vsftpd 三:安装之后重启 四:修改vsftpd配置文件 配置文件路径在/etc/vsftpd目录下 默认是注释掉的,把#号去掉 然后重启vsftpd 五: ...

  6. RESTful API的重磅好伙伴Swagger2

    本文将介绍RESTful API的重磅好伙伴Swagger2,它可以轻松的整合到Spring Boot中,并与Spring MVC程序配合组织出强大RESTful API文档. 它既可以减少我们创建文 ...

  7. 必须使用“角色管理工具”安装或配置Microsoft .NET Framework 3.5 SP1

    在Windows Server 2008下直接安装SQL Server 2008时,会出现如下错误: 必须使用“角色管理工具”安装或配置Microsoft .NET Framework 3.5 SP1 ...

  8. 关于jsp中response.sendRedirect显示错误

    今天在jsp中作判断时,当不同条件时利用response.sendRedirect(“url”)来转向不同的页面,首先是判断验证码,当错误时就转向错误页面:当正确时,才进行用户名和密码的判断,同样也r ...

  9. Android学习笔记(一)

    活动(Actiity)是一种可以包含用户界面的组件,主要用于和用户进行交互.一个应用中可以包含零个或多个活动. 所有的自己写Activity都继承于Activity类.项目中的任何活动都应该改重写Ac ...

  10. Oracle linux6.1配置yum本地源

    一.准备工作1. Linux安装盘插入光驱2. 挂载光驱 [root@localhost ~]# mount /dev/cdrom /mnt/ mount: block device /dev/sr0 ...