Linux系统启动流程分析
来源:互联网 发布:php程序员有必要学c吗 编辑:程序博客网 时间:2024/05/17 02:59
作者:郭孝星
微博:郭孝星的新浪微博
邮箱:allenwells@163.com
博客:http://blog.csdn.net/allenwells
Github:https://github.com/AllenWells
一 系统上电和启动ROM
NOR Flash作为启动ROM的系统启动过程
- NOR Flash开头处存放启动代码,程序从NOR Flash开始处启动。
- 配置EMI寄存器,设置好各存储器的地址和存取规则。
- 配置电源管理模块,各模块上电。
- 启动代码将位于NOR Flash中的正式执行代码复制到内存中,以提高执行效率。
- 设置PC指针,指向NOR Flash中固定地址。
- 设置地址映射,用0地址映射到内存RAM空间。
- 设置PC指针,指向RAM中初始化代码,开始执行代码。
NAND Flash作为启动ROM的系统启动流程
- 上电初始,DMA默认设置将存储在NAND Flash中第一页的数据搬运到内部RAM中,然后设置PC到内部RAM开始处的地址,开始执行代码。
- 在启动代码中设置中断向量和硬件配置等。
- 将执行代码搬运到外部SDRAM或DDR=RAM,留出启动代码的位置。
- 将启动代码搬运到SDRAM或DDR-RAM中首址。
- 设置Remap,将0地址重新映射到SDRAM或DDR-RAM首地址。
- 设置PC指针,开始执行正式的执行代码。
二 Bootloader引导
三 Linux内核引导
非压缩内核:Image
压缩内核:zImage
- 内核初始化
- 设备初始化
- 启动内核
- 挂载文件系统
- 启动用户空间进程
四 init初始化系统服务
- 初始化log系统
- 解析/init.rc和/init.%hardware%.rc文件,执行early-init,并执行解析出的init动作、early-boot动作、boot动作和execute property动作。
- 进行设备初始化,属性服务器初始化并开启属性服务。
- 进入无线循环以等待属性设置或子进程退出事件。
0 0
- linux系统启动流程分析
- Linux系统启动流程分析
- ARM+Linux系统启动流程分析----系统启动总概述
- ARM+Linux系统启动流程分析----ARM处理器的启动流程
- android系统启动流程分析:
- Android系统启动流程分析
- Android系统启动流程分析
- ANDROID系统启动流程分析
- Android系统启动流程分析
- Android系统启动流程分析
- linux系统启动流程
- linux系统启动流程
- Linux系统启动流程
- Linux 系统启动流程
- Linux系统启动流程
- Linux系统启动流程如下
- linux系统启动流程
- Linux系统启动流程
- 我的微信
- 我的Android进阶之旅------>Android中高低API版本兼容使用@TargetApi或者@SuppressLint("NewApi")
- iOS学习之block
- ios--c DAY-8
- 还是畅通工程
- Linux系统启动流程分析
- java的各种设计模式(23)
- Linux多线程程序设计
- Android系统启动流程分析
- MyBatis 配置延迟加载
- iOS入门(二)分支结构
- ACOD:如何在eclipse中使用离线文档中的中文Javadoc
- Qt之日常积累
- Java 接口和抽象类区别