zoukankan      html  css  js  c++  java
  • Bootloader介绍和启动

    一、Bootloader的介绍

    1.什么是Bootloader

    Bootloader是硬件启动的引导程序,是运行操作系统的前提。在操作系统内核或用户应用程序运行之前运行的一段小代码。对硬件进行相应的初始化和设定,最终为操作系统准备好环境。

    2.Bootloader的特点

    Bootloader不属于操作系统,一般采用汇编语言和C语言开发。需要针对特定的硬件平台编写。在移植过程时,首先为开发板移植Bootloader。Bootloader不但依赖于CPU的体系架构,而且依赖于嵌入式系统板级设备的配置。

    3.Bootloader的操作模式

    自启动模式:在这种模式下,Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。

    交互模式:在这种模式下,目标机上的Bootloader将通过串口或网络等通信手段从开发板上下载内核映射和根文件系统映像等待RAM中。可以被Bootloader写到目标机上的固态存储媒介质中,或者直接进入系统的引导。也可以通过串口接收用户的指令。

    二、Bootloader的基本功能

    初始化相关硬件 把Bootloader自搬移到内存中 执行用户指令 加载并执行内核

    三、Bootloader的启动

    Bootloader的启动一般分为两个阶段

    下图是拿s5pc100 cortex a8的板子芯片图形做介绍

    拿已经固化到nand flash中的Bootloader为例

    第一步:当CPU启动后运行地址为0x00000000就是IROM的第一块代码处BL0,而Bootloader存放在nand flash中,其中开头的一块代码BL1(大小为16K)存放到IRAM(SRAM)中。而在BL0的代码会自动跳转到BL1处,执行BL1出的代码,进行一些相关硬件的初始化。BL1处还有一个拷贝指令,就是将nand flash中的Boot-

    loader代码拷贝到DRAM中。当BL1中代码运行完之后将会自动跳转到DRAM中。

    BL1代码中作用:

    初始化基本硬件

    把Bootloader搬到内存中

    初始化异常 模式

    设置堆栈指针并将bss段清零,为后续的C代码做准备

    跳到第二段代码

    第二步:执行BL1跳转到的代码BL2

    BL2的作用:

    初始化本阶段要使用的硬件

    将坏境变量添加到内核中

    读取环境变量

    下载执行

     转载自 http://blog.csdn.net/cxj582667366/article/details/42194273

  • 相关阅读:
    thinkphp5.0与thinkphp3.2之间的区别
    比较数组大小
    PHP语言开发微信公众平台(订阅号)之curl命令(补充)
    ThinkPHP3.2.3快速入门:基础篇
    phpcms利用表单向导创建留言板(可以回复)
    Vijos P1782 借教室 ( 前缀和&&差分序列)
    HDU2648:Shopping(DKBR_hash)
    Codeforces Round #375 (Div. 2)
    BestCoder Round #88
    Codeforces Round #373 (Div. 2)
  • 原文地址:https://www.cnblogs.com/leezheng/p/8094792.html
Copyright © 2011-2022 走看看