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

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

  • 相关阅读:
    Mybatis分页插件PageHelper简单使用
    UUID
    JavaWeb初学者session的使用
    轻松理解AOP思想(面向切面编程)
    DOM操作中,getElementByXXXX 和 querySelector 的区别
    DOM操作中,遍历动态集合的注意事项。ex: elem.children
    微信官方团队放出了UI库,看来以后前端还要学WeChatUI了,哈哈
    jQuery中使用$.each()遍历后台响应的json字符串问题
    平衡树
    后缀数组原理浅析(转载自tqx)
  • 原文地址:https://www.cnblogs.com/wblyuyang/p/2752959.html
Copyright © 2020-2023  润新知