董思博,周園園,王祿祿
沈陽師范大學物理科學與技術學院,遼寧 沈陽 110034
隨著移動通信的發(fā)展以及互聯(lián)網(wǎng)向移動終端的普及,網(wǎng)絡和用戶對移動終端的要求越來越高,而Symbian,Windows Mobile,Iphone OS等手機平臺過于封閉。隨著通信產(chǎn)業(yè)的不斷發(fā)展,智能手機也向集通話,上網(wǎng),多媒體,郵件多功能于一體的掌上電腦方向發(fā)展。Android支持wifi,采用webKit瀏覽器,擁有pushmail,Google地圖和搜索等眾多網(wǎng)絡應用,它的出現(xiàn)讓人耳目一新,它的發(fā)展更是手機與互聯(lián)網(wǎng)結合的必然趨勢。Android包括操作系統(tǒng)、中間件和一些關鍵的平臺應用,是一款真正意義的開放性的移動設備綜合平臺。Android是允許所有廠商和個人在其基礎上進行開發(fā),由Linux+Java構成的開源軟件。Android平臺的開放性特點既有助于降低開發(fā)成本,由能促進技術的創(chuàng)新,更可使運營商能方便的定制自己的特色化產(chǎn)品,具有相當強大的市場發(fā)展?jié)摿Α?/p>
Android在框架結構的設計包含一組核心應用程序的應用層,提供包括系統(tǒng)各式組建的庫層、應用層需API接口的應用程序框架層,android的核心庫提供Java類庫提供的絕大部分功能,每個Android應用都運行在自己的進程上。最下面是提供安全、內存管理、進程管理、網(wǎng)絡組、驅動模塊的和硬件抽象層的內核層。
為了簡化通訊模塊設計的復雜性,Android的通訊模塊的設計采用分層的模式,這樣使各層相互獨立而又相互高效的協(xié)調工作,當其中一層發(fā)生變化時,其他上下兩層均不受到任何影響,這樣各層更加靈活,更加獨立,各層只用提供標準化的接口,方便了模塊間的替換,增強了其平臺代碼的可移植性。目前市面上的智能機在硬件上多采用雙CPU的架構,一個是應用處理器,運行操作系統(tǒng)和各種應用程序,另一個是基帶處理器,主要處理語音信號的編碼,數(shù)字信號以及GSM,WCDMA的通信協(xié)議?;鶐幚砥?、射頻和其他外圍芯片作為一個模塊,成為GSM/GPRS,WCDMA modem,提供AT命令接口。我們需要在AP系統(tǒng)中有一個負責數(shù)據(jù)的可靠傳輸、AT命令的發(fā)送以及response的解析的模塊。Android系統(tǒng)提供了RIL這樣一個模塊來滿足我們的要求。通信系統(tǒng)的構架框圖如圖1。
圖1
通信系統(tǒng)的構架主要包括電話應用層、應用框架層、庫層、內核層、基帶層五部分。電話應用層,主要為電話,聯(lián)系人,短信,以及上網(wǎng)等跟電話相關的應用程序,負責完成通過調用framework的借口,人機調用,實現(xiàn)引用等各個功能。應用框架層則是將電話應用層傳下來的數(shù)據(jù)通過Phone相關借口封裝,通過CommandInterface發(fā)送給RIL,RIL負責將數(shù)據(jù)打包,通過socket傳送給下層的RILD(Radio Interface Layer Deamon)層,并且從RILD接收反饋信息傳送給應用層。內核層存在于在通信框架中,內核含有軟件與基帶通信的驅動,作為硬件與軟件之間的抽象層?;鶐觿t為獨立的通訊模塊,其實現(xiàn)了無線通訊功能。可以把它看作一個硬件設備,通過標準的RSR232串口連接,用標準的AT指令命令控制,可以更換。
Android包括操作系統(tǒng)、中間件和一些關鍵的平臺應用,是一款真正意義的開放性的移動設備綜合平臺。他是一組面向移動設備的軟件包,由操作系統(tǒng),中間和關鍵應用程序組成。由于Android的RIL和RILD的通訊是負責連接上層應用程序和底層modem,所以RIL和RILD的通訊時Android通訊的關鍵技術,對于不同的硬件系帶,只要在RILD作對應的修改,既可以完成android通訊功能在不同硬件環(huán)境,不同的基帶上的實現(xiàn)。Android平臺的數(shù)據(jù)傳送方式按照消息可分為兩類,第一類是從上層發(fā)送數(shù)據(jù),然后經(jīng)過RIL將數(shù)據(jù)打包,發(fā)送到RILD庫層,轉換成AT命令,發(fā)送給modem,處理后,由modem發(fā)送反饋信息,通過后由RILD和RIL的反饋到上一層,這樣表示一次數(shù)據(jù)的發(fā)送成功,已發(fā)送短信為例,其實現(xiàn)流程如下:
1)建立RILSender線程,通過sokcet向rild發(fā)送數(shù)據(jù);
2)建立dispatch線程,接受由soket發(fā)送過來的數(shù)據(jù);
3)獲取到對應的dispatch函數(shù),然后將數(shù)據(jù)解析成AT命令;
4)通過onRequest發(fā)送請求;
5)writeline寫到初始化打開的設備中;
6)建立線程readerLoop監(jiān)聽來自modem的反饋信息,轉化成上層能夠識別的數(shù)據(jù)包;
7)將接受的數(shù)據(jù)和信息網(wǎng)上發(fā),反饋給ril層;
8)建立RILReceiver線程,處理由下層反饋上來的信息,給應用層處理。
第二類是有modem直接上報的消息,通過RILD和RIL將數(shù)據(jù)發(fā)送給上層對應用的應用程序,然后由應用程序解析數(shù)據(jù)。這一類中,實現(xiàn)過程與上層發(fā)送數(shù)據(jù)之后的反饋過程大致相同,只是這里由OnUnsolicitedResponse()來處理直接由modem上報來的信息。
Android平臺的通信系統(tǒng)設計通過RIL(Radio Interface Layer)和RILD(Radio Interface Layer Deamon)連接了上層應用程序和底層的modem,由于RIL和RILD數(shù)據(jù)通過打包傳輸,只需根據(jù)所用硬件修改RILD對數(shù)據(jù)的解析以及反饋部分的代碼就可以將Android移植到不同的modem和不同的硬件環(huán)境,既可以保證通信的順利進行,所以,本文對android到不同硬件環(huán)境以及modem的移植做了較為詮釋。
[1]McGraw Hill.Android A Programmers Guide[M].Bettina Faltermeier,2008,7.
[2]胥袁,劉乃琦,郝玉潔.基于Symbian操作系統(tǒng)的套接字通信研究[D].電子科技大學,2008.
[3]黃佳荃,陳偉.基于Symbian OS的串行通信模塊研究[D].武漢理工大學,2008.
[4]Tuukka Karvonen.Implementation of the GSM 07.10 Linux Device Driver,2004.