Linux系统启动流程分析

作者:郭孝星
微博:郭孝星的新浪微博
邮箱:allenwells@163.com
博客:http://blog.csdn.net/allenwells
Github:https://github.com/AllenWells

一 系统上电和启动ROM

NOR Flash作为启动ROM的系统启动过程

  1. NOR Flash开头处存放启动代码,程序从NOR Flash開始处启动。

  2. 配置EMI寄存器,设置好各存储器的地址和存取规则。

  3. 配置电源管理模块。各模块上电。

  4. 启动代码将位于NOR Flash中的正式运行代码拷贝到内存中。以提高运行效率。

  5. 设置PC指针,指向NOR Flash中固定地址。
  6. 设置地址映射,用0地址映射到内存RAM空间。

  7. 设置PC指针,指向RAM中初始化代码。開始运行代码。

NAND Flash作为启动ROM的系统启动流程

  1. 上电初始。DMA默认设置将存储在NAND Flash中第一页的数据搬运到内部RAM中,然后设置PC到内部RAM開始处的地址。開始运行代码。
  2. 在启动代码中设置中断向量和硬件配置等。
  3. 将运行代码搬运到外部SDRAM或DDR=RAM,留出启动代码的位置。
  4. 将启动代码搬运到SDRAM或DDR-RAM中首址。

  5. 设置Remap。将0地址又一次映射到SDRAM或DDR-RAM首地址。
  6. 设置PC指针,開始运行正式的运行代码。

二 Bootloader引导

三 Linux内核引导

非压缩内核:Image

压缩内核:zImage

  1. 内核初始化
  2. 设备初始化
  3. 启动内核
  4. 挂载文件系统
  5. 启动用户空间进程

四 init初始化系统服务

  1. 初始化log系统
  2. 解析/init.rc和/init.%hardware%.rc文件,运行early-init,并运行解析出的init动作、early-boot动作、boot动作和execute property动作。
  3. 进行设备初始化,属性server初始化并开启属性服务。

  4. 进入无线循环以等待属性设置或子进程退出事件。
posted @ 2017-05-03 21:34  mfmdaoyou  阅读(259)  评论(0编辑  收藏  举报