bootloader启动流程

①bootloader
a. SVC模式、关中断、mmu、cache、看门狗等
b. 基本初始化(时钟、串口、flash、内存)
c. 自搬移到内存
d. 设置栈,调到C部分
e. 大部分硬件初始化(网卡、sd卡、usb)
f. 搬移内核到内存
g. 运行内核
②kernel
a. 自解压内核
b. 运行内核汇编部分,检查合法性(CPU类型,机器类型)
c. 运行内核C部分,中断、定时器、终端、内存等最基本的初始化
d. 创建核心进程,启动多任务调度
e. 挂载rootfs
f. 运行第一个应用程序init(一般是linuxrc)
③application

什么是Bootloader?
  1. Bootloader是硬件启动的引导程序,是运行操作系统的前提;
  2. 在操作系统内核或用户应用程序运行之前运行的一小段代码,对软硬件进行相应的初始化和设定,为最终运行操作系统准备好环境;
  3. 在嵌入式系统中,整个系统的启动加载任务通常有Bootloader来完成。
Bootloader的特点?
  1. Bootloader不属于操作系统,一般采用汇编语言和C语言开发,需要针对特定的硬件平台编写;
  2. 在移植系统时,首先为开发板移植Bootloader;
  3. Bootloader不仅依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。
Bootloader的操作模式?
  1. 自启动模式:在这种模式下,Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程没有用户的介入;
  2. 交互模式:在这种模式下,目标机上的Bootloader将通过串口或网络等通信手段从开发主机(Host)上下载内核映像和根文件系统映像等到RAM中。可被Bootloader写到目标机上的固态存储煤质中,或者直接进行系统引导,也可以通过串口接收用户的命令。
Bootloader的基本功能:
  1. 初始化相关硬件
  2. 把Bootloader自搬运到内存中
  3. 执行用户的命令
    • 访问环境变量
    • 通过网络/串口通信
    • 读写RAM/FLASH
  1. 加载并执行内核

你可能感兴趣的:(bootloader启动流程)