1. 程式人生 > >高通MSM8937/ MSM8953/MSM8940/MSM8920/MSM8917啟動流程簡介

高通MSM8937/ MSM8953/MSM8940/MSM8920/MSM8917啟動流程簡介

說明: 本文講解了關於MSM8937 / MSM8953 MSM8940 / MSM8920 / MSM8917晶片組啟動架構的概述 處理器啟動地址 下面表格包括了MSM8937/MSM8953//MSM8940/MSM8920/MSM8917 晶片組包含的處理器. 處理器型別和啟動地址.
子系統/處理器 處理器 啟動地址
APPS
Applications
應用
Cortex-A53 0x00100000*
RPM
Resource power Manager
資源功耗管理
Cortex-M3 0x00200000(子系統的視角) 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映象開始執行.

注:本文大部分翻譯自高通文件