發信人: shengb (天際征鴻), 信區: Embedded
標 題: 在vxWorks上使用JAVA[1]
發信站: BBS 水木清華站 (Mon Jul 22 08:51:50 2002)
前兩天閑著沒事,想在vxWorks上編譯java程式玩玩,因此找了sun的j2me,經過一番折
騰,總算能在vxWorks上看見可愛的"Hello World"。
1. J2ME簡介
Java平台包括Standard版、Enterprise版和Micro版。Micro版,也就是所謂的J2ME,
是專門設計為供記憶體量小和處理能力較低的行動裝置作為Java開發平台使用。
然而,由於行動裝置覆蓋的範圍非常廣,而且有著各種互不相同的硬體設定,因此
不太可能為所有的行動裝置提供一種普遍適用的開發平台。所以J2ME定義了兩種類型的
規範,configurations 和profiles。
1.1 Configuration
J2ME通過對Configuration的抽象來處理大量千差萬別的行動裝置硬體功能。J2ME
configuration定義了特定裝置可用的虛擬機器和低級API,同時提供相應的開發基礎。目
前可用的Configuration有兩種,即串連裝置配置CDC(Connected Device Configuration
)和串連有限裝置配置CLDC(Connected Limited Device Configuration)。
1.1.1 串連裝置配置
CDC應用於相對記憶體量較大、處理器能力較強的行動裝置。CDC規範採用了記憶體最佳化
的虛擬機器,也就是所謂的CVM,通過它提供等同標準JVM的特性。按照Sun的文檔說明,
CDC針對新型PDA、智能通訊裝置和機頂盒之類的高端裝置。為了能夠受到CDC支援,移動
裝置必須至少具備以下條件:
用於CVM和Java API庫的2 MB記憶體。
32位微處理器或者控制器。
可用網路連接,最好是高頻寬串連。
1.1.2 連結有限裝置配置
CDC的要求有利於昂貴的行動電話、IR掃描器或類似產品。CLDC則主要針對那些更輕
便、更便宜、不能滿足CDC要求的裝置。
CLDC採用了更輕型的虛擬機器,設計為在較低記憶體環境下運行。這種JVM的參考實現也
就是所謂的KVM,虛擬機器的大小是以KB度量的。CLDC 的裝置需求如下:
最低160KB的記憶體,其中128KB用於KVM和執行階段程式庫
最低16位25-MHz處理器
有限的使用者介面功能
沒有(或者間歇的)低頻寬網路連接
由於受到嚴格的記憶體容量限制,KVM因此缺乏一些完整JVM所提供的特性,這就是說,
KVM在如此低記憶體要求下不得不在浮點數學計算、反應和對finalizers類的支援等方面對
效能折中。使用CLDC的開發人員在編譯器之後必須預先採用J2ME開發套件所提供的一
種檢查工具對他們的原始碼進行校正。
1.2 profile
如果說配置為應用程式提供了基礎,那麼profile則提供了應用程式的架構。profile
定義了一整套J2ME應用程式可用的API類而且專門針對給定配置建立。Sun推出了2種可用
的參考J2ME profile:基礎(Foundation)和移動資訊裝置profile MIDP(Mobile infor
mation Device Profile)。
基礎profile主要用於CDC配置,因而其虛擬機器幾乎等同於標準的虛擬機器。這意味著,
使用基礎profile的開發人員必須訪問完整實現的J2SE特性集。
MIDP連同功能較低的CLDC配置一道為開發今天的行動裝置應用程式提供了你最可能用
到的Java平台。MIDP支援J2SE類庫的有限子集而且為在CLDC配置上使用定義了定製的使用者
介面和輸入/輸出類。
一般來說,J2SE代碼無須或者很少修改即可採用CDC和基礎profile運行。然而,由於
主機硬體受到限制,CLDC和MIDP profile只提供了很有限的功能集合。因此它J2SE應用程
序不大可能在不加修改的情況下就運行在這類平台上,除非它把自己限制在兩種平台的
API交集之內(嚴重地限制了其功能)。因為CLDC的要求對應了今天大多數手持功能的功
能,所以任何J2SE應用軟體常常需要修改才能運行在給定的裝置上
Sun公司的J2ME支援兩種嵌入式系統,嵌入式Linux以及Wind River的vxWorks即時系
統。
Top
7 樓tonkeycn(I Un known...)回複於 2002-07-22 17:30:56 得分 0
發信人: shengb (天際征鴻), 信區: Embedded
標 題: 在vxWorks上使用JAVA[2]
發信站: BBS 水木清華站 (Mon Jul 22 09:14:26 2002)
J2ME軟體採用j2me_cdc-1_0-fcs-src-ar-22_Jan_2001.zip,該壓縮包內內建
vxWorks5.4 PENTIUM的BSP,所使用的網卡為3Com 10/100 PCI NIC(3C90x)
主機環境:
(1)Java 2 SDK, SE, v1.3或更新
(2)Tornado 2.0 development system
(3)Solaris 7 OS或更新
(4)SPARC hardware
(5)128 MB RAM (推薦256 MB)
目標機環境:
(1)Pentium hardware
(2)VxWorks 5.4 OS
(3)至少32 MB RAM
注意事項:
(1)j2me CDC內建的sysEl3c90xEnd.c驅動程式在編譯時間有許多未定義的宏,因此建議
用Tornado II的替換掉;
(2)在Solaris 7 OS下$WIND_BASE/target/h/arch/下沒有simnt目錄,但是在檔案中
用到了該目錄下的一些檔案,因此建議從PC下拷貝一個到該目錄下。
(3)在編譯時間make建議使用gnumake,且版本至少為3.74,也可以用Tornado II內建的
make。
(4)主機目標機建議在同一網路中
發信人: shengb (天際征鴻), 信區: Embedded
標 題: 在vxWorks上使用JAVA[3]
發信站: BBS 水木清華站 (Mon Jul 22 09:29:25 2002)
編譯前準備工作:
(1)解壓縮j2me_cdc-1_0-fcs-src-ar-22_Jan_2001.zip,假設為$J2ME
(2)編輯$J2ME/cdcfoundation/build/vxworks/config_vxworks.mk,設定相應環境變
量:
Target IP address
Host IP address
Host name
Base directory for Tornado software (wind_base)
(3)修改J2SDK的環境變數,將其指向實際機器中J2SDK所在的位置
編譯j2me
(1)在$J2ME/cdcfoundation/build/vxworks/目錄下,鍵入gnumake CVM_DEBUG=true
(2)在編譯完成後,繼續編譯vxWorks鏡像,鍵入gnumake download_image
編譯完成後,在$J2ME/cdcfoundation/build/vxworks/target/的PC-boot和PC/default
目錄下均產生vxWorks以及vxWorks.sym檔案。只有PC/default下的包含了CVM的目標代碼
cvm.o。因此需要下載PC/default/vxWorks。
(3)製作啟動磁碟片。如果已經有系統啟動磁碟片,就可以不做。
啟動目標機下載vxWorks
在目標機控制台下,進入到$J2ME/cdcfoundation/build/vxworks/bin目錄。
->sp runJava,"-Djava.class.path=../testclasses.zip HelloWorld"
這時,在螢幕上就可以看見可愛的HelloWorld.字元
使用者應用程式
(1)javac –bootclasspath=$J2ME/cdcfoundation/build/vxworks/btclasses.zip /
$J2ME/cdcfoundation/build/vxworks/lib/cdc.jar Hello.java
(2)jar –cf hello.jar Hello.class
(3)在目標機控制台,
-> sp runJava,”-Djava.class.path=<AppDir>/hello.jar Hello”
或在windSh,
-> runJava,”-Djava.class.path=<AppDir>/hello.jar Hello”
呵呵,這個時候再看見“Hello World”,覺得這個時候覺得比任何時候都可愛。
Hello.java即為普通的J2SE應用程式。