MIPS目標(biāo)平臺CLDC的Java虛擬機(jī)移植-基礎(chǔ)電子_第1頁
MIPS目標(biāo)平臺CLDC的Java虛擬機(jī)移植-基礎(chǔ)電子_第2頁
MIPS目標(biāo)平臺CLDC的Java虛擬機(jī)移植-基礎(chǔ)電子_第3頁
MIPS目標(biāo)平臺CLDC的Java虛擬機(jī)移植-基礎(chǔ)電子_第4頁
MIPS目標(biāo)平臺CLDC的Java虛擬機(jī)移植-基礎(chǔ)電子_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

精品文檔-下載后可編輯MIPS目標(biāo)平臺CLDC的Java虛擬機(jī)移植-基礎(chǔ)電子1Java虛擬機(jī)簡介

JavaME(Javaplatform.MicroEdition),以前稱J2ME,是為機(jī)頂盒、移動電話和PDA等嵌入式消費(fèi)電子設(shè)備提供的Java語言平臺,它包括虛擬機(jī)和一系列標(biāo)準(zhǔn)化的JavaAPI(ApplicationProgrammingInterface)。Java語言的平臺無關(guān)性使其廣泛應(yīng)用于各行各業(yè),而嵌入式領(lǐng)域JavaME技術(shù)的發(fā)展尤為迅猛。截至2022年底,JavaME技術(shù)已應(yīng)用于26億部移動手機(jī)、部署了60億個(gè)JavaCards、4000萬臺以上的藍(lán)光設(shè)備和TV設(shè)備,遍及移動開發(fā)的各個(gè)領(lǐng)域。

Java虛擬機(jī)(JVM,JavaVirtualMachine)是實(shí)現(xiàn)Java語言平臺無關(guān)性的關(guān)鍵。Java虛擬機(jī)是Java技術(shù)的重要組成部分,它是一個(gè)抽象的運(yùn)算機(jī)器,有一套自己的指令集,可在運(yùn)行時(shí)操縱內(nèi)存的各個(gè)區(qū)域。

嵌入式的Java虛擬機(jī)主要有兩大類:

(1)CLDCVM

CLDCVM(ConnectedLimitedDeviceConfigurationVirtualMachine)是連接受限的設(shè)備配置的虛擬機(jī),以前稱為KVM(KilobyteVirtualMachine,千字節(jié)虛擬機(jī))。CLDCVM一般用于內(nèi)存很少(如1MB以內(nèi))、CPU處理能力弱(如幾MHz)的嵌入式設(shè)備。Sun公司于2000年發(fā)布CLDC1.0規(guī)范及KVM的參考實(shí)現(xiàn),之后于2022年將KVM參考實(shí)現(xiàn)轉(zhuǎn)到開源社區(qū),并重命名為phoneMEFea-ture。至2022年,phoneMEFeature先后經(jīng)歷了MR1、MR2、MR3、MR4版。本文基于phoneMEFeatureMR4。通常CLDCVM的結(jié)構(gòu)如圖1所示。

其中MIDlet是各種JavaME應(yīng)用程序,運(yùn)行于CLDC虛擬機(jī)之上。

(2)CDCVM

CDCVM(ConntectedDeviceConfigurationVirtualMachine)是已連接的設(shè)備配置的虛擬機(jī),簡稱CVM。CVM一般用于智能手機(jī)、數(shù)字機(jī)頂盒、PDA等嵌入式設(shè)備。

phoneMEFeatureMR4軟件是一個(gè)高性能的虛擬機(jī),它不僅遵循CLDC規(guī)范,還實(shí)現(xiàn)了高效的資源管理,以及對多任務(wù)的支持等。與早期的KVM虛擬機(jī)相比,CLDCVM增加了如下特征:

◆支持CLDC1.0、CLDC1.1和CLDC1.1.1;

◆改進(jìn)Java應(yīng)用程序的啟動時(shí)間和執(zhí)行速度;

◆支持AOT(Ahead-Of-Time,提前)編譯技術(shù);

◆支持原地執(zhí)行(in-placeexecution)功能;

◆支持多任務(wù)功能。

2CLDCVM移植原理

phoneMEFeature軟件是一個(gè)功能完整的虛擬機(jī),它通過了Sun公司的TCK(TechnologyCompatibilityKit,技術(shù)兼容工具包)兼容測試集。phoneMEFeature直接支持兩種CPU架構(gòu):x86架構(gòu)和ARM架構(gòu)。在這兩種架構(gòu)上移植僅需少量修改,而要移植到MIPS架構(gòu)則需做較多修改。phoneMEFeature軟件的結(jié)構(gòu)如圖2所示。

①JavaCallAPI移植層:該層提取目標(biāo)平臺的需求,實(shí)現(xiàn)必須移植的函數(shù)集,是基于目標(biāo)平臺的實(shí)現(xiàn)。pho-neMEFeature的主要移植工作集中于此層。

②MIDP/CLDC層:是嵌入式Java虛擬機(jī)的部分。其中CLDC為資源受限的設(shè)備定義了應(yīng)用編程接口和虛擬機(jī)的基礎(chǔ)函數(shù)集,MIDP(MobileInformationDeviceProfile,移動信息設(shè)備簡表)則提供應(yīng)用程序環(huán)境和應(yīng)用程序所需的大量服務(wù)。

③PCSL(PortableCommonServicesLibrary,可移植的通用服務(wù)庫)層:提供底層服務(wù),供CLDC、MIDP和其他可選包調(diào)用。

④抽象層:是一套函數(shù)集,所有擴(kuò)展JSR包通過抽象層接口與MIDP/CLDC層進(jìn)行交互。

⑤擴(kuò)展JSR包:為虛擬機(jī)提供擴(kuò)展功能。擴(kuò)展JSR包種類很多,可根據(jù)需要進(jìn)行擴(kuò)展。如支持藍(lán)牙和OBEX(對象交換)功能的JSR82擴(kuò)展包、支持Web服務(wù)的JSR172包、支持定位功能的JSR179包、支持在線支付功能的JSR229包等。

Java虛擬機(jī)的移植首先要確定兩件事:一是目標(biāo)CPU,二是目標(biāo)OS(操作系統(tǒng))。OS移植比較簡單,移植工作集中在虛擬機(jī)自身和CLDC庫上;而CPU移植則較為復(fù)雜,因?yàn)閰R編解釋器和適配的編譯器十分依賴于目標(biāo)CPU架構(gòu)。

3CLDCVM移植過程

phoneMEFeature軟件結(jié)構(gòu)實(shí)現(xiàn)了完全的模塊化。它使用一個(gè)名為includeDB的配置數(shù)據(jù)庫來管理項(xiàng)目源文件和頭文件,可根據(jù)目標(biāo)CPU架構(gòu)和目標(biāo)OS需求在配置數(shù)據(jù)庫內(nèi)添加或修改相應(yīng)的文件。使用includeDB配置數(shù)據(jù)庫,避免了#ifdef宏散布于整個(gè)源碼區(qū)間,還避免了使用復(fù)雜的#ifdef嵌套語句結(jié)構(gòu)。

includeDB配置數(shù)據(jù)庫位于src/vm/includeDB,它是純文本文件,針對目標(biāo)CPU架構(gòu)和目標(biāo)OS需求進(jìn)行添加或修改的頭文件和函數(shù)文件都應(yīng)在該配置文件中進(jìn)行注冊。

檢查includeDB文件,可立即得到在OS移植或CPU移植時(shí)需要注意的文件。在建立移植軟件時(shí),還使用ineludeDB配置數(shù)據(jù)庫來跟蹤文件的依賴關(guān)系。為MIPS目標(biāo)平臺建立的頭文件和函數(shù)文件都需要添加到includeDB數(shù)據(jù)庫。

phoneMEFeature軟件具有良好的模塊化結(jié)構(gòu),其移植工作集中于JavaCall層。移植模型如圖3所示。

針對MIPS目標(biāo)架構(gòu)的移植過程如下:

(1)OS移植

目標(biāo)OS為經(jīng)裁剪的通用Linux系統(tǒng),內(nèi)核為2.6.12版。phoneMEFeature軟件的大多數(shù)代碼文件都與OS無關(guān),只有極少的幾個(gè)文件涉及目標(biāo)OS。OS移植接口分為兩部分:一部分為OS通用部分,它位于源碼目錄src/vm/share/runtime下,適合大多數(shù)OS;另一部分則針對目標(biāo)OS,位于源碼目錄src/vm/os/linux下。

OS指定的移植接口由/src/vm/share/runtime目錄下的OS.hpp和OS.cpp文件進(jìn)行定義。實(shí)際上這兩個(gè)文件只實(shí)現(xiàn)了一個(gè)Os類,向虛擬機(jī)提供特殊功能。

OS移植接口的其他部分包括文件系統(tǒng)(由OsFile.hpp和OsFile.cpp定義)、線程(由Thread.hpp和Thread.cpp定義)、事件處理(由Task.hpp、Task.cpp、TaskCon-text.cpp、TaskContext.hpp和TaskList.hpp等定義)、內(nèi)存管理(由OsMemory.hpp和OsMemory.cpp等定義)等。針對目標(biāo)OS的移植,需建立/src/vm/os/mips目錄(以MIPS目標(biāo)架構(gòu)命名),在目錄下需創(chuàng)建下列文件:JVM_mips.hpp、JVM_mips.cpp;OS_mips.hpp、OS_mips.cpp;OsFile_mips.hpp、OsFile_mips.cpp;OsMemo-ry_mips.hpp、OsMemory_mips.cpp;OsMisc_mips.hpp、OsMisc_mips.cpp。

根據(jù)需要,可能還需創(chuàng)建OsSocket_mips、Globals_mips等文件。這些文件是文件系統(tǒng)、線程、事件處理、內(nèi)存管理等在目標(biāo)OS的具體實(shí)現(xiàn)。如OS_mips.cpp中實(shí)現(xiàn)了取寄存器值、取PC指針值、為PC指針值賦值、sleep等方法。需強(qiáng)調(diào)的是,OS_mips.cpp文件中有兩個(gè)方法非常重要,且必須實(shí)現(xiàn):

◆staticvoidinitialize();//用于初始化OS,如定時(shí)器、線//程、I/O等

◆staticvoiddispose();//用于撤銷初始化的所有工作,//清除線程和其他OS活動

(2)CPU移植

CPU移植的工作主要有兩個(gè):一是移植解釋器和解釋器的產(chǎn)生器;二是移植相應(yīng)的編譯器。

CPU移植的難點(diǎn)在于編譯器的優(yōu)化和調(diào)整,因?yàn)樘摂M機(jī)的匯編解釋器和相應(yīng)的編譯器依賴于具體的CPU架構(gòu)。建立/src/vm/cpu/mips目錄,并編寫相關(guān)文件。以解釋器的產(chǎn)生器為例,需要編寫(包括頭文件和源文件):Assembler_mips、SourceAssembler_mips、SourceMacros_mips、Disassembler_mips、TemplateTable_mips、Interpret-erGenerator_mips、NativeGenerator_mips、SharedStubs_mips、InterpreterStubs_mips、CompilerStubs_mips等。

(3)JavaCall移植

JavaCall函數(shù)集被分成多個(gè)子系統(tǒng)。這些子系統(tǒng)包括:圖形子系統(tǒng)、內(nèi)存管理、LCD顯示、字體、文件和目錄、Socket套接字等。

以移植文件系統(tǒng)接口為例:CLDC虛擬機(jī)使用了類似POSIX標(biāo)準(zhǔn)C庫的文件API,由于目標(biāo)平臺是基于Linux的,所以不需要映射OsFile_read()方法到目標(biāo)操作系統(tǒng)。要確保CLDC虛擬機(jī)能正確操作OS下的文件,需要驗(yàn)證以下接口:

◆imOsFile_remove(constJvmPathChar*filename)

◆boolOsFile_rename(constJvmPathChar*from,constJvmPathChar*to)

◆imOsFile_open(constJvmPathChar*filename,constchar*mode)

◆intOsFile_close(OsFile_Handlehandle)

◆intOsFile_flush(OsFile_Handlehandle)

◆size_tOsFile_read(OsFile_Handlehandle,void*buffer,size_tsize,size_tcount)

◆size_tOsFile_write(OsFile_Handlehandle,constvoid*buffer,size_tsize,size_tcount)

以上接口實(shí)現(xiàn)了文件的常用操作,如文件的打開、讀、寫、關(guān)閉、刪除、重命名等。

4CLDCVM移植驗(yàn)證

完成以上移植所需的修改后,建立Makefile,設(shè)置所需的環(huán)境變量,使得phoneMEFeature成功通過交叉編譯,生成目標(biāo)系統(tǒng)所需的CLDCVM虛擬機(jī)。

移植的驗(yàn)證較為簡單,將交叉編譯生成的cldc_vm可執(zhí)行文件、庫文件以及Demo示例文件復(fù)制到目標(biāo)平臺,運(yùn)行并檢查結(jié)果。命令結(jié)構(gòu)是:bin/cldc_vm.exe-class-pathlocation-of-compiled-applications/classesclassname。

5CLDCVM移植優(yōu)化

CLDC虛擬機(jī)的移植優(yōu)化可以從幾方面進(jìn)行:

①優(yōu)化參數(shù)。在虛擬機(jī)建立過程中,phoneME提供了很多選項(xiàng),針對不同的目標(biāo)平臺使用不同的選項(xiàng)。

②Thumb指令集的開關(guān)。ARM等CPU支持Thumb指令集,phoneME也支持Thumb指令集。如果目標(biāo)平臺支持Thumb指令集,可以開啟Thumb開關(guān),加快虛擬機(jī)執(zhí)行速度。

③其他。對虛

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論