日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MDM9x35MDM9x35启动流程简介

發(fā)布時間:2025/3/15 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MDM9x35MDM9x35启动流程简介 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、前言.... 3

1.1編寫背景... 3

1.2概述... 3

1.3定義與縮寫... 3

1.4參考資料... 4

2、啟動流程.... 4

2.1子系統(tǒng)、處理器及啟動地址... 4

2.2啟動流程框圖... 4

2.3啟動流程詳情... 5

2.4流程功能表... 7

3、軟件代碼結(jié)構(gòu).... 8

3.1代碼結(jié)構(gòu)圖... 8

3.2文件目錄說明... 9

3.3編譯方法... 11

4、總結(jié).... 11

1、前言
1.1編寫背景
最近在解決MIFI關(guān)機狀態(tài)下充電去logo的問題時跟蹤了一下開機流程也查閱了一些資料,決定做下記錄,鞏固MDM9x35平臺知識的學(xué)習(xí),加深對高通9635平臺的了解,也為同樣在學(xué)習(xí)高通該平臺啟動流程的人做參考。起初硬著頭皮分析代碼,看了些天發(fā)現(xiàn)還是一頭霧水,被9x35的架構(gòu)給套住了,總是以之前高通其它平臺的原理去想9x35平臺的問題,最后一點點分析高通文檔,再結(jié)合代碼才勉強搞清楚了9635平臺軟件的大致架構(gòu)。

1.2概述
本文檔簡要的介紹了高通MDM9x35的啟動流程,通過閱讀讀者可以大致的了解9x35平臺是如何正常啟動起來的。由于能力有限,加上寫作功底欠佳,其中難免會有錯誤之處,懇請指正,如有誤導(dǎo)大家之處,懇請諒解。

1.3定義與縮寫
本文檔中使用的術(shù)語如表1-1術(shù)語表所示,大多為高通的縮略詞

縮寫、術(shù)語

解釋、含義

RPM

Resource Power Manager(資源電源管理子系統(tǒng))

APPS

Applications(應(yīng)用子系統(tǒng))

Modem

調(diào)制解調(diào)(基帶)處理子系統(tǒng)

ADSP

Advanced Digital Signal Processor(數(shù)字信號處理器)

PBL

Primary?Bootloader(主引導(dǎo)加載程序)

SBL

Second Bootloader(二級引導(dǎo)加載程序)

SDI

System Debug Image(系統(tǒng)debug鏡像)

TZ

TrustZone(信任區(qū))

MBA

Modem Boot Authenticator(調(diào)制解調(diào)器引導(dǎo)認(rèn)證)

AMSS

Advanced Mobile Subscriber Software(高通自己的操作系統(tǒng))

LPASS

Low Power Audio SubSystem(低功耗音頻子系統(tǒng))

SMEM

shared memory(共享內(nèi)存)

L2 TCM

Tightly-Coupled Memory(緊耦合內(nèi)存)

HLOS

High-level Operation System(高級操作系統(tǒng))

QRD

Qualcomm Reference Design(高通參考設(shè)計)

LK

Little Kernel

FW

Firmware(固件)

PIL

Peripheral image loader(外圍鏡像加載)

1.4參考資料
查閱、參考資料如表1-2所示。

序號

文檔名稱

作者或資料來源

1

80-NH740-7_D_MDM9x35_Boot_Architecture_BSP_Overview

QRD

2

80-NH740-43_A_Enable_Secure_Boot_MDM9x35_ASICs

QRD

3

《高通msm8994啟動流程簡介》

Web

4

《8926平臺boot過程分析》

Web

5

 

 

2、啟動流程
2.1子系統(tǒng)、處理器及啟動地址
MDM9X35正常運行一共包含四個子系統(tǒng):資源功耗管理子系統(tǒng)(RPMR)、應(yīng)用子系統(tǒng)(APSS)、低功耗音頻子系統(tǒng)(LPASS)和調(diào)制解調(diào)器(基帶)處理子系統(tǒng)(MPSS);不同的系統(tǒng)運行在不同的處理器上,Hexagon為高通驍龍的高級DSP,他們的處理器及啟動地址如表2-1所示。

子系統(tǒng)

處理器

啟動地址

RPM

Cortex-M3

0x0

APSS

Cortex-A7

Configurable

LPASS

Hexagon?

Configurable

MPSS

Hexagon

Configurable

2.2啟動流程框圖
如圖2-2為MDM9x35的啟動流程框圖摘自高通文檔,注意圖中帶顏色的箭頭有助于我們理解。


2.3啟動流程詳情
通過圖2-2能明朗的看出啟動流程:

1、系統(tǒng)Power On MDM9x35芯片復(fù)位,第一個執(zhí)行的CPU為Cortex-M3,其運行的是RPM鏡像的PBL軟件。這個PPM的PBL程序和后面的APPS PBL、Modem PBL(圖2-2的灰色部分)應(yīng)該是固化在ROM中的,高通不對我們開源,至少我沒有在軟件代碼中找到這三個PBL對應(yīng)的代碼

2、在Cortex-M3中運行RPM PBL執(zhí)行基本的電量和功率檢測,然后復(fù)位APP處理器Cortex-A7(不開源)

3、APPS處理器 Cortex-A7執(zhí)行APPS PBL,他從啟動設(shè)備中加載并鑒定SBL1鏡像到L2(as TCM),然后跳轉(zhuǎn)到SBL1執(zhí)行

4、SBL1開始執(zhí)行,他首先初始化DDR,然后從啟動設(shè)備中加載并鑒定TZBSP鏡像到DDR, TZBSP執(zhí)行完冷啟動的初始化(cold_boot_init)執(zhí)行權(quán)交回SBL1

5、SBL1從啟動設(shè)備中加載并鑒定SDI鏡像到DDR,,SDI建立安全環(huán)境執(zhí)行權(quán)交回SBL1

6、SBL1從啟動設(shè)備中加載并鑒定RPM固件到PPMcode RAM

7、RPM(Cortex-M3)開始執(zhí)行RPM固件,此處RPM的執(zhí)行可能由APPS的SBL1通知執(zhí)行

8、SBL1從啟動設(shè)備中加載并鑒定HLOS APPSBL(此處就是我們熟悉lk,它是用來啟動linux的bootload)到DDR

9、、SBL1通過系統(tǒng)調(diào)用(TZ trap syscall)通知TZ boot loader啟動完成,然后TZ跳轉(zhuǎn)到APPSBL執(zhí)行

10、APPSBL(lk)初始化系統(tǒng),然后加載HLOS kernel(linux)

11、HLOS kernel起來之后根據(jù)需要通過PIL加載MBA和modem鏡像到DDR

12、HLOS kernel復(fù)位Modem處理器,ModemPBL開始運行

13、Modem PBL從DDR中將MBA拷貝到modem TCM中,然后在modemTCM中鑒定MBA

14、MBA鑒定DDR中的AMSS鏡像,然后運行amss系統(tǒng)

15、HLOS kernel根據(jù)需要通過PIL加載LPASS鏡像到DDR,TZ鑒定它,然后HLOS復(fù)位LPASS

Note:

A、執(zhí)行SBL1鏡像文件,代碼位于“MDM9x35-LE3.0/boot_images/core/boot/secboot3/hw/mdm9x35/sbl1/sbl1.s”,這里是一個啟動過程非常重要的地方,分析代碼你會發(fā)現(xiàn)它的主要功能便是啟動TZBSP、SDI、RPM、APPSBL四個模塊

B、4.5.6.這三步是通過SBL1來啟動TZBSP,SDI,RPM三個模塊,他們的代碼分別位于“/trustzone_images,/debug_image,/rpm_proc”中

C、RPM?PBL也可以調(diào)用RPM功能,RPM模塊相關(guān)的代碼位于"/rpm_proc"目錄中

結(jié)合圖2-2附一張串口啟動流程實時打印圖2-3:

2.4流程功能表
表2-4為啟動流程的組成和相應(yīng)的功能圖

組成

處理器

加載

執(zhí)行

功能

RPM PBL

M3

NA

PRM ROM and CodeRAM

復(fù)位APPS處理器

APPS PBL

Cotex-A7

NA

APPS ROM and L2 as TCM(stack)

啟動設(shè)備,接口檢測,緊急下載模式支持,加載并鑒定SBL1

SBL1

Cotex-A7

NAND

L2 as TCM

配置DDR,加載鑒定TZ,RPM_FW,加載鑒定SDI,APPSBL,提供memory dump支持

TZ

Cotex-A7

NAND

LPDDR2

更具安全需求和啟動模式配置XPU,NAND MPU

RPM_FW

M3

NAND

RPM CodeRAM

資源功耗管理

SDI

Cotex-A7

NAND

OCIMEM

配置DDR,dump cache,flush cache和其他軟件支持debug配置

APPSBL

Cotex-A7

NAND

LPDDR2

開機第一幅圖,加載鑒定kernel,提供bl特別功能

HLOS

Cotex-A7

NAND

LPDDR2

啟動高級操作系統(tǒng),復(fù)位外圍設(shè)備并加載相應(yīng)的鏡像

Modem PBL

Q6

NA

Modem ROM and Q6 TCM

(stack)

初始化Q6 TCM,從LPDDR2拷貝MBA到TCM,鑒定MBA

MBA

Q6

NAND

Q6 TCM(loaded from LPDDR2)

鑒定modem鏡像,

xPU protects

the DDR regions for modem, memory dump

3、軟件代碼結(jié)構(gòu)
3.1代碼結(jié)構(gòu)圖
如圖3-1為代碼結(jié)構(gòu)圖:


3.2文件目錄說明
圖3-1中除了(askey_proc、binaries)差不多每個目錄都會編譯成一個鏡像文件,所以每個目錄基本都是獨立的一套程序,互相之間沒有函數(shù)調(diào)用。

下面逐個對上面的文檔進(jìn)行簡要介紹.(PS?:?這些軟件代碼基本不需要進(jìn)行深入分析,因為這些代碼基本都是成熟的功能塊,不需要修改,有時間有興趣可以深入研究下)?

?

adsp_proc?:?這個目錄保存的是adsp處理器的軟件,adsp是與audio相關(guān)的dsp,audio的音頻數(shù)據(jù)就是通過這個處理器處理的.?里面基本是高通定制的efs無源代碼。

?

apps_proc:這個目錄主要是APPS部分代碼,包括lk,kernel和應(yīng)用層代碼等,應(yīng)用層的修改主要在這個地方。

?

askey_proc:這個目錄主要存放編譯生成的版本、鏡像、配置及編譯信息等相關(guān),客戶自己定制不做詳細(xì)介紹。

?

Binaries:這個目錄主要存編譯生成的鏡像、bin文件相關(guān)與askey_proc差不多,自己定制不做詳細(xì)介紹。

?

boot_image?:?顧名思義,這里存放的是與啟動相關(guān)的代碼,前文中提到的SBL1的代碼就位于這個目錄下,具體位置為:/boot_images/core/boot/secboot3/hw/mdm9x35/sbl1/sbl1.s,分析啟動過程時,這是一個很重要的文件,很多功能是通過它來開啟的,比如trustzone,rpm,sdi,最后也是通過它來加載lk,由lk加載linux.需要注意的是,這個代碼已經(jīng)不屬于modem端代碼了,它是運行在ap處理器上的.所以說9x35平臺是先啟動ap端后由ap端啟動modem端。

?

cnss_proc?:?CNSS是高通的wifi模塊,這個目錄里主要存放了與wifi相關(guān)的固件.

?

common?:?這個目錄里面存放了主要的編譯工具和一些trace32調(diào)試工具的腳本文件.

?

debug_image?:?這個文件夾下的文件最終會編譯成一個簡稱為SDI的鏡像文件,該鏡像文件的主要功能是在系統(tǒng)崩潰后會通過安全看門狗主動把當(dāng)時的程序執(zhí)行環(huán)境dump到存儲器中,這樣有利于解決死機問題,這項功能可以不打開.詳細(xì)介紹可參考高通文檔?:?80-NH740-27_A_MDM9x30_MDM9x35_LE_Software_System_Debug_Manual.pdf

??

modem?_proc?:?這個目錄下的文件都是與通信相關(guān)的代碼,即真正的modem端代碼.與8x25平臺的modem端代碼概念已經(jīng)不一樣了,9x35平臺的modem端是包括了很多功能,比如audio,但是9x35平臺的modem端只與通信模塊相關(guān),有關(guān)射頻的代碼我也沒有分析過.

?

rpm_proc?:?RPM是一個單獨的處理器,其目標(biāo)是降低MDM的平均功耗.其有三種工作模式?:power-efficient??flexible??extensible.其主要功能是動態(tài)的進(jìn)行電源管理.具體的管理電源的幾種方式可參考高通文檔或直接分析源碼.解決電源管理方面的問題或許要看這里的代碼.

?

trustzone_images?:?TZ是一個基于硬件的安全環(huán)境,?是Krait處理器(ARM7系列)的安全模式,類似于Supervisor模式. TZ軟件層由兩個主要部分組成?:?TZBSP?和?TZOS/QSEE

TZOS/QSEE提供兩個主要功能:

1.?系統(tǒng)軟件和硬件在從下電狀態(tài)到啟動和喚醒期間初始化系統(tǒng)安全環(huán)境.

2.?在系統(tǒng)運行期間為存儲空間和其它子系統(tǒng)提供保護(hù)和服務(wù).(這里可能翻譯不太準(zhǔn)確,英文原文見高通文檔)

TZ是在SBL啟動階段被加載,用戶可以自定義和編譯TZ鏡像文件,包括TZBSP和TZ/QSEE(tz.mbn\tzbsp_no_xpu)

3.3編譯方法
整個工程是由OpenEmbedded(oe bitbake)自動構(gòu)建系統(tǒng)進(jìn)行自動化編譯的,這部分原理本人未研究過,僅限于會編譯,具體編譯原理及方法可參見高通文檔:80-N5576-44_E_9x15_9x25_9x35_LE_SW_Build_Process

?

4、總結(jié)
?????????本文僅限于框架流程式的概要介紹MDM9x35的正常啟動流程,其過程相對比較復(fù)雜,PBL、SBL、LK、Kernel、Modem等任一流程展開都可以大篇幅介紹,以后有機會學(xué)習(xí)再詳述。希望讀者通過閱讀本文檔能對MDM9x35平臺的啟動過程有個大致的了解。


————————————————
版權(quán)聲明:本文為CSDN博主「suvine」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/hesunwen/article/details/71423463

總結(jié)

以上是生活随笔為你收集整理的MDM9x35MDM9x35启动流程简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。