高通SOC启动流程
背景
开始接手高通开发的有关工作,为了调试底层驱动,因此有必要了解高通平台上电启动的流程是怎么样的。
以 MSM8953 为例子。
MSM:mobile station modems,移动基带处理器,即:带基带的手机处理器
Reference:https://www.cnblogs.com/asreg/articles/9531152.html
有关概念
Secure Boot :安全启动。
- 目的:厂家发布的产品,只能跑他们自家的软件,从而防止第三方进行恶意修改,进而影响到系统稳定、安全。
- 原理:SecureBoot 与系统启动流程息息相关,通过镜像校验链,一步一步建立起一个可信的运行环境,从而保证安全类应用的执行安全。
- 流程:高通的 Secure Boot 原理与 展锐 的基本一样:
- 通过将密钥及安全配置文件写到 efuse (只能写一次)
- 此后的每次启动时,镜像执行时会使用密钥校验认证后面的镜像,判断其是否是终端厂家的软件,如果不是,则终止启动流程。
加密:
- 密钥,对称加密,非对称加密(公钥、私钥)
启动框图

启动相关image介绍
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处理器启动认证。
注意:
- PBL中是含有EMMC驱动的,有访问EMMC的能力,自身运行在MCU内部SRAM中。
- PBL首先从EMMC加载SBL1到L2(内部缓存并非DDR),SBL1同样运行在片内SRAM。
可以看到MSM8953中的处理器有5个子系统,分别为:

启动流程
软件层面的启动流程为:PBL --> SBL --> QSEE/TE --> LK --> Kernel --> Android
启动流程:
1、系统上电,使MSM8953从上电复位开始运行。
2、在Cortex A53中运行的PBL会加载各部分到对应的内存中:
- a) 从启动设备(如EMMC)加载SBL1 segment1到L2(即为TCM,Tightly-Coupled Memory,紧耦合内存)。
- b) 加载SBL1 segment2到RPM处理器的RAM中。
3、SBL1 segment1会初始化DDR,并完成如下加载:
此时DDR才允许使用,而EMMC在一开始就可以使用了。
- a)从启动设备加载QSEE image到DDR。
- b)从启动设备加载DEVCFG image到DDR。
- c)从启动设备加载Debug Policy image到DDR。
- d)从启动设备加载HLOS APPSBL(Bootloader) image到DDR。
- e)从启动设备加载RPM firmware image到RPM的RAM中。
4、SBL1移交运行控制权给QSEE。QSEE建立安全运行环境,配置xPU,支持fuse。
- 因为SBL1运行在AArch32模式,而QSEE运行在AArch64模式。为了切换到AArch64模式,SBL1会启动重映射器,操作RMR寄存器,然后触发warm-reset,QSEE就能够运行在AArch64模式了。
5、QSEE通知RPM启动RPM固件的执行。
6、QSEE移交运行控制权给HLOS APPSBL(Bootloader)。
- APPSBL只能在AArch32模式开始运行。
- 这时AArch32的运行模式切换是在EL3/Monitor模式完成的。通过查看APPSBL的ELF头能够得知其需要运行在32位指令集架构下。EL3/Monitor模式改变到32位模式,然后再启动APPSBL。
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开始执行。
附录:各子系统构件框图

高通SOC启动流程的更多相关文章
- 高通msm8994启动流程简介
处理器信息 8994包含如下子系统: 子系统 处理器 含义 APSS 4*Cortex-A53 应用子系统 APSS 4*Cortex-A57 应用子系统 LPASS QDSP6 v5.5A(Hexa ...
- 高通msm8994启动流程简单介绍
处理器信息 8994包括例如以下子系统: 子系统 处理器 含义 APSS 4*Cortex-A53 应用子系统 APSS 4*Cortex-A57 应用子系统 LPASS QDSP6 v5.5A(He ...
- linux驱动由浅入深系列:PBL-SBL1-(bootloader)LK-Android启动过程详解之一(高通MSM8953启动实例)
转自:http://blog.csdn.net/radianceblau/article/details/73229005 http://www.aiuxian.com/article/p-14142 ...
- 常见SOC启动流程分析
本文以s5pv210这款SOC为例,分析了其启动流程 在s5pv210的SOC内部,存在着一个内部的ROM和一个内部的RAM 这个内部的ROM叫做 IROM,它是norflash的一种.其不同于板子上 ...
- 【转】高通平台android 环境配置编译及开发经验总结
原文网址:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...
- 高通平台启动log概述(PBL log、sbl1 log、kernel log)【转】
本文转自:https://blog.csdn.net/RadianceBlau/article/details/78416776?utm_source=blogxgwz9 高通平台启动log概述(PB ...
- UBOOT 启动流程
一.概述 uboot 的启动流程在网上有很多大佬记录,但是了对于像我这样的新手就有些困难了,而我也不做 uboot 相关的工作,所以没必去研究代码,这里我特意整理了一下,以流程图的形式展现代码执行的流 ...
- 高通平台Bootloader启动流程【转】
本文转载自:http://blog.csdn.net/fang_first/article/details/49615631 ====================基本知识============= ...
- android 6.0 高通平台sensor 工作机制及流程(原创)
最近工作上有碰到sensor的相关问题,正好分析下其流程作个笔记. 这个笔记分三个部分: sensor硬件和驱动的工作机制 sensor 上层app如何使用 从驱动到上层app这中间的流程是如何 Se ...
- linux驱动由浅入深系列:高通sensor架构实例分析之三(adsp上报数据详解、校准流程详解)【转】
本文转载自:https://blog.csdn.net/radianceblau/article/details/76180915 本系列导航: linux驱动由浅入深系列:高通sensor架构实例分 ...
随机推荐
- Stable Diffusion中的embedding
Stable Diffusion中的embedding 嵌入,也称为文本反转,是在 Stable Diffusion 中控制图像样式的另一种方法.在这篇文章中,我们将学习什么是嵌入,在哪里可以找到它们 ...
- 一个 5.2k+ Star 的微服务商城系统
大家好,我是 Java陈序员. 自从微服务开始流行之后,各种商城系统.外卖系统可是层出不穷.面试的时候人人都说做过商城系统,导致现在一听电商系统就是烂大街的项目. 黑格尔曾经说过:存在即合理.电商系统 ...
- 2021~2022Apache大数据相关项目盘点
一.晋升为Apache TLP(Top-Level Project)的大数据相关项目 1.1.Apache DataSketches (20210203) 1.2.Apache Gobblin (20 ...
- github、gitee冲突配置ssh key
背景 当有多个git账号时,比如: a. 两个gitee,一个账号是用于公司内部的工作开发,一个账号是自己学习的个人账号: b. 一个github,用于自己进行一些开发活动: 操作: 生成不同的key ...
- CentOS加载yum源时报错 [Errno 14] HTTP Error 404 - Not Found Trying other mirror.
报错内容: [root@192 yum.repos.d]# yum repolist Loaded plugins: fastestmirror, product-id, search-disable ...
- swagger文档枚举类型描述
背景: 问题:使用swagger作为api文档,但文档中的枚举类型仅显示枚举name,对于使用文档的人员来讲不容易理解 解决思路:枚举类型加上自定义的描述 解决方案 maven配置 <depen ...
- PageOffice 6 最简集成代码(VUE+Springboot)
本文描述了PageOffice产品在(VUE+Springboot)前后端分离的项目中如何集成调用.调用PageOffice打开文件的主要核心代码是:后端Springboot项目中第6步和前端VUE项 ...
- hashMap添加key重复时返回值的形式
hashMap添加key重复 System.out.println(map.put(1, 0)); // null System.out.println(map.put(1, 1)); // 0 Sy ...
- 在线电子表格编辑器 Luckysheet
下载地址 不知道地址正不正经,我先用着,网上找的地址,不知道是不是可信任的,疑似官网的两个地址都打不开, https://github.com/dream-num/Luckysheet zip包 h ...
- SimpleHTTPServer模块详解
SimpleHTTPServer实现文件的展示和下载 可以用python2.7直接启动一个进程.以命令执行的当前目录为页面根目录,如果不存在index.html,默认展示当前目录的所有文件. pyth ...