zoukankan      html  css  js  c++  java
  • BootLoader 详解(1)

    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,下回合详讲

  • 相关阅读:
    (转)python编写登录接口
    (转)Python之文件读写
    (转)python strip()函数 去空格 函数的用法
    (转)模块readline解析
    (转)跟着老男孩一步步学习Shell高级编程实战
    图片服务器优化 解决流量和存储问题
    某大型网站图片服务器改造方案
    雅虎网页优化14条原则
    独立的图片服务器架构
    城市分站设计思路
  • 原文地址:https://www.cnblogs.com/ATMvip/p/3242627.html
Copyright © 2011-2022 走看看