zoukankan      html  css  js  c++  java
  • bootloader

    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)中用来管理虚拟存储器、物理存储器的控

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

  • 相关阅读:
    无法定位程序输入点
    推荐一款免费看小说神器-连尚读书
    APP隐私权限审核规范
    移动互联网应用程序(APP) 启动屏广告行为规范
    [原创]A/B测试不是万能的,但没有是不行的?
    [原创]我的抖音号mayingbao,欢迎来交流
    [原创] push如何提高产品留存?
    [原创]创业公司中App专用术语
    [原创]app应用上架申请所需材料
    [原创]这37款APP,下架!做为测试人员,你应了解些这方面知识
  • 原文地址:https://www.cnblogs.com/yygsj/p/4867876.html
Copyright © 2011-2022 走看看