Android系统启动
Android系统启动操作流程由linux系统启动与Android系统启动连个阶段组成。
1.linux系统启动
Android操作系统启动的次序分别为系统上电、Bootloader引导、Linux内核启动、init初始化系统服务等。事实上,启动流程的每一步都蕴含着不同的安全含义,尤其在系统安全性和用户自由度之间如何取舍需要更多的技术和智慧。
1.1系统上电与启动ROM
如同传统的PC设备,Android系统的CPU上电复位后,将程序指针(PC)指向复位时的零地址(启动地址),从该地址读取启动程序的可执行代码直接运行,或者将可执行代码与数据载入CPU内置RAM中在运行。所谓的启动ROM内固化有启动代码,其起始地址就设在CPU复位后的启动地址(零地址处),CPU复位后PC指针指向该处,开始执行代码。
早期PC的启动ROM通常是PROM、EPROM或EEPROM,内部固化的程序就是所谓的BIOS,相当于我们后续讨论的BootLoader的一部分。BIOS运行针对硬件设备的初始化,在载入硬盘的主引导扇区MBR后,系统才会开始引导操作系统。
Android等嵌入式设备则不同,没有标准化的BIOS,也没有硬盘之类的存储设备。启动ROM通常是NOR Flash,或者直接就是NAND Flash,装载着所谓的启动代码。类似于PC的BIOS和MBR,称为Bootloader。当然BootLoader在穷ROM的起始地址必须恰好是cpu复位后所指向的地址。
NOR Flash与NAND Flash启动过程的简述如下:
NOR Flash作为启动ROM的启动过程。ROM可以字节寻址,程序即按顺序执行。由于NOR Flash具有这样的性质,因此将启动代码置于NOR Flash中。执行过程简述为:
- NOR Flash开头处存放启动代码,程序从NOR Flash开始处启动;
- 配置EMI寄存器,设置好各存储器的地址和存取规则。
- 配置电源管理模块,各模块上电
- 启动代码将位于NOR FLash中正式执行代码复制到内存中,以提高执行效率。
- 设置PC指针,指向NOR Flash中固定地址。
- 设置地址映射,将0地址映射到内存RAM空间
- 设置PC指针,指向RAM中出事代码,开始指向代码。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。