硬件工程師要了解Android開機流程干嘛?很多小伙伴肯定會提出質(zhì)疑,甚至工作多年的硬件“老鳥”也會對此不屑一顧。
你且聽我細細道來。
對于做過高通或MTK等平臺項目的同學而言,一定經(jīng)常面對開關機類問題的分析,是不是被折磨的酸爽,經(jīng)常不知所措,碰到這類問題眼前一黑,不知從哪里開始分析。
如果此時的你,很熟悉Android開機流程的話,你就可以通過一份串口log(有可能干路問題,一點log沒有),初步定位到出問題的模塊,接著再針對性分析即可,是不是立馬神清氣爽了。
那么今天就以高通平臺為例,給大家簡單講解一下Android開機流程。(在此,特別感謝我軟件哥)
高通平臺的啟動流程可以大致分為四個階段:PBL--SBL--UEFI--Kernel,分別對應圖上的4個部分。
PBL(Primary Boot Loader):初始啟動加載的意思,這一階段運行在SOC的ROM里,主要是校驗和加載接下來要執(zhí)行的SBL鏡像。
SBL(Second Boot Loader):第二階段啟動加載的意思,這一階段主要是初始化PMIC、Flash、DDR,并加載大量鏡像文件到DDR中,包括接下來要執(zhí)行的UEFI鏡像。
UEFI(Unified Extensible Firmware Interface):統(tǒng)一可擴展固件接口的意思,這一階段主要是校驗和加載Kernel的鏡像。需要注意的是,顯示模塊也是在該階段首次做初始化,電亮第一幅圖片。這是我們分析不開機類問題時,可以直觀感受到的一個節(jié)點。
Kernel:核心的意思,作用正如其名字一般,這一階段會開始初始化各種驅(qū)動和子系統(tǒng),并校驗system和vendor等鏡像,最后啟動各種服務,最后就到Android上層、Home界面啦。(咱們搞硬件的,這一階段重點關注各模塊初始化就可以,上層服務的問題一般和我們無關)
至此,想必你對這么復雜的開機流程已經(jīng)有了一定了解了。那在log中,這幾個階段都是如何對應的呢?以如下部分log舉例,從PBL到UEFI,每個階段開始和結(jié)束都會伴隨著"xxx Start,xxx End"字樣。
需要注意的是,PBL階段本身并不吐log,只是到了SBL之后打印出了之前約定好的做事順序而已。
好了,作為一名成熟的硬件工程師,也該學會為你的BSP同學分擔一點壓力了,不用萬事先找軟件抓log啦。
以上就是本期分享的所有內(nèi)容啦,歡迎大家持續(xù)關注,更多干貨正在快馬加鞭地趕來。