lk启动流程介绍:
lk启动流程介绍:
lk简单介绍
LK是little kernel的缩写
高通平台android普遍采用lk作为bootloader,lk是整个系统的引导部分,不是独立存在的,只支持arm和x86平台。
LK的作用
主要就是在操作系统内核启动之前运行的一段程序,初始化一些硬件设备,将内核加载从ROM到RAM中,并且做好映射关系。
lk代码架构
芯片启动流程介绍
1:上电后芯片内部ROM(只读)的PBL先运行,从emmc中加载SBL1到TCM(芯片的二级缓存)
2:SBL1主要会初始化总线 内存 时钟等,同时会加载校验 QSEE或者TZ(安全相关)、QHEE(虚拟机执行环境)、RPM_FW(电源管理)、APPSBL(LK)等镜像。执行完后将权限交给QSEE
3: QSEE通知RPM执行RPM_FW相关代码,将执行权交给APPSBL
4:LK加载HLOS的kernel
LK启动流程粗略介绍
1:进行各种早期的初始化工作,包括 cpu, emmc, ddr, clocks, thread 等。
2:判断进入 recovery 或 fastboot 的条件是否被触发。
3:从 emmc 中获取 boot.img 并加载到指定内存分割区域 (scratch region)。
4:从 scratch region 加载 kernel 到 KERNEL_ADDRESS 。
5:从 scratch region 加载 ramdisk 到 RAMDISK_ADDRESS 。
6:加载设备树到 TAGS_ADDRESS 。
7:关闭 cache, interrupts, 跳转到 kernel。
。