开始接手高通开发的有关工作,为了调试底层驱动,因此有必要了解高通平台上电启动的流程是怎么样的。
以 MSM8953 为例子。
MSM:mobile station modems,移动基带处理器,即:带基带的手机处理器
Reference:https://www.cnblogs.com/asreg/articles/9531152.html
Secure Boot :安全启动。
加密:
1、APP PBL
( Primary BootLoader
): 位于rom(只读)中,是芯片上电后执行的真正第一行代码,在正常启动流程中会加载 SBL1
。
如果启动异常会虚拟出
9008
端口用于紧急下载模式,短接板子上的force_boot_from_usb
引脚(MSM8953 为gpio37)到1.8v以达到强制进入紧急下载模式的目的。 在紧急下载模式时可以使用QFILE工具进行Download。
2、SBL1( Second BootLoader stage 1)
:位于EMMC中,由PBL加载,初始化 buses、DDR、clocks等,会虚拟出9006
端口,用于不能开机时dump ram。
3、QSEE/TrustZone
:安全相关,如fuse(安全熔丝)。QSEE
指的是 Qualcomm Secure Execution Environment
4、DEVCFG
:OEM配置信息(如OEMLock)。
5、 Debug Policy
: 调试相关。
6、APPSBL
:BootLoader,通常使用LK(LittleKernel)。
7、HLOS( High Level Operating System)
:即为Linux/Android。
8、Modem PBL
:Modem处理器的PBL。
9、MBA(Modem Boot Authenticator)
:Modem处理器启动认证。
注意:
可以看到MSM8953中的处理器有5个子系统,分别为:
软件层面的启动流程为:PBL --> SBL --> QSEE/TE --> LK --> Kernel --> Android
启动流程:
1、系统上电,使MSM8953从上电复位开始运行。
2、在Cortex A53中运行的PBL会加载各部分到对应的内存中:
3、SBL1 segment1会初始化DDR,并完成如下加载:
此时DDR才允许使用,而EMMC在一开始就可以使用了。
4、SBL1移交运行控制权给QSEE。QSEE建立安全运行环境,配置xPU,支持fuse。
5、QSEE通知RPM启动RPM固件的执行。
6、QSEE移交运行控制权给HLOS APPSBL(Bootloader)。
7、APPSBL加载、验证kernel。APPSBL通过SCM调用改变到HLOS kernel需要的AArch64模式。这和之前LK直接跳转到kernel运行是不同的。
8、HLOS kernel通过PIL加载MBA到DDR。
9、HLOS kernel对Hexagon modem DSP进行解复位。
10、Modem PBL继续它的启动。
11、HLOS kernel 通过PIL加载AMSS modemimage到DDR。
12、Modem PBL验证MBA然后跳转到MBA。
13、HLOS通过PIL加载WCNSS(Pronto)image到DDR。
14、HLOS对WCNSS(Pronto)进行解复位以便Prontoimage开始执行。
15、HLOS通过PIL加载LPASS image到DDR。
16、HLOS对LPSAA进行解复位以便LPASSimage开始执行。
原文:https://www.cnblogs.com/schips/p/how_qualcomm_soc_boot.html