MSM8909+Android5.1.1启动流程(1)---概述
PBL:APPS PBL(ApplicationPrimary Boot Loader),主引导加载程序
RPM:ResourcePower Manager,资源电源管理器
RPM(ResourcePower Manager)是高通MSM平台另外加的一块芯片,虽然与AP芯片打包在一起,但其是一个独立的ARM Core。之所以加这个东西,就是要控制整个电源相关的shared resources,比如ldo,clock。负责与SMP,MPM交互进入睡眠或者唤醒整个系统。
L2 TCM:Tightly-CoupledMemory,紧耦合内存
Some ARM SoC:s have a so-called TCM(Tightly-Coupled Memory). This is usually just a few (4-64) KiB of RAM insidethe ARM processor.
Due to being embedded inside the CPU TheTCM has a Harvard-architecture, so there is an ITCM (instruction TCM) and aDTCM (data TCM). The DTCM can not contain any instructions, but the ITCM canactually contain data.
CDT: Configuration Data Table,包含CDB0: platform info信息和CDB1: DDR配置参数。
TZ:
PIL:Peripheralimage loader
MBA:Modem Boot Authenticator,调制解调器引导认证
HLOS:High-leveloperation system,高级操作系统
Pronto image:
SMEM : shared memory
RPC : remote procedure call
QCSBL : qualcomm second bootloader
OEMSBL : oem second bootloader
AMSS : Advanced Mobile Subscriber Software
SDI : System Debug Image
QSEE : Qualcomm Secure Execution Environment
TZBSP : TrustZone BSP
SBL1:ScondaryBoot Loader Stage1
MSS:MobileSubscriber Software移动用户软件
在ARM的集成开发环境中,只读的代码段和常量被称作RO段(ReadOnly);可读写的全局变量和静态变量被称作RW段(ReadWrite);RW段中要被初始化为零的变量被称为ZI段(ZeroInit)
1. Msm8909启动涉及部分的介绍
(1) APPS PBL(Application PrimaryBoot Loader)--------Cortex-A7
主引导加载程序,此程序的ZI/RW所需要的内容由L2 TCM和RPM codeRAM分配,在ROM中执行。引导程序功能是引导设备和接口检测、紧急下载模式的支持、通过L2 TCM和RPM CodeRAM加载和认证SBL1 ELF片段(segments)。
(2) SBL1(Scondary Boot LoaderStage1) --------Cortex-A7
二级引导程序第1阶段,保存在EMMC/NAND中,负责初始化内存子系统(buses、DDR、clocks和CDT),加载和认证TZ、RPM_FW与APPSBL镜像,通过USB2.0和Sahara内存转储,保留看门狗调试,支持RAM转储到EMMC/SD,大容量储存模式支持,USB驱动支持、USB充电、温度检测、PMIC驱动支持、配置DDR和flush L1/L2/ETB to crash调试支持相关的配置
(3) QSEE(Qualcomm Secure ExecEnvironment) --------Cortex-A7
高通安全执行环境,从NAND/EMMC中拷贝到LPDDR2/3中执行,等同于TZBSP(TrustZoneBSP),创建安全运行时执行环境、配置xPU、支持fluse驱动、创建SMMU配置等
(4) RPM_FW----Cortex-M3
RPM : Resource Power Manager,资源电源管理器,是高通MSM平台另外加的一块芯片,虽然与AP芯片打包在一起,但其是一个独立的ARM Core。之所以加这个东西,就是要控制整个电源相关的shared resources,比如ldo,clock。负责与SMP,MPM交互进入睡眠或者唤醒整个系统。
从NAND/EMMC中拷贝出来,在RPM CodeRAM中运行
(5) APPSBL image--------Cortex-A7
从NAND/EMMC中拷贝出来,在LPDDR2/3中运行,功能丰富的引导程序HLOS,加载/认证内核、recovery模式等等。
(6) Modem PBL(Modem Primary BootLoader)-----------MSS Q6
在ROM中执行,创建Q6 TCM、从LPDDR2中加载MBA到Q6 TCM中并认证和锁住SMMU CB。
MSS:MobileSubscriber Software移动用户软件
(7) MBA(Modem Boot Authenticator)
调试解调器启动认证,从NAND/EMMC中拷贝到LPDDR2/3和Q6 TCM中运行,认证modem镜像、xPU保护modem的DDR区域
(8)
2. Msm8909的启动流程
PBL--->SBL1--->QSEE/TZ
(1) 芯片上电复位到地址0,Cortex-A7 APPS在自带的ROM中开始执行PBL
(2) PBL从EMMC中拷贝SBL1的第1段到L2 TCM中,执行和认证。
(3) PBL从EMMC中拷贝SBL1的第2段到RPM CodeRAM中,执行和认证,然后调整到SBL1中。
SBL1的第2段相当于DDR驱动+SDI相当于拷贝RPM代码到RAM中,DDR由SBL1的第2段初始化,也包含了SDI部分功能。
(4) SBL1第1段从EMMC中拷贝QSEE/TZ镜像到DDR中并认证
(5) SBL1第1段从EMMC中拷贝RPM固件到RPM CodeRAM中并认证。
(6) SBL1第1段从EMMC中拷贝HLOSAPPSBL镜像到DDR中并认证
(7) SBL1第1段转移到QSEE/TZ中执行。
(8) QSEE/TZ创建安全环境和开始执行RPM固件。
(9) QSEE/TZ跳转到HLOS APPSBL开始执行
(10) HLOS APPSBL加载和认证HLOS内核
(11) HLOS内核通过PIL加载MBA到DDR。---(a)
(12) HLOS内核复位modem DSP Q6,Modem PBL开始执行---(b)
(13) HLOS内核通过PIL加载AMSS modem镜像到DDR----(c)
(14) Modem PBLcong DDR中拷贝MBA到modem TCM并认证MBA,且跳转到MBA镜像中执行。---(c’)
(15) MBA认证modem镜像兵跳转到modem中----(c’’)
(16) HLOS通过PIL加载Pronto镜像到DDR中---(d)
(17) HLOS复位Pronto,pronto镜像开始执行。
3. Msm8909芯片组
Msm8909芯片组包含了APPS、RPM、Modem和Pronto处理器,