2019亚洲日韩新视频_97精品在线观看_国产成人精品一区二区_91精品网站在线观看

淺析ARM9平臺(tái)KVM移植微電子論文范文

來(lái)源:期刊VIP網(wǎng)所屬分類(lèi):微電子時(shí)間:瀏覽:

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

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

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

  0 引言

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

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

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

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

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

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

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

  下面我們?cè)賮?lái)看一下KVM的代碼執(zhí)行機(jī)制(如圖2所示)。

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

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

  因此,我們?cè)诰幾g和預(yù)驗(yàn)證用于KVM的Java代碼時(shí),需要將-classpath選項(xiàng)指定為CLDC類(lèi)庫(kù)的路徑,然后將預(yù)驗(yàn)證過(guò)的class文件下載到目標(biāo)設(shè)備由KVM來(lái)執(zhí)行。

  2 CLDC參考實(shí)現(xiàn)

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

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

  3 CLDC參考實(shí)現(xiàn)的build過(guò)程

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

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

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

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

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

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

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

  象所采用的編譯器。

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

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

主站蜘蛛池模板: 奈曼旗| 石门县| 梅州市| 卓资县| 米林县| 子洲县| 根河市| 合作市| 平原县| 台南县| 九江县| 长白| 晋中市| 清原| 马龙县| 陇川县| 德昌县| 泗阳县| 威远县| 遂川县| 毕节市| 大城县| 芦溪县| 江陵县| 秭归县| 新疆| 友谊县| 湟中县| 巨野县| 临桂县| 南召县| 佛学| 定远县| 西盟| 鹤峰县| 年辖:市辖区| 崇阳县| 天等县| 仙居县| 南宁市| 勐海县|