嵌入式linux/Android系统详细启动流程解析

第一阶段:启动ROM_code

=============================

第二阶段:启动X_loader

=============================

第三阶段:启动U_boot

stage1:

基本硬件设备(如CPU等)的初始化;

为stage2部分的代码准备RAM空间;

设置好堆栈;

跳入stage2 C入口。

stage2:

监测系统内存映射;

将kernel镜像和根文件系统镜像从Flash读入RAM中;

设置内核启动参数;

调用内核。

=============================

第四阶段:启动内核

step1:

kernel自解压

step2:

设置CPU工作模式,打开mmu、cache,设置内核页表,初始化串口、console、mmc、nand、显示、网络(分配IP与Mac地址)等硬件设备,使能中断、初始化进程间通信IPC等。

step3:

挂载根文件系统,设置根文件系统为rootfs,加载设备驱动以及内核静态模块。

=============================

第五阶段:启动用户进程init

文件权限清零;

为rootfs创建必要的文件夹,挂在必要分区;

创建/dev/null和/dev/kmsg节点;

解析init.rc启动脚本,执行各阶段动作;

初始化qemu模拟器(保证Android app能在无真正Android设备的情况下运行Android app);

初始化属性系统,开启属性服务;

显示设备开机logo/声音;

init进程进入死循环。

=============================

第六阶段:启动java虚拟机zygote,进入java世界

=============================

第七阶段:启动systemserver后台服务

=============================

第八阶段:启动launcher桌面程序

=============================

第九阶段:启动lockscreen锁屏界面

=============================

第十阶段:启动第三方apk并显示于launcher桌面


你可能感兴趣的:(嵌入式linux/Android系统详细启动流程解析)