1.启动流程一览,图片中不考虑ATF(arm trust firmware),加上ATF,则preloader和LK之间插上个ATF
2.启动流程分析
1.上电后启动ROM中的代码
- 从reset vector开始启动
- 初始化stack空间
- 找到并初始化启动设备(sd/nand/emmc)
- 加载preloader到SRAM中,并跳转到preloader中执行代码
2.preloader执行
- 创建c运行环境
- 必要的硬件初始化
- 加载ATF(安全相关)
- 加载并跳转到lk执行
3.lk执行
- 获取preloader中传递的参数
- 使能mmu
- 初始化必要的硬件设备
- 设置启动模式
- 加载并跳转到kernel执行
4.kernel执行
- 函数执行入口stext
- start kernel
- boot param
- kthread
- kernel_init
- init.rc
来源:oschina
链接:https://my.oschina.net/u/4264746/blog/3960763