摘要:描述了在嵌入式Linux下J2ME運行平臺的設計和實現,解決了J2ME平臺中較難解決的中文化問題,提出了一種包括KVM和MIDP移植、觸摸屏操作、無線上網、文件下載安裝并運行MIDlet程序等一系列功能的比較完整的J2ME運行平臺的方案。
關鍵詞:嵌入式系統; J2ME KVM MIDP; GPRS
中圖法分類號:TP311.11文獻標識碼:A
文章編號:1001-3695(2007)01-0264-03
隨著移動終端設備的蓬勃發展,市場上出現了各式各樣的硬件設備和軟件平臺。如何使業務的設計者從網絡運營商中獨立出來以便,設計出可以跨平臺的應用程序,將其置于業務提供商(或設備生產商)的網絡中,從而可供各種移動終端的用戶下載和安裝,目前這一模式已成為一種新型的商業模式。鑒于此,Sun公司在Java跨平臺特性的基礎上,提出可以保證在消費電子設備和嵌入式終端運行的Java 2 Micro Edition(J2ME)。
目前關注J2ME的技術人員有兩類:應用程序設計者(如游戲程序員、移動商務設計人員等),必須保證他們設計的Java程序符合J2ME規范;嵌入式設備生產商,必須保證他們生產的設備支持J2ME應用程序。目前大部分技術文獻主要集中討論前者,而涉及到后者的不多。但對嵌入式生產廠家來說,后者屬于產品的核心技術,因此本文的討論屬于第二類。
本文提出了一種J2ME在嵌入式Linux操作系統中實現的方案,主要包括應用于移動電話、PDA等信息家電的KVM 1.1和MIDP 2.0的移植。解決了J2ME運行平臺中較難解決的中文化問題;實現了具有通過GPRS無線通信模塊上網,利用嵌入式瀏覽器ViewML瀏覽網頁,下載安裝并運行MIDlet程序等一系列功能的比較完整的J2ME運行平臺的方案,并且通過修改TinyX圖形平臺的驅動,實現了該J2ME運行平臺的觸摸屏輸入操作。
1J2ME平臺
J2ME是Java 2標準版本的微型版本,支持各種各樣的消費類產品和嵌入式設備,如移動電話、PDA、互聯網可視電話、數字機頂盒、車載娛樂和導航系統、網絡交換設備以及信息家電等。J2ME是為了那些使用有限的能源、有限的網絡連接(通常是無線連接)以及有限圖形用戶界面能力的設備開發的。它最初的目標是16位或32位處理器,16MHz時鐘頻率,512KB或更少內存的設備。J2ME用配置(Configuration)來封裝虛擬機。配置由一個虛擬機和一組支持的核心API組成。配置層上面是配置文件(Profile)。在一個配置上面可以有多個不同的配置文件。配置文件是在配置的基礎上進一步細分一組特定設備,并定義一組支持這類設備的類庫。鑒于應用J2ME的硬件平臺有著較大的差異,所以根據硬件的差異分成兩類:CLDC(Connected Limited Device Configuration)與基于其上的Foundation Profile和Personal Profile,以及CDC(Connected Device Configuration)與基于其上的MIDP(Mobile Information Device Profile)。
J2ME的CLDC包括K虛擬機(KVM)和一組核心類庫,主要是針對用戶接口簡單、內存較小、網絡運行時連時斷以及帶寬較窄的小型無線設備。其中KVM是JVM的一個實現,特別用于如移動電話、PDA等設備。關于J2ME的配置及配置文件間的關系,如圖1所示。
MIDP具體定義了J2ME適用的硬件和軟件框架,并提供了這個框架要實現的基本功能及標準接口;應用開發者可以基于這個框架開發出各種應用。MIDP 2.0定義了一系列軟件接口,包括基本輸入/輸出、圖形用戶接口、網絡、事件機制、文件系統、應用管理系統、游戲接口、聲音輸出接口和安全機制。
2J2ME運行平臺的總體構建
整個J2ME運行平臺的總體結構如圖2所示。系統采用三星S3C2410芯片作為CPU構建成接有觸摸屏和LCD的硬件系統;通過串口連接GPRS無線通信模塊,為無線上網提供硬件條件。
軟件部分,以運行在后臺的TinyX圖形界面服務器為MIDP界面提供服務。在完成GPRS接入網絡的情況下,使用嵌入式瀏覽器ViewML來瀏覽網頁,選擇J2ME應用程序。選定應用程序后,調用MIDP下載并安裝J2ME應用程序。最后,在J2ME運行時環境運行J2ME程序。圖3顯示了這個流程。
2.1TinyX
Sun公司發布的MIDP參考實現是針對i386的,其圖形界面使用X Window。要使MIDP能夠運行在嵌入式系統中,我們必須對MIDP的圖形界面作相應的移植。在這里,我們使用TinyX。
TinyX——“極小的X”,是一個為嵌入式系統而開發的緊縮型的X Window服務器。它由SuSE贊助支援開發,由XFree86的核心小組成員Keith Packard一手設計開發。TinyX的設計目標是讓系統在極少內存的情況下良好運行,并且TinyX采用的DDX技術,使整個X系統能在內存接近不足的情況下,仍然能夠保持穩定正常的工作。TinyX極小的體積和內存占用量,非常適合作為嵌入式系統來使用。
2.2GPRS無線通信模塊
GPRS無線通信模塊采用SIEMENS公司的MC35IT。該模塊支持GSM/GPRS協議、支持標準RS232接口,用串口通過AT命令集可以實現對模塊的控制操作,實現短信、電話以及GPRS訪問網絡等功能。
2.3ViewML
ViewML是第一個開放源代碼,專為嵌入式Linux平臺設計和開發的瀏覽器。該瀏覽器能夠在占用少量RAM和ROM資源的情況下使用一個高品質的顯示引擎。Century Software公司對ViewML界面不夠友好的缺點進行了改進,使之能夠適應PDA的顯示特點。
2.4觸摸屏支持
要讓MIDP支持觸摸屏操作,實際上就是讓TinyX支持觸摸屏輸入。需要在編譯TinyX時,將觸摸屏的編譯選項選上。在這個基礎上,再對觸摸屏作坐標校正。
經過這兩步,對TinyX交叉編譯,得到的TinyX服務器就能用觸摸屏對MIDP進行操作了。
3J2ME的移植
Sun公司在其網站上提供了J2ME參考實現的源程序包, 所謂J2ME的移植,就是依據本身目標平臺的特性作相應的修改,使之最終能運行在目標平臺上。J2ME的移植包括KVM的移植和MIDP的移植。
3.1KVM移植
系統使用的版本是1.1,其參考實現的文件名為j2me_cldc1_1fcssrcwinunix.zip。根據CLDC的移植說明文件所說,如果目標平臺有支持足夠的底層API的話,幾乎可以不用作任何修改,就可以將整個KVM直接移植到您的操作系統上。但在實現時,由于底層操作系統的特性不同,需要修改一下KVM的原始程序。這些特性包括:如何開啟文件檔案、如何動態取得內存、如何將窗口系統移植上去、如何處理不同CPU之間的特性、如何處理64bits運算等。在移植過程中,主要涉及的問題有:對64bits長整數的支持、浮點數的支持、Endianness特性的考慮、類路徑的問題、內存管理問題、圖形用戶接口問題、平臺規格及特性問題以及中文化問題等。
3.2MIDP移植
系統使用的MIDP版本是2.0,Sun在網上發布的參考實現名字是midp2_0srclinuxi686.zip。MIDP定義了一系列適用于移動通信設備之上的Java軟件接口。其中,有很多與系統平臺相關的接口。所謂MIDP移植,最基本的就是修改MIDP參考實現里面與系統平臺不匹配的接口。換言之,就是用目標系統平臺的API替換MIDP參考實現中與之不匹配的API,使MIDP能在目標平臺上正確地執行所有要求的功能。當然,移植還包括對MIDP性能的優化。
MIDP由多個不同的模塊組成,包括事件處理、記錄管理系統(RMS)、圖形用戶接口、安全機制、網絡、應用管理系統(AMS)、OTA支持、Push Functionality、游戲接口以及I18N。這些模塊中,基本上分成兩層來實現:①Java層。用Java編程語言編寫,與平臺無關。這部分可以不用修改。②本地層。用C編程語言實現,與平臺相關。這部分用到的API如果與系統平臺提供的API不一致,就需要作修改。
3.3J2ME的中文化
J2ME運行平臺的中文化問題是比較難解決的,包括KVM和MIDP的中文化。不過,這兩者的中文化均可以歸結為雙字節問題。在SUN發布的CLDC和MIDP源代碼中,并沒有考慮雙字節字符問題,這是它不支持中文的重要原因。另外,J2ME里面以Unicode字符來處理中文,需要考慮字符轉換,以實現字符處理的本地化。圖4為中文化后的MIDP菜單。
4利用GPRS模塊實現接入互聯網
中國移動在GPRS與Internet網中間建立了許多相當于ISP的網關支持節點(GGSN),以連接GPRS網與外部的Internet網。GPRS模塊可以通過撥“*99***1#”登錄到GGSN上動態分配到Internet網的IP地址。其間GPRS模塊與網關的通信要符合點對點協議(Point to Point Protocol,PPP),其中身份驗證時用戶名、密碼均為空。使用PPP協議登錄后,則可以通過GGSN接上Internet。
若要通過GPRS模塊進行網絡連接和傳輸數據,則需要建立PPP連接。若要建立PPP連接,可以通過串口向GPRS模塊發送相關AT命令,進行撥號。chat和pppd是兩個可以實現撥號自動化的程序。chat程序的用途是撥號,啟動對方pppd并等待提示,根據提示輸入用戶名和密碼等登錄信息。pppd 的用途是建立并維持與服務器的PPP連接,傳輸數據。
使用GPRS模塊撥號上網過程如下:
由本地pppd 調用 chat 程序;
chat程序負責撥號登錄,啟動服務器端的pppd,然后chat結束;
由本地pppd與服務器端的pppd進行握手,建立ppp連接。
系統瀏覽器使用嵌入式瀏覽器ViewML,通過對ViewML的源程序作一定的修改,把ViewML的瀏覽功能和MIDP的下載、安裝MIDlet程序功能結合起來,實現通過GPRS無線通信模塊上網,下載、安裝并運行MIDlet程序等一系列的功能。
圖5顯示了使用本文實現的J2ME運行平臺運行MIDlet的情況。
圖4中文化后的MIDP菜單
圖5運行Java游戲
5結束語
本文描述了在嵌入式Linux下支持觸摸屏操作的J2ME運行平臺的設計和實現,主要包括系統的實現方式、J2ME的移植、互聯網接入等問題。該平臺已經在獨立研發的多功能PDA上成功運行。
參考文獻:
[1]張成偉,杜旭,楊宗凱. 基于MiniGUI和嵌入式Linux的GSM/GPRS無線通信模塊[J]. 計算機工程,20-04,30(21):173175.
[2]羅亮,彭容修. GPRS在嵌入式手持終端上的實現[J]. 現代電子技術,20-04,27(4):7677,81.
[3]黃承安,張躍. 微控制器的GPRS無線上網[J]. 單片機與嵌入式系統應用,2003,22(12):1922.
[4]曹軍,羅蕾. MIDP 2.0及其移植技術分析[J]. 單片機與嵌入式系統應用,20-04,23(1):3639.
[5]Sun MicroSystems Inc. Porting MIDP[EB/OL]. http://www.sun.com, 200211.
[6]Sun MicroSystems Inc. KVM Porting Guide[EB/OL]. http://www.sun.com, 200303.
作者簡介:
黃文超(1980),男,廣東人,碩士研究生,主要研究方向為無線通信、嵌入式系統、軟件工程;徐木生(1980),男,廣東人,碩士研究生,主要研究方向為無線通信、嵌入式系統、軟件工程;陸以勤 (1968),男,廣東人,副教授,碩士生導師,博士,主要研究方向為軟件工程、電信網體系、移動終端等。
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文