資料介紹
本文試圖通過(guò)代碼來(lái)深入剖析Qualcomm手機(jī)開(kāi)機(jī)的整個(gè)過(guò)程,即從按下開(kāi)機(jī)鍵一直到出現(xiàn)待機(jī)界面,Qualcomm的手機(jī)軟件在整個(gè)流程中究竟完成了哪些工作。本文的主要目標(biāo)是理清手機(jī)的初始化流程,并為今后Amoi定做初始化工作提供一個(gè)參考。
一、開(kāi)機(jī)的簡(jiǎn)要流程分析
Qualcomm的平臺(tái)軟件支持兩種啟動(dòng)方式:一種是Nor Flash啟動(dòng)方式,另外一種就
是Nand Flash啟動(dòng)方式。Nor Flash啟動(dòng)方式就相當(dāng)于硬件直接找到一個(gè)入口點(diǎn)開(kāi)始執(zhí)行代碼,相比較而言會(huì) 比較簡(jiǎn)單,且Amoi沒(méi)有采用此種方式,所以本文對(duì)于這種方式不做詳細(xì)分析。另外一種就是Nand Flash啟動(dòng)方式,這種方式和PC的啟動(dòng)方式比較相像,也是Amoi采用的Boot方式,下面將詳細(xì)分析在此方式下面的開(kāi)機(jī)過(guò)程。
按下開(kāi)機(jī)鍵之后,將產(chǎn)生一個(gè)時(shí)鐘中斷,從而通知AMSS主芯片的Boot Load硬件去將放置于Nand Flash上面的第一個(gè)Block(8K)里面的Boot代碼Copy到內(nèi)核內(nèi)存(RAM,這個(gè)內(nèi)存應(yīng)該是CPU自帶的內(nèi)存,同后面提到的SDRAM有一定區(qū)別,可以把它當(dāng)作CPU的Cache)的0xFFFF0000地址,并開(kāi)始執(zhí)行Boot代碼。Boot的主要任務(wù)是完成整個(gè)系統(tǒng)的硬件初始化工作(類(lèi)似于PC上面的BIOS所完成的硬件自檢工作,至于Boot的詳細(xì)工作機(jī)制,后文會(huì)有詳細(xì)描述)。Boot所完成的工作里面,最重要的一件事就是會(huì)將整個(gè)手機(jī)軟件代碼(AMSS軟件包)拷貝到SDRAM中,并最后將控制權(quán)交給AMSS軟件。說(shuō)白了,就是Boot執(zhí)行完成之后,代碼的執(zhí)行點(diǎn)將由Boot跳轉(zhuǎn)到AMSS軟件的的入口點(diǎn)函數(shù)main()。(此函數(shù)在mobile.c里實(shí)現(xiàn))。
代碼運(yùn)行到了Main()之后,在這個(gè)函數(shù)里面將完成操作系統(tǒng)(rex)的初始化工作,其實(shí)現(xiàn)方法是調(diào)用 rex_init()。Rex_init()完成的工作很簡(jiǎn)單:
1.完成操作系統(tǒng)必要的一些數(shù)據(jù)結(jié)構(gòu)(timer鏈表、任務(wù)鏈表等))的初始化之外;
2.接下來(lái),它創(chuàng)建了三個(gè)任務(wù),分別是:rex_idle_task、rex_dpc_task和tmc_task。
Idle任務(wù)沒(méi)什么好解釋的,目前這個(gè)任務(wù)為空,什么也沒(méi)做,dpc_task目前不知道是做什么的,暫時(shí)可以不用管。前面的這兩個(gè)任務(wù)都屬于操作系統(tǒng)層面的,由操作系統(tǒng)來(lái)維護(hù),和手機(jī)軟件關(guān)系不大。哪一個(gè)和手機(jī)軟件關(guān)系大呢?答案是:tmc_task。大家可以把這個(gè)當(dāng)作操作系統(tǒng)的入口(主)任務(wù),也可以把它當(dāng)作整個(gè)手機(jī)軟件的入口任務(wù)。即AMSS軟件里的所有其它任務(wù)的創(chuàng)建和維護(hù)就是由這個(gè)tmc_task來(lái)完成的。
到此為止,整個(gè)AMSS軟件還并沒(méi)有跑起來(lái),只是跑到了tmc_task里面了。在tmc_task里面,會(huì)調(diào)用tmc_init()來(lái)完成整個(gè)AMSS軟件包的初始化工作,其中最重要的一項(xiàng)工作就是調(diào)用tmc_define_tasks()將AMSS軟件包所有需要的任務(wù)都創(chuàng)建起來(lái)了。比如說(shuō)slee_task、dog_task、cm_task、wms_task、ui_task等。這些任務(wù),一般不需要直接和AL層軟件打交道,但請(qǐng)大家記住,手機(jī)上所有功能的實(shí)現(xiàn)最根本點(diǎn)就是由這些服務(wù)組件(Service Task)來(lái)完成的。將來(lái)大家跟蹤一個(gè)具體的功能模塊時(shí),比如說(shuō)通話(huà)模塊,如果需要,可以再去深入研究它的具體實(shí)現(xiàn)。
好了,到現(xiàn)在為止,所有的AMSS核心軟件就全部跑起來(lái)了(手機(jī)的功能模塊,在軟件方面就體現(xiàn)為OS層面的一個(gè)任務(wù))。但現(xiàn)在大家還根本看不到Brew和AEE的影子。呵呵,各位不要急。到了這個(gè)層面之后,我想稍微多說(shuō)幾句。最早的Qualcomm平臺(tái),比如說(shuō)5xxx系列,是根本沒(méi)有Brew的,那個(gè)時(shí)候的AL(Application Layer)層軟件開(kāi)發(fā),是直接調(diào)用底層Service task所提供的API來(lái)完成相應(yīng)的工作的。從這種角度來(lái)看的話(huà),顯然那時(shí)的開(kāi)發(fā)是比較郁悶和難度較高的。不過(guò),到了65xx之后,Qualcomm平臺(tái)引入了Brew,手機(jī)開(kāi)發(fā)商就沒(méi)必要去從這么底層(Service API)的層面進(jìn)行手機(jī)開(kāi)發(fā)了,他們完全可以基于Brew來(lái)實(shí)現(xiàn)一臺(tái)手機(jī)的所有功能(Qualcomm給我們的參考代碼,就是全Brew平臺(tái)的)。
Brew的運(yùn)行環(huán)境AEE是如何跑起來(lái)的呢?關(guān)鍵在于ui_task(),由于ui_task和我們手機(jī)開(kāi)發(fā)的關(guān)系非常密切,其地位也相當(dāng)重要,所以,后文我將單獨(dú)對(duì)它進(jìn)行一個(gè)深入的研究與分析。到目前為止,大家只需要知道ui_task將AEE加載起來(lái)了,并且,它起到了一個(gè)中間層的作用,即所有AMSS底層服務(wù)組件的消息,都將經(jīng)由ui_task而轉(zhuǎn)到AEE,并最終轉(zhuǎn)到具體的App(Applet)的執(zhí)行代碼里面(HandleEvent())。
注意:
1.上述的開(kāi)機(jī)過(guò)程,在每一次按開(kāi)機(jī)鍵都需要走一遍,即關(guān)機(jī)之后,整個(gè)系統(tǒng)的所有功能都將消失,而不像有些手機(jī),看起來(lái)是關(guān)了機(jī),但實(shí)際上底層還是有一些軟件模塊在跑。為什么可以肯定地說(shuō)上述開(kāi)機(jī)過(guò)程每次都必須走一遍,原因很簡(jiǎn)單,因?yàn)槲覀兊钠脚_(tái)軟件是基于Nand Flash啟動(dòng)的,所有的代碼都需要Copy到SDRAM才能運(yùn)行,而關(guān)機(jī)斷電之后,SDRAM里的東東會(huì)全部丟失,所以,毫無(wú)疑問(wèn),上述的過(guò)程必須每次開(kāi)機(jī)都執(zhí)行;
2.關(guān)機(jī)的過(guò)程相對(duì)比較簡(jiǎn)單,系統(tǒng)檢測(cè)到關(guān)機(jī)中斷之后,將調(diào)用tmc_powerdown_handler()來(lái)完成關(guān)機(jī)動(dòng)作,它將把所有AMSS的任務(wù)都Stop掉,并最后調(diào)用rex_exit()退出Rex,從而完成整個(gè)關(guān)機(jī)動(dòng)作。
3.顯然,關(guān)機(jī)動(dòng)作前,如果有必要,每一個(gè)任務(wù)必須將它希望保存的信息保存到Flash上面,以便下次開(kāi)機(jī)時(shí)可以得到這些信息;
?
- 電磁爐的維修全過(guò)程分享 84次下載
- 手工制作pcb全過(guò)程 0次下載
- 正激有源鉗位的詳細(xì)分析 63次下載
- 用C語(yǔ)言開(kāi)發(fā)DSP系統(tǒng)的全過(guò)程的講解 22次下載
- IGBT制作全過(guò)程資料下載
- 360 N5手機(jī)碎屏拆解維修全過(guò)程 1次下載
- 功率放大電路的仿真資料詳細(xì)分析 30次下載
- 如何實(shí)現(xiàn)LTE無(wú)線(xiàn)網(wǎng)絡(luò)優(yōu)化案例的詳細(xì)分析 22次下載
- Uboot啟動(dòng)的全過(guò)程詳細(xì)資料分析 6次下載
- Buck變換器原理詳細(xì)分析 30次下載
- uboot1-1-6代碼詳細(xì)分析 25次下載
- 圖解詳說(shuō)proteus7.4安裝全過(guò)程 0次下載
- 組裝電腦全過(guò)程視頻教程
- 水利工程全過(guò)程造價(jià)管理關(guān)鍵因素分析
- CPU制造全過(guò)程
- 詳細(xì)分析MOSFET開(kāi)關(guān)過(guò)程米勒效應(yīng)的影響 7614次閱讀
- 芯片制造全過(guò)程 1.1w次閱讀
- 鴻蒙系統(tǒng)逐步跟蹤系統(tǒng)調(diào)用實(shí)現(xiàn)全過(guò)程 1805次閱讀
- 功率MOSFET的詳細(xì)分析講解 5973次閱讀
- 基于Boonton功率表的脈沖射頻部件及系統(tǒng)的詳細(xì)分析 1060次閱讀
- 繪制原理圖的基本規(guī)測(cè)和各種電氣控制原理圖詳細(xì)分析 6010次閱讀
- 使用機(jī)器視覺(jué)進(jìn)行藥片缺陷檢測(cè)的詳細(xì)分析 4815次閱讀
- 物聯(lián)網(wǎng)的產(chǎn)業(yè)生態(tài)是怎樣的詳細(xì)分析概述 5181次閱讀
- 詳細(xì)分析高速通信和數(shù)據(jù)中心的時(shí)序要求以及時(shí)鐘振蕩器解決方案 7946次閱讀
- openwrt啟動(dòng)過(guò)程詳細(xì)分析 1.2w次閱讀
- 基于代碼無(wú)法重用的詳細(xì)分析 3522次閱讀
- 詳解bootloader的執(zhí)行流程與ARM Linux啟動(dòng)過(guò)程分析 1w次閱讀
- RFID系統(tǒng)產(chǎn)生的安全隱患及針對(duì)性的解決策略方案詳細(xì)分析 1941次閱讀
- uboot編譯過(guò)程詳細(xì)分析 3.1w次閱讀
- 焊接技術(shù)詳細(xì)分析 1905次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開(kāi)關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開(kāi)發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論