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

歡迎訪問 生活随笔!

生活随笔

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

综合教程

转载-Qualcomm MSM8953启动流程:PBL-SBL1-(bootloader)LK-Android

發(fā)布時間:2023/12/19 综合教程 47 生活家
生活随笔 收集整理的這篇文章主要介紹了 转载-Qualcomm MSM8953启动流程:PBL-SBL1-(bootloader)LK-Android 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章轉(zhuǎn)載鏈接:

https://blog.csdn.net/RadianceBlau/article/details/73229005

對于嵌入式工程師了解芯片啟動過程是十分有必要的,在分析、調(diào)試各種問題的時候都有可能涉及到這方面的知識,同時這部分知識也是比較復(fù)雜的,因為其中涉及到芯片內(nèi)部架構(gòu),啟動各個階段軟件代碼執(zhí)行順序,啟動模式等等。下面以比較常用的Qualcomm MSM8953芯片的啟動過程為例,進行宏觀分析,下面是啟動流程:

(1)處理器核心

從上面的框圖可以看到MSM8953中的處理器有5個,分別為:

APPS,Cortex A53 core,運行android;
RPM(Resource Power Manager),CortexM3 core,主要用于低功耗應(yīng)用;
Modem(MSS_QDSP6),高通自有指令集處理器,處理3G、4G通信協(xié)議等;
Pronto(WCNSS) ,處理wifi相關(guān)代碼;
LPASS,音頻相關(guān)。

對應(yīng)下面芯片硬件結(jié)構(gòu)圖中各個處理器的框圖來看就很清晰了:

(2)啟動image介紹

PBL(Primary Boot Loader),位于rom中,是芯片上電后執(zhí)行的真正第一行代碼,在正常啟動流程中會加載SBL1。如果啟動異常會虛擬出9008端口用于緊急下載(短接板子上的force_boot_from_usb引腳(MSM8953 為gpio37)到1.8v可以強制進入緊急下載模式);
SBL1(Second BootLoader stage 1), 位于eMMC中,由PBL加載,初始化buses、DDR、clocks等,會虛擬出9006端口,用于不能開機時dump ram;
QSEE/TrustZone,安全相關(guān),如fuse;
DEVCFG OEM配置信息(如OEMLock);
Debug Policy 調(diào)試相關(guān);
APPSBL, 即為BootLoader,目前使用LK(little kernel);
HLOS(High LevelOperating System) ,即為Linux/Android;
Modem PBL,即為Modem處理器的PBL;
MBA(Modem BootAuthenticator),Modem處理器啟動鑒權(quán)。

(3)啟動流程

系統(tǒng)上電,使MSM8953從上電復(fù)位開始運行。
在Cortex A53中運行的PBL會加載:

a、從啟動設(shè)備(如eMMC)加載SBL1 segment1到L2(即為TCM);

b、加載SBL1 segment2到RPM處理器的RAM中。

SBL1 segment1會初始化DDR,然后完成如下加載:

a、從啟動設(shè)備加載QSEE image到DDR;

b、從啟動設(shè)備加載DEVCFG image到DDR;

c、從啟動設(shè)備加載Debug Policy image到DDR;

d、從啟動設(shè)備加載HLOS APPSBL image到DDR;

e、從啟動設(shè)備加載RPMfirmware image到RPM的RAM中。

SBL1移交運行控制權(quán)給QSEE。QSEE建立安全運行環(huán)境,配置xPU,支持fuse。

a、SBL1運行在AArch32模式,而QSEE運行在AArch64模式。為了切換到AArch64模式,SBL1會啟動重映射器,操作RMR寄存器,然后觸發(fā)warm-reset,QSEE就能夠運行在AArch64模式了。

QSEE通知RPM啟動RPM 固件的執(zhí)行。
QSEE移交運行控制權(quán)給HLOS APPSBL:

a、 APPSBL只能在AArch32模式開始運行;

b、這時AArch32的運行模式切換是在EL3/Monitor模式完成的。通過查看APPSBL的ELF頭能夠得知其需要運行在32位指令集架構(gòu)下。EL3/Monitor模式改變到32位模式,然后再啟動APPSBL。

APPSBL加載、驗證kernel。APPSBL通過SCM調(diào)用改變到HLOS kernel需要的AArch64模式。這和之前LK直接跳轉(zhuǎn)到kernel運行是不同的。
HLOS kernel通過PIL加載MBA到DDR。
HLOS kernel對Hexagon modem DSP進行解復(fù)位。
Modem PBL繼續(xù)它的啟動。
HLOS kernel 通過PIL加載AMSS modemimage到DDR。
Modem PBL驗證MBA然后跳轉(zhuǎn)到MBA。
HLOS通過PIL加載WCNSS(Pronto)image到DDR。
HLOS對WCNSS(Pronto)進行解復(fù)位以便Prontoimage開始執(zhí)行。
HLOS通過PIL加載LPASS image到DDR。
HLOS對LPSAA進行解復(fù)位以便LPASSimage開始執(zhí)行。

下面是流程的簡化圖,其中區(qū)分了AArch32和AArch64位的QSEE/TrustZone:

(4)關(guān)于eMMC和DDR的初始化時間問題

從上面的描述中已經(jīng)可以看清,為避免迷惑,在分離出來看看:

PBL中是含有eMMC驅(qū)動的,有訪問eMMC的能力,自身運行在MCU內(nèi)部SRAM中;
除了PBL程序的img在MCU片內(nèi)ROM外,其余img均存儲在eMMC中;
PBL首先從eMMC加載SBL1到L2(內(nèi)部緩存并非DDR),SBL1同樣運行在片內(nèi)SRAM;
有SBL1初始化DDR各種時序后,DDR自此可用(eMMC一直可用);
再由SBL1加載其余各個img到DDR,然后按照linux的正常順序啟動。

關(guān)于ARMv8架構(gòu)的知識,推薦如下博客:

http://blog.csdn.net/forever_2015/article/details/50285865

總結(jié)

以上是生活随笔為你收集整理的转载-Qualcomm MSM8953启动流程:PBL-SBL1-(bootloader)LK-Android的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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