在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Sti5516芯片的Java虛擬機的軟件架構(gòu)研究

牽手一起夢 ? 來源:微計算機信息 ? 作者:佚名 ? 2020-09-19 17:19 ? 次閱讀

1 引言

隨著現(xiàn)代信息技術(shù)的迅猛發(fā)展,電視數(shù)字化步伐加快了。從一開始的模擬電視到現(xiàn)在的數(shù)字電視,不僅大大提高了電視節(jié)目的質(zhì)量,也推動了電視數(shù)字化的進一步發(fā)展。在各種數(shù)字視頻廣播標準中,歐洲的DVB(Digital Video Broadcast)標準使用比較廣泛,它為在同一信道中傳輸視頻、音頻、數(shù)據(jù)提供了一種靈活、高效的方式,可以通過衛(wèi)星、電纜和地面信道傳輸高質(zhì)量的電視節(jié)目。同時基于DVB的數(shù)據(jù)廣播標準也能滿足人們對于寬帶數(shù)據(jù)業(yè)務(wù)的要求,如證券信息服務(wù)、電子節(jié)目、MP3音樂下載、電子郵件、網(wǎng)頁瀏覽等,在現(xiàn)代信息技術(shù)領(lǐng)域應(yīng)用極為廣泛。

基于Sti5516芯片的Java虛擬機的軟件架構(gòu)研究

圖一數(shù)字機頂盒架構(gòu)

從圖一我們可以看到, 一個完整的數(shù)字機頂盒由硬件平臺和軟件系統(tǒng)組成,可以將其分為4層,從底向上分別為硬件、底層軟件、中間件、應(yīng)用軟件。硬件提供機頂盒的硬件平臺;底層軟件提供操作系統(tǒng)內(nèi)核以及各種硬件驅(qū)動程序;應(yīng)用軟件包括本機存儲的應(yīng)用和可下載的應(yīng)用;中間件是一種將應(yīng)用程序與底層的操作系統(tǒng)、硬件細節(jié)隔離開來,使應(yīng)用不依賴于具體的硬件平臺的軟件環(huán)境。這樣用戶可以在任何廠家的硬件平臺上進行應(yīng)用軟件開發(fā),和應(yīng)用軟件下載。而不必介意任何底層的有關(guān)信息,保證了機頂盒的開發(fā)專業(yè)化。這種分層的思想在現(xiàn)代系統(tǒng)設(shè)計中十分常見,如大名鼎鼎的TCP/IP協(xié)議。中間件通常由各種虛擬機來構(gòu)成,如HTML虛擬機、JavaScript虛擬機、Java虛擬機等。

現(xiàn)在廣電行業(yè)傾向于DVB-MHP(多媒體家庭平臺)中間件標準。DVB-MHP基于開放性的Java程序語言,具有軟硬件兼容性好、可移植成本低、二次再開發(fā)功能強等優(yōu)點,是一種很有發(fā)展前途的中間件技術(shù)標準。可以相信,Java在數(shù)字視頻廣播中的應(yīng)用將越來越多,我們有必要研究Java技術(shù)核心—虛擬機,包括其結(jié)構(gòu)、運行機制及虛擬機移植到數(shù)字機頂盒平臺的關(guān)鍵技術(shù)。本文面向采用ST(意法半導體公司)Sti5516芯片的數(shù)字機頂盒平臺,將基于數(shù)字電視播放(Digital Video Broadcast,DVB)的多媒體家庭平臺(Multimedia Home Platform,MHP)規(guī)范進行中間件平臺分析,重點研究開放源碼的Java虛擬機---Kaffe在其中的作用和相關(guān)的移植技術(shù)。

2 平臺介紹

2.1 硬件平臺

數(shù)字機頂盒硬件平臺基于ST公司的芯片Sti5516,Sti5516芯片集成了CPU內(nèi)核ST20-C2、音/視頻MPEG-2解碼器、PAL/NTSC/SECAM編碼器等。開發(fā)板上有8MB的共享內(nèi)存和16MB的外部內(nèi)存,4MB的Flash,并采用實時處理的嵌入式操作系統(tǒng)OS20。

2.2 軟件平臺

一個典型的適用于嵌入式的Java運行環(huán)境包括以下組件:

1.一個Java虛擬機。用來將獨立于平臺的Java字節(jié)碼解釋成目標機本地機器碼,并執(zhí)行動態(tài)類加載。這可以采取解釋執(zhí)行或?qū)崟r編譯執(zhí)行(JIT)的形式。兩者的不同點就在于字節(jié)碼的執(zhí)行速度;因為JIT避免了重復解釋以前執(zhí)行過的程序塊。

2.一個標準Java類庫集,以字節(jié)碼的形式存在。如果應(yīng)用程序并不引用任何類庫,那這些類庫就并不一定要求存在。

3.任何類庫或虛擬機所需的本地方法(JNI)。這些函數(shù)是由其它高級語言所寫,并和Java虛擬機一起預編譯,鏈接。這些函數(shù)被用來執(zhí)行處理器相關(guān)或Java無法直接實現(xiàn)的功能。

4.一個多任務(wù)操作系統(tǒng),用來提供Java線程及線程同步機制的底層實現(xiàn)。

5.一個垃圾回收線程。垃圾回收周期運行或當動態(tài)內(nèi)存池不能滿足分配請求時運行,用來申明那些已經(jīng)被分配但不再被應(yīng)用程序所使用的內(nèi)存。

Kaffe是一個完整的Java實現(xiàn),它由3部分組成:遵從 Personal Java1.1規(guī)范的 Java類庫,Java1.1虛擬機和本地動態(tài)或靜態(tài)鏈接庫。Kaffe虛擬機源碼按以下子目錄組織:

kaffe---包括了解釋器與JIT平臺無關(guān)部分,以及垃圾回收,動態(tài)類加載和Java runtime environment其它模塊的源代碼。

config---包括了解釋器與JIT平臺相關(guān)部分。它按所支持的處理器來劃分子目錄,里面存放系統(tǒng)相關(guān)代碼。

package---Java類庫以及任何它所依賴的本地方法。

include---在子目錄中提供的本地方法的接口定義。這些接口被平臺獨立文件所需要。

3 Kaffe移植的關(guān)鍵技術(shù)及方案

經(jīng)過對Kaffe深入分析和研究,筆者已在Sti5516平臺上成功地移植了Kaffe,并依據(jù)DVB-MHP規(guī)范,結(jié)合機頂盒特定軟硬件環(huán)境要求,建立了能運行Kaffe虛擬機的Java應(yīng)用程序運行平臺。下面將移植工作及相應(yīng)步驟總結(jié)如下:

3.1 字節(jié)碼解釋器

由于Kaffe源碼中沒有映射Java字節(jié)碼到處理器相關(guān)的匯編代碼塊,而是使用C實現(xiàn)了每個字節(jié)碼。這樣就導致字節(jié)碼解釋器的源代碼沒有一行是處理器相關(guān)的。這意味著移植最簡虛擬機(無JIT)將非常簡單:只需要使用交叉編譯器來編譯kaffe/kaffevm子目錄下的文件即可。

3.2 內(nèi)部線程

Kaffe有它自己的內(nèi)部線程包。換句話說,它維護自己的線程數(shù)據(jù)結(jié)構(gòu),并在適當?shù)臅r候執(zhí)行線程調(diào)度及上下文切換。為了使內(nèi)部線程包能運行在ST20處理器架構(gòu)上, 需要在config/os20子目錄中創(chuàng)建一個threads.h文件。這個文件定義了兩個常量和四個宏。這些常量和宏被內(nèi)部線程包里處理器無關(guān)的部分代碼所使用。

USE_INTERNAL_THREADS定義為ENABLE。

THREADSTACKSIZE是一個常量,定義為每個線程堆棧的大小,單位bytes。

THREADINIT(ctx * pContex, void (*func)())執(zhí)行新線程的上下文初始化。該線程的入口點被func指針所提供。

THREADSWITCH(ctx * pNewContext, ctx * pOldContext)執(zhí)行實際的上下文切換。

THREADINFO(ctx * pContext)在Kaffe初始化期間重置整個任務(wù)控制塊。

THREADFRAMES(thread * taskId, int count)返回活動的堆棧楨個數(shù)。

3.3 支持軟件

和其它大多數(shù)用C寫的程序一樣,Kaffe依賴于標準C庫里的例程。由于ST采用符合GNU規(guī)范的GCC編譯器,如strcmp(),atoi(),sin()等標準C庫函數(shù)被支持。除此之外OS20提供以下支持:

動態(tài)內(nèi)存分配malloc()。盡管Java程序員不會直接調(diào)用malloc(),但Kaffe虛擬機需要從底層調(diào)用內(nèi)存分配例程來請求大的內(nèi)存池。

信號。Kaffe依賴于與POSIX兼容的信號實現(xiàn)機制來執(zhí)行相應(yīng)的軟件中斷。而這可以用來喚醒休眠線程和異常句柄。

非阻塞I/O接口。和select()相似。

3.4 動態(tài)類加載器

為了在OS20操作系統(tǒng)中使用,須修改源代碼中平臺無關(guān)的部分---動態(tài)類加載器。它是Java運行時環(huán)境的一部分,被用來負責加載被調(diào)用的方法(methods)。在桌面環(huán)境中,與方法相關(guān)的字節(jié)碼被放在類文件中,動態(tài)類加載器使用給定的方法名在類路徑下的子目錄和文件里搜索。但由于OS20操作系統(tǒng)沒有文件系統(tǒng),所以類加載器必須被修改成在內(nèi)存(RAMROM)中搜索類文件。為此我們完全重寫動態(tài)類加載器。

我們采用了靜態(tài)查找表裝載機制,建立了一個查找表。這個查找表的結(jié)構(gòu)定義如下:

typedef struct

{

int index;

int size;

char name;

}classIndexTable;

這個查找表用來映射類名或方法名到它們在內(nèi)存中的起始地址。這樣就可以用查找表來替代類加載器。即將類型和路徑組合為一個唯一的標識, 比如“java string”,組合起來就是“java_string”,然后再利用這個組合的結(jié)果檢索查找表。

利用組合的結(jié)果與查找表中每一項的name字段進行字符串比較,直到完全匹配為止。如果沒有任何匹配則說明系統(tǒng)不支持這個類型。匹配上name 后,類裝載器將獲得index和size的值。index是一張存放所有.class文件起始地址表的索引,根據(jù)這個索引就可以找到具體的.class文件的二進制映像的起始地址,而size則是該.class文件的大小。這樣根據(jù).class文件存儲位置的地址和大小就可以成功地完成類的裝載。

3.5 虛擬機啟動

由于OS20操作系統(tǒng)是被GCC編譯到主程序中,我們需要將kaffe虛擬機的初始化函數(shù)做為主應(yīng)用程序中的某個任務(wù)來運行。kaffe虛擬機的初始化與啟動是通過在主程序中運行initializeKaffe()函數(shù)來完成的。

4 測試與結(jié)果

在主程序中,調(diào)用OS20操作系統(tǒng)中的系統(tǒng)調(diào)用task_create()來將Kaffe虛擬機初始化為系統(tǒng)的一個進程。并為它分配必要資源,包括進程優(yōu)先級、系統(tǒng)需要的內(nèi)存空間等。依照分配的優(yōu)先級,參與系統(tǒng)的進程調(diào)度。最后,將整個修改好的源代碼在新的編譯環(huán)境下編譯連接成可執(zhí)行代碼,通過JTAG口下載到機頂盒開發(fā)板中運行。

Kaffe虛擬機的“輸入”是“hello.java”,經(jīng)過編譯后生成類文件“hello.class”。運行下載到Flash的主程序,在調(diào)試終端可以看到“hello world”字樣,這是Kaffe虛擬機解釋字節(jié)碼的結(jié)果。說明基于Sti5516芯片的Kaffe虛擬機移植成功。

5 結(jié)束語

以上介紹了Java虛擬機Kaffe的軟件架構(gòu),從中我們可以看出,Kaffe虛擬機具有較好的可擴展結(jié)構(gòu)模型,是遵循Java規(guī)范的優(yōu)良的開放源碼虛擬機,可以適應(yīng)多種嵌入式應(yīng)用環(huán)境。本文按照歐洲D(zhuǎn)VB-MHP規(guī)范,給出了Kaffe虛擬機在Sti5516機頂盒環(huán)境下的移植方案,使其可以應(yīng)用于要求較高的嵌入式系統(tǒng)中,為機頂盒在證券信息服務(wù)、電子節(jié)目、MP3音樂下載、電子郵件、網(wǎng)頁瀏覽等新型服務(wù)領(lǐng)域的開發(fā)應(yīng)用奠定堅實的基礎(chǔ)。我們相信,隨著基于Java技術(shù)的DVB-MHP中間件技術(shù)的廣泛使用,將使嵌入式系統(tǒng)的應(yīng)用開發(fā)更加簡捷方便。

責任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7103

    瀏覽量

    125055
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2986

    瀏覽量

    107089
  • 虛擬機
    +關(guān)注

    關(guān)注

    1

    文章

    963

    瀏覽量

    29128
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    請問QTE可以同幾種JAVA虛擬機集成

    《嵌入式linux應(yīng)用開發(fā)完全手冊》第500頁中有講:“QTE可以同幾種JAVA虛擬機集成。JAVA程序可以基于QTE的工作平臺上運行,提供同源程序相同的效果”我就是想請問,是否有那個版本的QTE是有帶
    發(fā)表于 05-24 05:45

    淺談Java虛擬機研究與移植

    Kaffe移植的關(guān)鍵技術(shù)及方案基于ST20嵌入式系統(tǒng)的Java虛擬機研究與移植
    發(fā)表于 04-25 09:49

    Java虛擬機介紹

    什么是JVM?Java虛擬機Java Virtual Machine, JVM)實際上是一個類似于真實計算機系統(tǒng)的抽象(Abstract Computing Machine),它擁
    發(fā)表于 04-10 16:15 ?0次下載

    Java虛擬機向ARM平臺的移植

    介紹Java 虛擬機的概念,以常用的KVM 為例,講述了將Java 虛擬機移植到ARM 平臺的方法,重點介紹了移植過程中的編譯選項。
    發(fā)表于 09-23 11:54 ?38次下載

    Java虛擬機向ARM平臺的移植

    介紹Java 虛擬機的概念,以常用的KVM 為例,講述了將Java 虛擬機移植到ARM 平臺的方法,重點介紹了移植過程中的編譯選項。
    發(fā)表于 09-23 11:54 ?22次下載

    微軟java虛擬機下載

    微軟java虛擬機下載:Java虛擬機(JVM)是Java Virtual Machine的縮寫,它是一個虛構(gòu)出來的計算機,是通過在實際的計
    發(fā)表于 02-26 08:26 ?38次下載

    Java虛擬機基礎(chǔ)

    JVM基礎(chǔ)----java虛擬機的學習內(nèi)容。
    發(fā)表于 10-30 10:21 ?0次下載

    深入JAVA虛擬機

    深入JAVA虛擬機
    發(fā)表于 03-19 11:24 ?1次下載

    JAVA虛擬機的體系結(jié)構(gòu)及基本類型

    JAVA虛擬機的體系結(jié)構(gòu) 下圖是JAVA虛擬機的結(jié)構(gòu)圖,每個Java虛擬機都有一個類裝載子系統(tǒng),
    發(fā)表于 09-27 11:30 ?0次下載
    <b class='flag-5'>JAVA</b><b class='flag-5'>虛擬機</b>的體系結(jié)構(gòu)及基本類型

    Dalvik虛擬機進程模型分析

    Android是集操作系統(tǒng)、中間件和關(guān)鍵應(yīng)用為一體的運行與移動設(shè)備上的軟件包。Dzlvik虛擬機是Google自主開發(fā)的代號為Dalvik的Java虛擬機技術(shù)。Google自主開發(fā)
    發(fā)表于 03-20 10:00 ?10次下載
    Dalvik<b class='flag-5'>虛擬機</b>進程模型分析

    Java虛擬機參數(shù)調(diào)優(yōu)

    隨著JAVA在應(yīng)用系統(tǒng)級的項目開發(fā)中的使用越來越廣泛,虛擬機、垃圾收集、熱點編譯、J2EE等新技術(shù)層出不窮,JAVA作為系統(tǒng)級開發(fā)的一個選擇的優(yōu)勢也越來越明顯,在此同時其不能完全編譯、垃圾收集等與生
    發(fā)表于 04-03 11:29 ?1次下載

    VMware軟件虛擬機和PLC通訊的連接方法

    現(xiàn)在虛擬機應(yīng)該說主流的用的比較多的還是使用VMware軟件虛擬機,所以我就以VMware軟件虛擬機應(yīng)該如何和PLC通訊做一個簡單的說明!
    的頭像 發(fā)表于 09-30 14:29 ?2.5w次閱讀

    由淺入深的了解Java虛擬機

    說到Java虛擬機,相信作為Java程序員的小伙伴們都不陌生,他們每天都在寫Java代碼,寫的代碼都是在一個叫做Java
    的頭像 發(fā)表于 01-01 17:50 ?2509次閱讀

    Java:JVM虛擬機的入門知識

    Java開發(fā)現(xiàn)在面試越來越難了,進大廠必備的JVM、多線程高并發(fā)這都是最基礎(chǔ)的知識了,今天我們一起來學習Java虛擬機入門。
    的頭像 發(fā)表于 07-01 11:43 ?2477次閱讀
    <b class='flag-5'>Java</b>:JVM<b class='flag-5'>虛擬機</b>的入門知識

    Java入手如何了解虛擬機(VM)

    虛擬機的設(shè)計架構(gòu)有兩種: 基于求值棧、基于寄存器,如果從更大的范圍可以認為只要實現(xiàn)了功能的都可以認為是虛擬機,通過直接遍歷AST得到結(jié)果的也可以算一種虛擬機
    的頭像 發(fā)表于 03-03 10:00 ?1333次閱讀
    從<b class='flag-5'>Java</b>入手如何了解<b class='flag-5'>虛擬機</b>(VM)
    主站蜘蛛池模板: 国模在线视频一区二区三区 | 国产三级日产三级日本三级 | 永久免费看片 | 在线免费看视频 | 人人公开免费超级碰碰碰视频 | 黄色国产 | 奇米影视999 | 免费日韩网站 | 手机亚洲第1页 | 欧美大片xxxxbbbb | 国产乱子伦 | 黄色免费在线网站 | 亚洲一二三区视频 | 欧美性生交xxxxx久久久 | 亚洲va国产va天堂va久久 | www.乱| 同性同男小说肉黄 | 91色爱| 女上男下边吃奶边做视频成都 | 国产精品乳摇在线播放 | 四虎影院视频在线观看 | 国产精品igao在线观看樱花日本 | 天天久久综合网站 | 黄色大成网站 | www.黄黄黄| 日本特黄特色特爽大片老鸭 | 91大神大战高跟丝袜美女 | 国产小片| xxxxx69日本老师hd | 久久电影福利 | 男人的天堂黄色 | 加勒比精品久久一区二区三区 | 国产天天操| 色婷婷丁香 | 中文字幕在线一区二区在线 | 99pao强力打造免费高清色 | 222aaa免费国产在线观看 | 国产精品天天干 | 久久成人免费网站 | 天天干干天天 | 日本xxxx69hd|