關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > MIPS目標平臺CLDC的Java虛擬機移植

        MIPS目標平臺CLDC的Java虛擬機移植

        作者: 時間:2009-12-28 來源:網絡 收藏

        3 VM移植過程
        phoneME Feature軟件結構實現了完全的模塊化。它使用一個名為includeDB的配置數據庫來管理項目源文件和頭文件,可根據目標CPU架構和目標OS需求在配置數據庫內添加或修改相應的文件。使用includeDB配置數據庫,避免了#ifdef宏散布于整個源碼區間,還避免了使用復雜的#ifdef嵌套語句結構。
        includeDB配置數據庫位于src/vm/includeDB,它是純文本文件,針對目標CPU架構和目標OS需求進行添加或修改的頭文件和函數文件都應在該配置文件中進行注冊。
        檢查includeDB文件,可立即得到在OS移植或CPU移植時需要注意的文件。在建立移植軟件時,還使用ineludeDB配置數據庫來跟蹤文件的依賴關系。為目標平臺建立的頭文件和函數文件都需要添加到includeDB數據庫。
        phoneME Feature軟件具有良好的模塊化結構,其移植工作集中于Call層。移植模型如圖3所示。

        本文引用地址:http://www.104case.com/article/202584.htm

        針對目標架構的移植過程如下:
        (1)OS移植
        目標OS為經裁剪的通用Linux系統,內核為2.6.12版。phoneME Feature軟件的大多數代碼文件都與OS無關,只有極少的幾個文件涉及目標OS。OS移植接口分為兩部分:一部分為OS通用部分,它位于源碼目錄src/vm/share/runtime下,適合大多數OS;另一部分則針對目標OS,位于源碼目錄src/vm/os/linux下。
        OS指定的移植接口由/src/vm/share/runtime目錄下的OS.hpp和OS.cpp文件進行定義。實際上這兩個文件只實現了一個Os類,向提供特殊功能。
        OS移植接口的其他部分包括文件系統(由OsFile.hpp和OsFile.cpp定義)、線程(由Thread.hpp和Thread.cpp定義)、事件處理(由Task.hpp、Task.cpp、TaskCon-text.cpp、TaskContext.hpp和TaskList.hpp等定義)、內存管理(由OsMemory.hpp和OsMemory.cpp等定義)等。針對目標OS的移植,需建立/src/vm/os/mips目錄(以目標架構命名),在目錄下需創建下列文件: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。
        根據需要,可能還需創建OsSocket_mips、Globals_mips等文件。這些文件是文件系統、線程、事件處理、內存管理等在目標OS的具體實現。如OS_mips.cpp中實現了取寄存器值、取PC指針值、為PC指針值賦值、sleep等方法。需強調的是,OS_mips.cpp文件中有兩個方法非常重要,且必須實現:
        ◆static void initialize();//用于初始化OS,如定時器、線//程、I/O等
        ◆static void dispose();//用于撤銷初始化的所有工作,//清除線程和其他OS活動
        (2)CPU移植
        CPU移植的工作主要有兩個:一是移植解釋器和解釋器的產生器;二是移植相應的編譯器。
        CPU移植的難點在于編譯器的優化和調整,因為的匯編解釋器和相應的編譯器依賴于具體的CPU架構。建立/src/vm/cpu/mips目錄,并編寫相關文件。以解釋器的產生器為例,需要編寫(包括頭文件和源文件):Assembler_mips、SourceAssembler_mips、SourceMacros_mips、Disassembler_mips、TemplateTable_mips、Interpret-erGenerator_mips、NativeGenerator_mips、SharedStubs_mips、InterpreterStubs_mips、CompilerStubs_mips等。
        (3)Call移植
        Call函數集被分成多個子系統。這些子系統包括:圖形子系統、內存管理、LCD顯示、字體、文件和目錄、Socket套接字等。
        以移植文件系統接口為例:使用了類似POSIX標準C庫的文件API,由于目標平臺是基于Linux的,所以不需要映射OsFile_read()方法到目標操作系統。要確保虛擬機能正確操作OS下的文件,需要驗證以下接口:
        ◆im OsFile_remove(const JvmPathChar*filename)
        ◆bool OsFile_rename(const JvmPathChar*from,constJvmPathChar*to)
        ◆im OsFile_open(const JvmPathChar*filename,constchar*mode)
        ◆int OsFile_close(OsFile_Handle handle)
        ◆int OsFile_flush(OsFile_Handle handle)
        ◆size_t OsFile_read(OsFile_Handle handle,void*buffer,size_t size,size_t count)
        ◆size_t OsFile_write(OsFile_Handle handle,const void*buffer,size_t size,size_t count)
        以上接口實現了文件的常用操作,如文件的打開、讀、寫、關閉、刪除、重命名等。


        4 CLDC VM移植驗證
        完成以上移植所需的修改后,建立Makefile,設置所需的環境變量,使得phoneME Feature成功通過交叉編譯,生成目標系統所需的CLDC VM虛擬機。
        移植的驗證較為簡單,將交叉編譯生成的cldc_vm可執行文件、庫文件以及Demo示例文件復制到目標平臺,運行并檢查結果。命令結構是:bin/cldc_vm.exe-class-path location-of-compiled-applications/classes classname。


        5 CLDC VM移植優化
        CLDC虛擬機的移植優化可以從幾方面進行:
        ①優化參數。在虛擬機建立過程中,phoneME提供了很多選項,針對不同的目標平臺使用不同的選項。
        ②Thumb指令集的開關。ARM等CPU支持Thumb指令集,phoneME也支持Thumb指令集。如果目標平臺支持Thumb指令集,可以開啟Thumb開關,加快虛擬機執行速度。
        ③其他。對虛擬機的優化還可從編譯器自身、內存子系統等方面進行優化。


        結 語
        基于phoneME Feature軟件生成的CLDC虛擬機與早期的KVM虛擬機相比,性能得到較大改善,尤其是在多任務支持方面(早期的KVM虛擬機不支持多任務功能)。筆者在Broadcom 7403和NXP 225上成功實現CLDC VM的移植。下一步的工作是在國產數字電視SoC芯片上實現CLDC VM的移植。目前多核技術是計算機行業的研究熱點,并逐步向嵌入式領域發展,因此支持多核CPU技術和并行技術的CLDC虛擬機將是未來的研究方向之一。


        上一頁 1 2 下一頁

        關鍵詞: MIPS CLDC Java 虛擬機

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 台江县| 西畴县| 沛县| 石楼县| 黄石市| 长白| 永顺县| 霍山县| 深泽县| 喀什市| 嘉兴市| 会宁县| 垦利县| 碌曲县| 如皋市| 昭觉县| 西乌珠穆沁旗| 客服| 安庆市| 宜黄县| 雅安市| 富源县| 天柱县| 措勤县| 峨边| 临西县| 台安县| 喀什市| 新和县| 垫江县| 郯城县| 齐齐哈尔市| 瑞安市| 凉城县| 武山县| 大余县| 邻水| 新巴尔虎左旗| 五寨县| 新化县| 牟定县|