⊙  中國視聽網(wǎng) > 行業(yè)新聞 > 機頂盒 > 案例頻道 | 應(yīng)用案例 > Java虛擬機用于數(shù)字電視機頂盒

Java虛擬機用于數(shù)字電視機頂盒

中國視聽網(wǎng)資訊 更新時間:2010-1-22 15:38:58  編輯:溫情  [ ]     手機訪問

內(nèi)容導(dǎo)航:

Java用于數(shù)字電視機頂盒研究與實現(xiàn)(1)


  引言

  隨著有線廣播電視網(wǎng)向數(shù)字化、網(wǎng)絡(luò)化、產(chǎn)業(yè)化方向發(fā)展,利用有線電視網(wǎng)絡(luò)作為傳輸平臺的數(shù)字電視機頂盒除了能夠讓用戶在現(xiàn)有模擬電視機上觀看數(shù)字電視節(jié)目之外,廣播和交互式多媒體應(yīng)用功能的要求也應(yīng)運而生,互動電視成為數(shù)字電視發(fā)展的方向。眾多程序員熟悉的為網(wǎng)絡(luò)廣泛運用的Java語言能很好地滿足機頂盒一些服務(wù)應(yīng)用的要求,因此提出了包含Java虛擬機的數(shù)字電視機頂盒中間件的系統(tǒng)架構(gòu),該虛擬機用來執(zhí)行Java應(yīng)用程序,并且中間件將應(yīng)用程序和底層操作系統(tǒng)、硬件細節(jié)隔離開,使上層的數(shù)字電視的服務(wù)應(yīng)用不必考慮過多的底層細節(jié)。本文主要介紹了J2ME中主要用于數(shù)字電視領(lǐng)域的CDC的移植,其中又著重介紹了本地方法(nativemethod)的實現(xiàn)過程。



  結(jié)構(gòu)及工作原理


圖1 Java虛擬機的工作過程


  Java虛擬機工作原理

  Java虛擬機處于機器和編譯程序之間,在任何平臺上都提供給編譯程序一個共同的接口。Java源程序經(jīng)過編譯器編譯后變成字節(jié)碼,字節(jié)碼由虛擬機解釋執(zhí)行,虛擬機將每一條要執(zhí)行的字節(jié)碼送給解釋器,解釋器將其翻譯成特定機器上的機器碼,然后在特定的機器上運行。

  Java虛擬機的主要任務(wù)是裝載class文件并且執(zhí)行其中的字節(jié)碼。Java虛擬機包含一個類裝載器,它可以從程序和API中裝載class文件。字節(jié)碼由執(zhí)行引擎來執(zhí)行,具體過程如圖1所示。

  Java虛擬機結(jié)構(gòu)

  類裝載器的體系結(jié)構(gòu)是Java虛擬機在安全性和網(wǎng)絡(luò)移動性上發(fā)揮重要作用的一個方面,圖中所示的類裝載器可以包含多個類裝載器的子系統(tǒng),Java應(yīng)用程序能夠在運行時決定需要安裝的類,并且將被不同的類裝載器裝載的類存放在不同的命名空間。

  執(zhí)行引擎處于Java虛擬機的核心位置,它的行為由指令集所決定,其主要作用就是解釋字節(jié)碼(即運行經(jīng)過編譯后的Java程序的class文件),不同的執(zhí)行引擎實現(xiàn)可能非常不同。由軟件實現(xiàn)的虛擬機的執(zhí)行引擎分為一次性解釋字節(jié)碼、即時編譯器和自適應(yīng)優(yōu)化器,由硬件芯片構(gòu)成的虛擬機用本地方法執(zhí)行Java字節(jié)碼,它的執(zhí)行引擎是內(nèi)嵌在芯片里。

  Java虛擬機相當于一個堆棧計算機,它在指令間傳送信息時不使用任何物理寄存器,而使用堆棧的幀來表示方法的狀態(tài)、字節(jié)碼的操作對象、方法的參數(shù)空間及局部變量的空間,它的“程序計數(shù)器”為一個偽寄存器,是當前所執(zhí)行指令的字節(jié)碼數(shù)組的一個指針。

  Java實現(xiàn)方法

  Java有兩種實現(xiàn)方法:Java方法和本地方法。Java方法是由Java語言編寫,編譯成字節(jié)碼,存儲在class文件中。本地方法是由其他語言(比如C,C++,或者匯編語言)編寫的,編譯成和處理器相關(guān)的機器代碼,保存在動態(tài)連接庫中,格式是各個平臺專有的,它是聯(lián)系Java程序和底層主機操作系統(tǒng)的連接方法。Java方法與平臺無關(guān),但是本地方法卻不是,運行中的Java程序調(diào)用本地方法時,虛擬機裝載包含這個本地方法的動態(tài)庫,并調(diào)用這個方法。通過本地方法,Java程序可以直接訪問底層操作系統(tǒng)的資源,使程序和特定的平臺相關(guān),一個本地方法接口——Java本地接口(JNI)使得本地方法可以在特定的主機系統(tǒng)的任何一個Java平臺上運行。

  J2ME中的CDC移植的解決方案

  我們選用的要移植的Java虛擬機是Sun公司提供的J2ME對于數(shù)字電視領(lǐng)域CDC配置,該虛擬機是針對Linux的軟件實現(xiàn)(用C語言編寫的虛擬機,該虛擬機也稱為CVirtualMachine,簡稱CVM)。Java虛擬機規(guī)范并沒有強求Java虛擬機必須支持任何特定的本地方法接口,但是Sun公司提供了本地方法接口(JavaNativeInterface),是為移植所用。Java程序通過調(diào)用本地方法和主機交互。

  Java虛擬機

圖2 Java虛擬機的位置


  虛擬機處于嵌入式操作系統(tǒng)OS20上,因此Sun公司提供的Java虛擬機中與底層操作系統(tǒng)相關(guān)的操作都應(yīng)該替換為OS20的內(nèi)核函數(shù)。因此將Sun公司提供的CDC移植到OS20需要完成一些工作,比如:C語言中關(guān)于基本數(shù)據(jù)類型的數(shù)據(jù)位的修改,關(guān)于線程的創(chuàng)建機制(OS20為任務(wù)),關(guān)于線程之間的同步、互斥,關(guān)于動態(tài)連接的實現(xiàn),關(guān)于本地方法的實現(xiàn)等,本節(jié)主要介紹關(guān)于本地方法的實現(xiàn)過程。

  本地方法

  解釋器處理字節(jié)碼時,與給定字節(jié)碼有關(guān)的動作的語義、執(zhí)行字節(jié)碼的相關(guān)動作大多是從堆棧中獲得其操作數(shù),并將其結(jié)果送回堆棧中。典型的情況下字節(jié)碼是帶有參數(shù)的,這些參數(shù)在字節(jié)碼流中緊跟在字節(jié)碼自身之后。

  在虛擬機解釋字節(jié)碼過程中,執(zhí)行引擎會不時遇到請求本地方法調(diào)用的指令,虛擬機負責試著發(fā)起這個本地方法的調(diào)用。本地方法是Java虛擬機指令集的一種可編程擴展,運行這個本地方法就是Java虛擬機對這條指令的執(zhí)行。

  本地方法函數(shù)調(diào)用

  為了增加虛擬機的性能,加快其速度,解釋器在處理一些字節(jié)碼時調(diào)用的本地方法函數(shù)用匯編實現(xiàn)了將Java棧轉(zhuǎn)換為C棧,然后在C堆棧上實現(xiàn)函數(shù)的調(diào)用。Linux下是用獨立的匯編語言程序invokeNative_i386。S實現(xiàn)函數(shù)CVMjniInvokeNative(),我們采用在C里面嵌入?yún)R編的形式來實現(xiàn)該函數(shù)。

  該函數(shù)的形參有7個,完成的主要功能是將由實參傳遞來的部分數(shù)據(jù)通過直接或者運算后得到本地方法的參數(shù),然后壓入本地棧,通過匯編來實現(xiàn)本地的C函數(shù)調(diào)用。實參傳遞過來的7個數(shù)據(jù)包含JNI環(huán)境指針(env)、本地方法的函數(shù)指針(nativecode)、Java棧指針(args)、本地方法的描述符(tersesig),Java棧的參數(shù)總數(shù)(argssize)表示靜態(tài)或非靜態(tài)方法的類對象標志(classobject)及用于存儲返回值的一個指針變量(returnvalue),其中env要作為第一個本地方法的參數(shù)傳遞,并且nativecode也要傳遞到本地方法來實現(xiàn)本地方法的正確調(diào)用。

  J2ME中的CDC移植

  由于Linux有多個通用寄存器,在實現(xiàn)該函數(shù)的代碼中充分運用了如esp、ebp、esi等寄存器,但是OS20提供的可操作的寄存器只有3個通用寄存器Areg、Breg、Creg和1個工作指針寄存器Wptr(相當于堆棧指針),在實現(xiàn)過程中,我們用在C函數(shù)中設(shè)立局部變量來代替Linux的通用寄存器,通過手動調(diào)整工作棧指針來實現(xiàn)本地方法的調(diào)用,具體實現(xiàn)過程如圖3所示。

  當進入?yún)R編函數(shù)時,工作區(qū)指針為Wptr,實參、狀態(tài)寄存器和指令指針寄存器的值全部自動入棧,然后是我們定義的代替Linux寄存器的局部變量自動入棧,此時的Wptr自動移到Wptr′,利用OS20的匯編指令,手動將實參傳遞過來的參數(shù)通過計算得到本地方法參數(shù)的個數(shù),然后將本地方法所需的參數(shù)依次壓棧,最后再手動調(diào)節(jié)工作區(qū)指針實現(xiàn)本地方法的成功調(diào)用。這里我們先將本地方法函數(shù)指針和1個標志位flag(0x10101010)入棧,原因有兩個:

頁碼: 1 2  下一頁

更多相關(guān):  AV集成

文章來源:中國有線電視


資訊搜索

聲明:本站文章未經(jīng)授權(quán)不得轉(zhuǎn)載,轉(zhuǎn)載本站的文章請注明“來源:中國視聽網(wǎng)”。

網(wǎng)友評論

機頂盒相關(guān)新聞

圖片新聞

產(chǎn)品導(dǎo)航

今日焦點

新品快訊

新聞導(dǎo)讀

  1. 1中國已成為全球數(shù)字電視機頂盒制造中心
  2. 2貝塔斯瑞中標上海世博會兩大場館
  3. 3深圳艾比森:創(chuàng)世界名牌企業(yè)
  4. 4深科技KAIFA高清網(wǎng)絡(luò)播放機高調(diào)亮相CES
  5. 5Intel推出WiDi無線高清顯示技術(shù)
  6. 6高清播放機市場前景分析
  7. 72009大屏幕投影顯示行業(yè)評選專題報道
  8. 8網(wǎng)庭成為日本OS SCREEN 中國總代理
  9. 9珠江燈光總裁梁志遠-站得高才能看得遠
  10. 10廣州彩熠:祝福祖國 共享全運
  1. 1恩智浦副總:全球半導(dǎo)體業(yè)下半年有望復(fù)蘇
  2. 2歌舞樂《藏謎》燈光總監(jiān)劉陶訪談
  3. 3珠江燈光:中國照明品牌國際化的先行者
  4. 4珠江燈光梁志遠:隱形冠軍的全球雄心
  5. 5珠江燈光總裁梁志遠-站得高才能看得遠
  6. 6H3C張鵬國:以聯(lián)網(wǎng)為原點監(jiān)控步入新時代
  7. 7專訪錄像達人----李冠毅
  8. 8中興通訊多媒體總監(jiān)陳峰:IPTV三年大發(fā)展
  9. 9推動國內(nèi)高清應(yīng)用升級 專訪I-BOX何總
  10. 10索博副總經(jīng)理 楊華專訪
  1. 1征服高清全格式-高清銳視N3評測
  2. 2飛柯原車汽車娛樂系統(tǒng)升級評測
  3. 3家用720P雙3D投影機--Acer H5360評測
  4. 4投影時代大屏評選盛典:LED顯示屏精品產(chǎn)品匯
  5. 5數(shù)字電子看板的產(chǎn)業(yè)標準化問題探討會議
  6. 6全國首測!NEC投影機新品 NP305+ 實拍效果賞
  7. 7e時代首選 康佳LC55TS88EN液晶電視評測
  8. 8捷卡瑪HD-720P微型高清數(shù)字投影機評測
  9. 9宏碁、酷樂視、奧圖碼、愛普泰克主力掌上投
  10. 10漢王創(chuàng)藝高手+無線0604對比WACOM  BAMBOO F
  1. 1長沙市賀龍體育運動學(xué)校投影機采購
  2. 2武漢市第二十七中學(xué)投影機/幕布/展臺/中控/
  3. 3紅谷灘新區(qū)財政局投影機/投影幕/展示臺/中控
  4. 4汕頭大學(xué)醫(yī)學(xué)院附屬腫瘤醫(yī)院投影機等采購
  5. 5貴州省全民健身晨晚練點音響器材采購
  6. 6河南省高級人民法院會議音響及顯示設(shè)備項目
  7. 7重慶市巴南區(qū)體育場音響擴聲系統(tǒng)1套
  8. 8武漢軟件工程職業(yè)學(xué)院學(xué)術(shù)會議中心視頻音響
  9. 9益陽市大樓會議室燈光音響等設(shè)備采購
  10. 10日照演播室音響設(shè)備改造項目詢價
  1. 1視高為普利森集團搭建信息化會議通道
  2. 2CREATOR快捷中控矩陣系統(tǒng)應(yīng)用于廣東移動
  3. 3美國TiVo機頂盒捆綁網(wǎng)上購物服務(wù)
  4. 4Java虛擬機用于數(shù)字電視機頂盒
  5. 5NXP與ITVN通過IP機頂盒推動IPTV在北美的應(yīng)用
  6. 6雷蒙觸控式會議系統(tǒng)應(yīng)用于中國科學(xué)院
  7. 7上海緣宸助力鄭東新區(qū)數(shù)字展廳弧幕項目
  8. 8加拿大KBL顧問集團選用寶利通視頻會議
  9. 9寶利通助力中國郵政儲蓄銀行浙江省分行
  10. 10馬田亮相央視為《籃球公園》發(fā)布會添彩
設(shè)為首頁 | 商務(wù)信息 | 視聽資訊 | 本站動態(tài) | 關(guān)于中國視聽網(wǎng) | 網(wǎng)站地圖 | 網(wǎng)站RSS | 視聽3G | 友情鏈接
本站網(wǎng)絡(luò)實名:中國視聽網(wǎng) | 視聽網(wǎng) | 視聽產(chǎn)品報價 國際域名:http://115759.cn
版權(quán)所有 1999 中國視聽網(wǎng) 郵箱:web@av-china.com 電話:+86-755-33225360(十二線) 傳真:+86-755-33010311
深圳網(wǎng)絡(luò)警
察報警平臺
公共信息安
全網(wǎng)絡(luò)監(jiān)察
經(jīng)營性網(wǎng)站
備案信息
不良信息
舉報中心
中國文明網(wǎng)
傳播文明