Android系统启动过程

来源:互联网 发布:可靠性分析软件下载 编辑:程序博客网 时间:2024/06/14 12:27

系统启动过程与内核并不属于Android,根据MTK的流程来做一个简单总结

本来打算根据MTK的源文档做总结,但是发现另一个blog已经做了这个工作,自认为不可能做的更好,引用其连接吧!

Android启动pre-loader

Android启动U-Boot

MTK文档给出的流程图:


主要分为五个部分(代码包):

1、  Boot code 

2、  Preloader

3、 U-Boot

4、  Kernel

5、  Ramdisk

涉及到的硬件有四个:

ROM、SRAM、DRAM、NAND


先分析四个硬件,都是存储器:

ROM固化存储器,存储固定的code,不能被擦除

SRAM随机存储器,存储速度很快,掉电存储信息丢失       特点:存储容量小,读写速度快

DRAM随机存储器,存储速度一般,掉电存储信息丢失       特点:存储容量大,读写速度慢

NAND和emmc作用一样,做flash使用,掉电存储信息不丢失


SRAM与DRAM就是  内存,NAND(或者emmc可以代替它) 是外存


根据流程图,看一下启动过程:

1和2 设备上电后,Boot ROM开始运行。

3 Boot ROM初始化NAND

4 Boot ROM从NAND中加载pre-loader到内部SRAM(ISRAM)中,执行pre-loader

5 pre-loader加载U-Boot到RAM中

6 执行U-Boot

7和8U-Boot从NAND中加载引导镜像(boot image),包括linux内核和ramdisk

9 U-Boot跳转到linux内核并执行


具体的工作如下:




Ramdisk作用:  ramdisk.img中主要是存放android启动后第一个用户进程init可执行文件和init.*.rc等相关启动脚本以及sbin目录下的adbd工具



————为什么要使用SRAM与DRAM,使用一个DRAM是否可以?

可以!如此可以把 Preloader和U-Boot做在一起,SRAM最主要的作用在于高速传输,在内存管理中,使用 段/页式,多级页表就是存储在SRAM中;C语言的局部快速处理操作也是由于SRAM存在实现的。SRAM可以极大的增加CPU的处理速度,解决CPU处理速度与DRAM读写速度极度不匹配的现象。











0 0