背景

开始接手高通开发的有关工作,为了调试底层驱动,因此有必要了解高通平台上电启动的流程是怎么样的。

以 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启动流程的更多相关文章

  1. 高通msm8994启动流程简介

    处理器信息 8994包含如下子系统: 子系统 处理器 含义 APSS 4*Cortex-A53 应用子系统 APSS 4*Cortex-A57 应用子系统 LPASS QDSP6 v5.5A(Hexa ...

  2. 高通msm8994启动流程简单介绍

    处理器信息 8994包括例如以下子系统: 子系统 处理器 含义 APSS 4*Cortex-A53 应用子系统 APSS 4*Cortex-A57 应用子系统 LPASS QDSP6 v5.5A(He ...

  3. linux驱动由浅入深系列:PBL-SBL1-(bootloader)LK-Android启动过程详解之一(高通MSM8953启动实例)

    转自:http://blog.csdn.net/radianceblau/article/details/73229005 http://www.aiuxian.com/article/p-14142 ...

  4. 常见SOC启动流程分析

    本文以s5pv210这款SOC为例,分析了其启动流程 在s5pv210的SOC内部,存在着一个内部的ROM和一个内部的RAM 这个内部的ROM叫做 IROM,它是norflash的一种.其不同于板子上 ...

  5. 【转】高通平台android 环境配置编译及开发经验总结

    原文网址:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...

  6. 高通平台启动log概述(PBL log、sbl1 log、kernel log)【转】

    本文转自:https://blog.csdn.net/RadianceBlau/article/details/78416776?utm_source=blogxgwz9 高通平台启动log概述(PB ...

  7. UBOOT 启动流程

    一.概述 uboot 的启动流程在网上有很多大佬记录,但是了对于像我这样的新手就有些困难了,而我也不做 uboot 相关的工作,所以没必去研究代码,这里我特意整理了一下,以流程图的形式展现代码执行的流 ...

  8. 高通平台Bootloader启动流程【转】

    本文转载自:http://blog.csdn.net/fang_first/article/details/49615631 ====================基本知识============= ...

  9. android 6.0 高通平台sensor 工作机制及流程(原创)

    最近工作上有碰到sensor的相关问题,正好分析下其流程作个笔记. 这个笔记分三个部分: sensor硬件和驱动的工作机制 sensor 上层app如何使用 从驱动到上层app这中间的流程是如何 Se ...

  10. linux驱动由浅入深系列:高通sensor架构实例分析之三(adsp上报数据详解、校准流程详解)【转】

    本文转载自:https://blog.csdn.net/radianceblau/article/details/76180915 本系列导航: linux驱动由浅入深系列:高通sensor架构实例分 ...

随机推荐

  1. Listener监听器,实现一个显示在线用户人数

    Listener监听器,实现一个显示在线用户人数 每博一文案 关于后半身,脾气越温,福报越深. 师傅说:惜命最好的方式不是养生,而是管好自己的情绪. 坏毛病都是惯出来的,但好脾气都是磨出来的,与人生气 ...

  2. SAP集成技术(七)集成解决方案咨询方法论(ISA-M)

    目前,ISA-M 主要以 Microsoft PowerPoint 演示文稿的形式提供.可以在 SAP Community 博客文章(https://blogs.sap.com/)以及关于ISA-M ...

  3. 【停用词】NLP中的停用词怎么获取?我整理了6种方法

    目录 一.停用词介绍 二.停用词应用场景 2.1 提取高频词 2.2 词云图 三.停用词获取方法 3.1 自定义停用词 3.2 用wordcloud调取停用词 3.3 用nltk调取停用词 3.3.1 ...

  4. kali 忘记账户密码

    kali 忘记账户密码 重启 kali 虚拟机,在开始界面不需要选择,按 e 键 找到 Linux 开头的行,将 ro 处及该行后面的字符替换为:rw init=/bin/bash 按 F10 进入命 ...

  5. 🔥🔥httpsok-谷歌免费SSL证书如何申请

    httpsok-谷歌免费SSL证书如何申请 使用场景: 部署CDN证书.OSS云存储证书 证书类型: 单域名 多域名 通配符域名 混合域名 证书厂商: ZeroSSL Let's Encrypt Go ...

  6. python的requests模块详解

    原文链接:https://www.cnblogs.com/lanyinhao/p/9634742.html 1.模块说明 requests是使用Apache2 licensed 许可证的HTTP库. ...

  7. 【.NET项目分享】免费开源的静态博客生成工具EasyBlog,5分钟拥有自己的博客

    EasyBlog 说明 本博客系统通过构建工具生成纯静态的博客网站,借助GitHub Pages,你可以在5分钟内免费拥有个人博客. 它具有以下特点 生成纯静态网站,访问速度极快 使用markdown ...

  8. WPF 中使用附加属性解决 PasswordBox 的数据绑定问题

    1.前言 在 WPF 开发中 View 中的数据展示我们常通过 Binding 进行绑定.但是,使用 Binding 有一个前提:绑定的目标只能是依赖属性. 而 PasswordBox 控件中的 Pa ...

  9. 《最新出炉》系列入门篇-Python+Playwright自动化测试-48-Route类拦截修改请求-上篇

    1.简介 在日常工作和学习中,自动化测试的时候:在加载页面时,可能页面出现很多不是很重要或者不是我们所关注的,这个时候我们就可以选择不加载这些内容,以提高页面加载速度,节省资源.例如:可能页面上图片比 ...

  10. iOS手工Crash解析

    一.测试导出来一份ips crash文件,现在需要进行手工解析 现在需要下载对应的dsym文件,为了确定下载好的dsym文件和crash log是不是一致的,可以先看下dsym文件中的uuid p.p ...