Android-RIL結(jié)構(gòu)分析與移植

Android-RIL結(jié)構(gòu)分析與移植

ID:38978306

大?。?8.23 KB

頁數(shù):14頁

時(shí)間:2019-06-22

Android-RIL結(jié)構(gòu)分析與移植_第1頁
Android-RIL結(jié)構(gòu)分析與移植_第2頁
Android-RIL結(jié)構(gòu)分析與移植_第3頁
Android-RIL結(jié)構(gòu)分析與移植_第4頁
Android-RIL結(jié)構(gòu)分析與移植_第5頁
資源描述:

《Android-RIL結(jié)構(gòu)分析與移植》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、Android?RIL結(jié)構(gòu)分析與移植介紹本文檔對(duì)AndroidRIL部分的內(nèi)容進(jìn)行了介紹,其重點(diǎn)放在了AndroidRIL的原生代碼部分。包括四個(gè)主題:1.AndroidRIL框架介紹2.AndroidRIL與WindowsMobileRIL3.AndroidRILporting4.AndroidRIL的java框架在本文檔中將Android代碼中的重要模塊列出進(jìn)行分析,并給出了相關(guān)的程序執(zhí)行流程介紹,以加深對(duì)模塊間交互方式的理解。對(duì)于java代碼部分,這里僅進(jìn)行簡單的介紹。如果需要深入了解,可以查看相關(guān)參考資料。本文檔中還對(duì)AndroidRIL的Porting部分內(nèi)容進(jìn)行了描述和

2、分析。針對(duì)對(duì)unix操作系統(tǒng)環(huán)境并不熟悉的讀者,本文檔中所涉及到的相關(guān)知識(shí)包括:?Unixfilesystem?Unixsocket?Unixthread?Unix下I/O多路轉(zhuǎn)接以上信息可以在任意一份描述Unix系統(tǒng)調(diào)用的文檔中找到。1.AndroidRIL框架介紹術(shù)語:fd??????????????????????unix文件描述符pipe?????????????????????unix管道cond?????????????????????一般是conditionvariable的縮寫tty??????????????????????通常使用tty來簡稱各種類型的終端設(shè)備u

3、nsolicitedresponse????????被動(dòng)請(qǐng)求命令來自basebandeventloop????????????????android的消息隊(duì)列機(jī)制,由unix的系統(tǒng)調(diào)用select()實(shí)現(xiàn)init.rc????????????????????init守護(hù)進(jìn)程啟動(dòng)后被執(zhí)行的啟動(dòng)腳本。HAL????????????????????硬件抽象層(HardwareAbstractionLayer,HAL)1.1.AndroidRIL概況:AndroidRIL提供了無線硬件設(shè)備與電話服務(wù)之間的抽象層。下圖展示了RIL在Android體系中的位置。android的ril位于應(yīng)用程

4、序框架與內(nèi)核之間,分成了兩個(gè)部分,一個(gè)部分是rild,它負(fù)責(zé)socket與應(yīng)用程序框架進(jìn)行通信。另外一個(gè)部分是VendorRIL,這個(gè)部分負(fù)責(zé)向下是通過兩種方式與radio進(jìn)行通信,它們是直接與radio通信的AT指令通道和用于傳輸包數(shù)據(jù)的通道,數(shù)據(jù)通道用于手機(jī)的上網(wǎng)功能。?對(duì)于RIL的java框架部分,也被分成了兩個(gè)部分,一個(gè)是RIL模塊,這個(gè)模塊主要用于與下層的rild進(jìn)行通信,另外一個(gè)是Phone模塊,這個(gè)模塊直接暴露電話功能接口給應(yīng)用開發(fā)用戶,供他們調(diào)用以進(jìn)行電話功能的實(shí)現(xiàn)。1.2.AndroidRIL目錄結(jié)構(gòu):Android的RIL模塊位于Android/hardware

5、/ril文件夾,有三個(gè)子模塊:rild,libril,reference-ril●include文件夾:包含RIL頭文件,最主要的是ril.h●rild文件夾:RIL守護(hù)進(jìn)程,開機(jī)時(shí)被init守護(hù)進(jìn)程調(diào)用啟動(dòng),里面僅有main函數(shù)作為入口點(diǎn),負(fù)責(zé)完成RIL初始化工作。在rild.c文件中,將完成ril的加載過程,它會(huì)執(zhí)行如下操作:?動(dòng)態(tài)加載VendorRIL的.so文件?執(zhí)行RIL_startEventLoop()開啟消息隊(duì)列以進(jìn)行事件監(jiān)聽?通過執(zhí)行VendorRIL的rilInit()方法來進(jìn)行VendorRIL與libril的關(guān)系建立。在rild文件夾中還包括一個(gè)radioop

6、tions.c文件,它的作用是通過串口將一些radio相關(guān)的參數(shù)直接傳給rild來對(duì)radio進(jìn)行配置。●libril文件夾:在編譯時(shí)libril被鏈入rild,它為rild提供了event處理功能,還提供了在rild與VendorRIL之間傳遞請(qǐng)求和響應(yīng)消息的能力。Libril提供的主要功能分布在兩個(gè)主要方法內(nèi),一個(gè)是RIL_startEventLoop()方法,另一個(gè)是RIL_register()方法RIL_startEventLoop()方法所提供的功能就是啟用eventLoop線程,開始執(zhí)行RIL消息隊(duì)列。RIL_register()方法的主要功能是啟動(dòng)名為rild的監(jiān)聽端

7、口,等待java端通過socket進(jìn)行連接。●reference-ril文件夾:Android自帶的VendorRIL的參考實(shí)現(xiàn)。被編譯成.so文件,由于本部分是廠商定制的重點(diǎn)所在。所以被設(shè)計(jì)為松散耦合,且可靈活配置的。在rild中通過opendl()的方式加載。librefrence.so負(fù)責(zé)直接與radio通信,這包括將來自libril的指令轉(zhuǎn)換為AT指令,并且將AT指令寫入radio中。reference-ril會(huì)接收調(diào)用者傳來的參數(shù),參數(shù)內(nèi)容為與radio的通

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。