av日韩亚洲,一本一本a久久,亚洲一区二区三区,亚洲一区二区三区免费视频

淺析ARM9平臺KVM移植微電子論文范文

來源:期刊VIP網(wǎng)所屬分類:微電子時間:瀏覽:

  摘要:ARM9系列處理器是英國ARM公司設(shè)計的主流嵌入式處理器,主要包括ARM9TDMI和ARM9E-S等系列。文章發(fā)表在《網(wǎng)絡(luò)新媒體技術(shù)》上,是微電子論文范文,供同行參考。

  關(guān)鍵詞:移動應(yīng)用開發(fā),J2ME,CLDC,KVM移植

  ARM微處理器是一種高性能、低功耗的32位微處器,它被廣泛應(yīng)用于嵌入式系統(tǒng)中。ARM9代表了ARM公司主流的處理器,已經(jīng)在手持電話、機頂盒、數(shù)碼相機、GPS、個人數(shù)字助理以及因特網(wǎng)設(shè)備等方面有了廣泛的應(yīng)用。

  0 引言

  目前移動手機上運行的操作系統(tǒng)種類繁多,包括Linux、Windows Mobile、Palm OS、Symbian OS、Google Android等。Java和J2ME技術(shù)克服了手機平臺多樣性造成的應(yīng)用程序移植困難的問題,為移動應(yīng)用程序的跨平臺開發(fā)和運行提供了可能。

  J2ME是Sun公司面向具有有限硬件資源的設(shè)備的Java版本,這些資源受限的設(shè)備包括PDA、手機、機頂盒和其它消費電子設(shè)備與嵌入式設(shè)備[1]。CLDC[2]和MIDP[3]已經(jīng)成為用于移動手機應(yīng)用開發(fā)的J2ME標(biāo)準(zhǔn)。

  J2ME/CLDC技術(shù)的核心是Sun公司的KVM(Kilobyte Virtual Machine)[4]。KVM最初設(shè)計是用于資源受限的低端移動設(shè)備的JVM(Java virtual machine)。正是JVM的存在才使得Java具有“一次編譯,處處運行”的特征[5,6],因此,KVM的移植便成為J2ME應(yīng)用于移動開發(fā)的首要前提。

  1 KVM的代碼執(zhí)行機制

  為了更好地理解KVM的移植過程,我們需要對KVM的代碼執(zhí)行機制作一些研究。

  在圖1中,文本格式的Java源程序(文件后綴名為.java)由Java編譯器編譯為Java字節(jié)碼文件(文件后綴名為.class),且每一個Java類對應(yīng)一個.class文件。

  在運行階段,Java虛擬機先裝入或加載指定的“.class”文件,進行必要的校驗,然后找到指定的入口方法(例如main),由interpreter翻譯運行“.class”文件中的字節(jié)碼[7]。虛擬機在執(zhí)行過程中根據(jù)需要(如創(chuàng)建新對象等)動態(tài)加載用戶程序的其他“.class”文件或者系統(tǒng)類庫的“.class”文件并校驗和運行[8]。Java API類庫(一個大型的現(xiàn)成軟件組件(類)集合)是一些為用戶程序運行提供支持或起輔助作用的“.class”格式的標(biāo)準(zhǔn)的Java類,它是Java語言的一個標(biāo)準(zhǔn)組成部分。加載過程通常都是被推遲到必要的時候才進行。   JVM中的interpreter一般采用解釋的方式執(zhí)行字節(jié)碼。它按照程序執(zhí)行的順序逐條取出指令字節(jié)碼,翻譯成一段等效的本地代碼序列來執(zhí)行,這個解釋執(zhí)行過程一直重復(fù)到程序的最后一條指令執(zhí)行完為止[7]。

  下面我們再來看一下KVM的代碼執(zhí)行機制(如圖2所示)。

  圖2 KVM的代碼執(zhí)行機制

  我們知道,KVM需要運行在硬件資源受限的嵌入式設(shè)備上,因此有必要對虛擬機的功能進行簡化,提高其運行效率,并減小其體積。為此,將虛擬機原本復(fù)雜而耗資源的大部分校驗工作移出虛擬機,交由PC開發(fā)平臺上一個工具軟件preverify來進行預(yù)驗證或預(yù)校驗,從而減輕移動設(shè)備的負擔(dān),而在KVM中只留下一個簡單的輕量級的校驗器[6,9]。

  因此,我們在編譯和預(yù)驗證用于KVM的Java代碼時,需要將-classpath選項指定為CLDC類庫的路徑,然后將預(yù)驗證過的class文件下載到目標(biāo)設(shè)備由KVM來執(zhí)行。

  2 CLDC參考實現(xiàn)

  移植所用的KVM源碼是來自SUN公司的CLDC 1.1參考實現(xiàn)。表1中描述了該CLDC 1.1參考實現(xiàn)源碼包中的目錄結(jié)構(gòu)[4]。

  [[子目錄\&說明\&api\&CLDC需要的核心Java類庫源代碼\&bin\&包含kvm等所有二進制執(zhí)行文件和已編譯好的核心Java類庫的class文件\&build\&用于編譯生成面向不同操作系統(tǒng)平臺的KVM的makefile\&doc\&相關(guān)的說明文檔\&jam\&KVM的可選組件JAM(Java Application Manager)的源碼\&kvm\&面向不同平臺的KVM的源碼\&tools\&一些需要用到的工具軟件的源碼,如JavaCodeCompact,preverifier,KDWP Debug Proxy\&]]

  3 CLDC參考實現(xiàn)的build過程

  KVM移植主要是采用合適的編譯工具對CLDC 1.1參考實現(xiàn)中的源碼進行編譯,以生成運行在目標(biāo)平臺上的kvm可執(zhí)行文件。

  用于源碼build的Makefile文件根據(jù)源碼目錄的層次結(jié)構(gòu)相應(yīng)地被組織成一個層次結(jié)構(gòu)。主Makefile文件放在build目錄中,由這里跳轉(zhuǎn)去執(zhí)行其它Makefile文件。在build目錄中,根據(jù)目標(biāo)平臺上操作系統(tǒng)的不同類型分別對應(yīng)有不同的主Makefile文件。

  在主Makefile文件中可以確定要參與build的代碼段,api部分是必選的,kdp和jcc都是可選的。因為要應(yīng)用于嵌入式系統(tǒng),故未選擇kdp。對于JAM(Java Application Management),為簡化起見沒有選擇該部分。所有的選擇可以通過修改Makefile文件中的相關(guān)開關(guān)選擇項值進行,也可在命令行中用參數(shù)覆蓋。

  以ARM+Linux為目標(biāo)平臺對CLDC參考實現(xiàn)進行build的操作很簡單,只需進入build/linux目錄,通過make命令執(zhí)行那個主Makefile文件,就開始build過程了。下面的圖3描述了其build過程。

  4 CLDC參考實現(xiàn)的源碼編譯

  KVM移植所采用的編譯環(huán)境為:Java編譯器Javac 1.6.0_22,(Fedora9自帶)X86平臺Gcc 4.3.0編譯器和交叉編譯器Arm-Linux-Gcc 4.3.2。

  首先,KVM的運行平臺是ARM+Linux平臺,所以需要在KVM\VmUnix\build目錄中將用于編譯KVM的Makefile文件中的編譯器設(shè)置為交叉編譯器Arm-Linux-Gcc[10],即:

  象所采用的編譯器。

  其次,在最終對KVM源碼進行編譯之前,需要先對所需工具軟件和API類庫進行編譯。因此,CLDC源碼編譯過程包括以下四個階段:編譯生成preverify工具,編譯和預(yù)驗證API類庫,編譯生成JCC工具,編譯和連接生成KVM。

  電子期刊論文投稿:《網(wǎng)絡(luò)新媒體技術(shù)》原刊名為《微計算機應(yīng)用》,是由中國科學(xué)院聲學(xué)研究所主辦的公開發(fā)行的科技刊物,創(chuàng)刊于1980年,系月刊。主要刊登有關(guān)計算機科學(xué)研究與應(yīng)用方面的研究論文和研究報告, 在科學(xué)試驗和現(xiàn)代化管理中計算機應(yīng)用方面所取得的新進展、新成果、新技術(shù)、新方法。郵發(fā)代號:2-304。

主站蜘蛛池模板: 恭城| 通许县| 晴隆县| 泸西县| 黑水县| 青海省| 临猗县| 如东县| 石林| 龙陵县| 商河县| 汉阴县| 山阴县| 应用必备| 舟山市| 海丰县| 巨野县| 武威市| 清涧县| 临夏市| 云梦县| 海南省| 云梦县| 清水河县| 五大连池市| 岑溪市| 梁河县| 济宁市| 谢通门县| 安岳县| 林甸县| 岐山县| 招远市| 墨竹工卡县| 平乐县| 牟定县| 达州市| 张掖市| 岑溪市| 金川县| 怀化市|