热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

高通MSM8937/MSM8953/MSM8940/MSM8920/MSM8917启动流程简介

说明:本文讲解了关于MSM8937MSM8953MSM8940MSM8920MSM8917芯片组启动架构的概述处理器启动地址下面表格包括了MSM8937MSM8953MSM8940
说明:

本文讲解了关于MSM8937 / MSM8953 MSM8940 / MSM8920 / MSM8917芯片组启动架构的概述

处理器启动地址

下面表格包括了MSM8937/MSM8953//MSM8940/MSM8920/MSM8917 芯片组包含的处理器. 处理器类型和启动地址.

子系统/处理器 处理器 启动地址
APPS
Applications
应用
Cortex-A53 0x00100000*
RPM
Resource power Manager
资源功耗管理
Cortex-M30x00200000(子系统的视角)0x0(系统的视角)
Modem
基带
MSS_QDSP6 可配置的*
WCNSS (Pronto) ARM9 0x0 or 0xFFFF0000 or 硬件重新映射*
LPASS
低功耗音频子系统
(ADSP)
LPASS_QDSP6 可配置的* LPASS  


*系统和子系统视角中的引导地址没有变化

启动调用堆栈

TCM :Tightly-Coupled Memory,紧耦合内存

Some ARM SoCs have a so-called TCM (Tightly-Coupled Memory). This is usually just a few (4-64) KiB of RAM inside the ARM processor. 

一些arm socs所谓的TCM(紧耦合的内存),通常是指ARM处理器内部的几个仅有(4 - 64)kb RAM



CDT: Configuration Data Table,包含CDB0: platform info信息和CDB1: DDR配置参数。

PIL:Peripheral image loader 外围设备镜像加载器

HLOS: High-level operation system,高级操作系统,指包括Linux内核在内的整个Android系统

组成 基于处理器 加载自 执行在 功能
Application processor primary boot loader
(APPS PBL)
应用处理器PBL
芯片内部代码
Cortex-A53
(AArch32)
NA APPS ROM §启动设备和接口检测
§紧急下载模式支持
§加载并验证SBL1镜像片段在L2TCM和RPM code RAM
Loads andauthenticates SBL1 ELF segments across L2TCMand RPM code RAM
Secondary boot loader stage 1 (SBL1)
二级引导加载程序阶段1
sbl1.mbn
Cortex-A53
(AArch32)
eMMC L2 TCM
(分段1)
L2 TCM 初始化内存子系统 (buses, DDR, clocks, and CDT)
§加载/鉴定TrustZone, DEVCFG, RPM_FW, APPS BL 镜像(lk), memory dump 通过 USB 2.0 和 Sahara
§看门狗调试保留, 比如, L2 刷新
§RAM dump到eMMC/SD的支持, USB driver 的支持, USB 充电,温度检测, PMIC driver 的支持, 配置 DDR, and 刷新 L1/L2/ETB到崩溃调试
§支持相关的配置
OCIMEM(不懂)-
RPM code RAM
(分段2)
RPM code RAM
QSEE/TrustZone
tz.mbn
Cortex-A53
(AArch64)
eMMC LPDDR3 相当于 TZBSP
§建立安全运行环境,
§配置 xPU,
§支持 fuse driver
§验证一些子系统镜像
§添加异常复位调试功能
DEVCFG
devcfg.mbn
Cortex-A53
(AArch64)
eMMC LPDDR3 §OEM配置数据, 比如, xPU 配置
§PIL 加载镜像区
Debug policy1
(不知道是什么)
Cortex-A53
(Aarch32)
eMMC LPDDR3 商业安全设备上启用调试
Resource Power Manager Firmware (RPM_FW)
rpm.mbn
Cortex-M3 eMMC RPM code RAM 资源功耗管理
APPSBL/boot manager and OS loader
emmc_appsboot.mbn
Cortex-A532
(AArch32/
AArch64)
eMMC LPDDR3显示开机第一张图, 加载和验证kernel (实指linux kernel), and
提供使用UEFI HLOS-specific引导加载程序的功能
High-Level Operating System (HLOS)
boot.img
system.img
userdata.img
...
Cortex-A53
(AArch32/AArch64)
eMMC LPDDR3 Boots HLOS images, for example, A53 HLOS kernel image, WCNSS (Pronto) image, and so on.
Modem Primary Boot Loader (Modem PBL)
芯片内部代码
MSS_QDSP6 NA Modem ROM
Qualcomm® Hexagon™ TCM
(data and stack)
§创建 Hexagon TCM
§从LPDDR3拷贝MBA到Hexagon TCM, 然后在Hexagon TCM中鉴定MBA
Modem Boot Authenticator (MBA)
NON-HLOS.bin
MSS_QDSP6 eMMC Hexagon TCM §鉴定modem固件
§xPU protects the DDR regions for modem, and memory dump


1Debug policy固件是SBL可选择加载的固件. 更多信息参考Debug Policy Version 2 User Guide (80-NV396-72).

2LK boot loader starts in 32-bit.




启动流程



1. 系统上电 ,让MSM8937/MSM8953/MSM8940/MSM8920应用处理器CPU复位.

2. APPS PBL在Cortex-A53上运行, 加载并校验 SBL1

a.SBL1 segment 1 from the boot device to L2 (as TCM).

b.SBL1 segment 2 (SDI equivalent) to RPM code RAM, then jumps to SBL1.

3. SBL1 segment 1 初始化DDR 并加载和校验以下内容:

a.QSEE/TrustZone镜像从启动设备到DDR.

b.DEVCFG镜像从启动设备到DDR.

c.Debug Policy镜像从启动设备到DDR.

d.HLOS APPSBL(lk)镜像从启动设备到DDR.

e.RPM firmware镜像从启动设备到RPM code RAM.




4. SBL1将执行权交给QSEE/TrustZone. QSEE/TrustZone建立安全环境, 配置 xPU, 支持the fuse driver.

a.SBL1运行在32位模式. QSEE/TrustZoneruns运行在64位模式. 因为64位模式转变, SBL1 为QSEE入口设置加载重新映射, 写入RMR register,然后触发热启动. QSEE这时运行在64位模式.

5. QSEE 通知RPM处理器来启动RPM固件执行.

6. QSEE 将执行权限交给HLOS APPSBL(lk)来初始化系统.

a.The Linux APPS boot loader (HLOS APPSBL) 一开始仅执行在32位模式下.

b.这种做法是通过EL3/Monitor模式,通过查看ELF头对于HLOS APPSBL, 这表明它使用32位指令集架构. EL3/Monitor改变为32-bit模式并使得HLOS APPSBL执行在32-bit模式.

7. HLOS APPSBL(lk)加载并校验HLOS kernel(Linux内核). LK通过在退出前使SCM调用安全监视器表明HLOS kernel64位模式. LK不像以前那样直接跳进内核.

8. HLOS kernel加载MBA到DDR通过PIL.

9. HLOS kernel带来Hexagon modem DSP重置.

10. Modem PBL然后继续它的启动过程.

11. HLOS kernel加载AMSS modem镜像到DDR通过PIL.

12. Modem PBL校验MBA然后跳转到它.

13. HLOS加载WCNSS (Pronto)镜像到DDR通过PIL.

14. HLOS使WCNSS (Pronto)镜像重置,因此Pronto镜像开始执行.

15. HLOS加载LPASS镜像到DDR通过PIL.

16. HLOS使得LPASS镜像重置,LPASS镜像开始执行.



注:本文大部分翻译自高通文档


推荐阅读
  • uboot与linux驱动1.uboot本身是裸机程序(1)在裸机中本来是没有驱动概念的(狭义的驱动概念是指在操作系统中用来具体操控硬 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • STM32 IO口模拟串口通讯
    转自:http:ziye334.blog.163.comblogstatic224306191201452833850647前阵子,调项目时需要用到低波 ... [详细]
  • 原文地址http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/最开始时 ... [详细]
  • C#设计模式之八装饰模式(Decorator Pattern)【结构型】
    一、引言今天我们要讲【结构型】设计模式的第三个模式,该模式是【装饰模式】,英文名称:DecoratorPattern。我第一次看到这个名称想到的是另外一个词语“装修”,我就说说我对“装修”的理 ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Win10 64位旗舰版的优势及特点详解
    本文详细介绍了Win10 64位旗舰版的优势及特点,包括更安全的源安装盘、永久激活方式、稳定性和硬件驱动的集成,以及人性化的维护工具和分区功能。通过阅读本文,您将了解到Win10 64位旗舰版相比其他版本的优势和特点。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • Windows7企业版怎样存储安全新功能详解
    本文介绍了电脑公司发布的GHOST WIN7 SP1 X64 通用特别版 V2019.12,软件大小为5.71 GB,支持简体中文,属于国产软件,免费使用。文章还提到了用户评分和软件分类为Win7系统,运行环境为Windows。同时,文章还介绍了平台检测结果,无插件,通过了360、腾讯、金山和瑞星的检测。此外,文章还提到了本地下载文件大小为5.71 GB,需要先下载高速下载器才能进行高速下载。最后,文章详细解释了Windows7企业版的存储安全新功能。 ... [详细]
  • x86 linux的进程调度,x86体系结构下Linux2.6.26的进程调度和切换
    进程调度相关数据结构task_structtask_struct是进程在内核中对应的数据结构,它标识了进程的状态等各项信息。其中有一项thread_struct结构的 ... [详细]
  • AstridDAO 专访:波卡稳定币黑马 BAI
    加入Pol ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有