《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業(yè)界動態(tài) > 基于數字電視機頂盒的Java虛擬機的移植

基于數字電視機頂盒的Java虛擬機的移植

2008-09-10
作者:姚 莉,,張 萍,,于鴻洋

  摘 要: 為了增強數字電視機頂盒的網絡交互能力,介紹了嵌入式中間件Java虛擬機以及它在數字電視機頂盒上的移植與實現,。簡要敘述了普通DVB-C有線數字電視" title="有線數字電視">有線數字電視機頂盒技術,,介紹了嵌入式中間件的概念,、背景以及JavaVM的層次結構。重點介紹了JavaVM在數字電視機頂盒上的移植過程,。運行結果表明JVM在機頂盒上移植成功,。
  關鍵詞: 數字電視 機頂盒 嵌入式中間件 Java虛擬機


  數字電視是當前IT產業(yè)的熱點,作為一項即將在全國范圍內開播的信息服務,,它融合了計算機,、多媒體、通信網絡等眾多技術,。隨著數字電視近幾年的發(fā)展,,交互式電視" title="交互式電視">交互式電視越來越受重視。交互式電視可以為用戶提供豐富的互動功能,,包括電子節(jié)目指南,、視頻點播、股票信息,、互動游戲等,。目前,數字電視機頂盒是基于有線電視網絡傳輸的模擬電視機接收數字電視節(jié)目和數字信息的主要接入平臺,。要實現交互式電視的功能,,數字電視中間件技術是必不可少的條件,它已成為交互式電視的核心技術,。我國已制定了數字電視中間件標準,,利用該標準開發(fā)具有自主知識產權的中間件系統(tǒng)是非常必要的。
  本文以目前較為成熟的數字電視機頂盒技術為參考背景,,提出了一種將中間件JavaVM移植到數字電視機頂盒上的方案,,詳細介紹了整個方案的原理以及具體實現過程。
1 有線數字電視機頂盒技術
  有線數字電視機頂盒結構如圖1所示,。


  普通(民用)有線數字機頂盒是傳統(tǒng)HFC網絡與傳統(tǒng)模擬電視之間的數字橋梁,。在HFC網絡的前端,數字復接器將各種已編碼的數字電視節(jié)目信號與數據廣播信號復接,,經過組幀,、QAM調制和載波調制成DVB-C信號流,,通過HFC網絡向用戶廣播。用戶則通過數字機頂盒鎖定電視節(jié)目頻道,,經過QAM解調,、解復用、解壓縮,、解密和收費控制等過程完成節(jié)目接收,。機頂盒的核心模塊(如STi5512)是數字電視解碼器,它是一個嵌入式系統(tǒng),,一般有以下硬件模塊:MIPS CPU,、解調器、解復用器,、A/V解碼器,、模擬A/V編碼器等。
  本方案中選用ST公司的Sti5516芯片,,該芯片的CPU為ST20-C2,。
2 中間件技術
  從硬件技術看,CPU速度越來越高,,處理能力越來越強,;從軟件技術看,應用程序" title="應用程序">應用程序的規(guī)模不斷擴大,,特別是因特網的出現,,使計算機的應用范圍更為廣闊,許多應用程序需在網絡環(huán)境的異構平臺上運行,。這一切對新一代軟件的開發(fā)提出了新的需求,。在這種分布異構環(huán)境中,通常存在多種硬件系統(tǒng)平臺(如PC,、工作站,、小型機等),在這些硬件平臺" title="硬件平臺">硬件平臺上又存在各種各樣的系統(tǒng)軟件(如不同的操作系統(tǒng),、數據庫,、語言編譯器等),以及多種風格各異的用戶界面,,這些硬件系統(tǒng)平臺還可能采用不同的網絡協(xié)議和網絡體系結構連接,。如何把這些系統(tǒng)集成并開發(fā)新的應用是一個非常現實而困難的問題,。
  為解決分布異構問題,提出了中間件(middleware)的概念,。
  中間件是在應用程序與操作系統(tǒng),、硬件平臺之間嵌入的一個中間層,,通常定義成一組較為完整的、標準的應用程序接口,。它主要為應用軟件的開發(fā)提供跨操作系統(tǒng),、跨硬件的平臺及層次化、模塊化和可擴展的接口,,同時,,根據嵌入式應用的編程特點提供必要的編程工具。
  借助中間件,,應用程序可以獨立于操作系統(tǒng)和硬件平臺,,使產品的開放性和可移植性更強。有了中間件,,應用程序不僅可以運行于不同硬件平臺,,也可以在不同的操作系統(tǒng)上運行,從而在提高開發(fā)效率,、減少開發(fā)成本的同時能夠跟上技術的發(fā)展,,使應用的開發(fā)變得更加簡捷,也為應用程序提供了一個相對穩(wěn)定的高層應用環(huán)境,。
  對于數字電視機頂盒,,數字電視中間件是指位于數字電視機頂盒內部實時操作系統(tǒng)與應用程序之間的軟件部分,它將應用程序與底層的操作系統(tǒng),、硬件細節(jié)隔離,,使應用不依賴具體的硬件平臺。它在數字電視中的位置如圖2所示,。


3 Java與Java虛擬機
3.1 Java簡介

  對于大多數開發(fā)語言,,需要編譯或解釋。但是Java語言與那些需要編譯或解釋的語言比起來較特殊,。通過編譯器, 首先程序被翻譯為一種稱為Java bytecode的中間語言,一種在Java平臺上被解釋器解釋的平臺獨立代碼,。解釋器解釋計算機上所有的Java bytecode指令。一旦編譯完成,,在程序每次執(zhí)行時,,系統(tǒng)都會發(fā)生一次解釋過程。圖3演示了該過程,。


  每個Java解釋器,,不管是一個開發(fā)工具或者是一個運行applet小程序的web瀏覽器,都是Java虛擬機的實現形式,。Java bytecodes 使得“一次編寫,,隨處運行”這種時髦觀點成為可能。bytecodes 能夠運行在任何一種Java虛擬機形式上,這就意味著只要計算機上安裝有Java虛擬機, 那么同樣的一個Java程序可以運行在 Windows 2000系統(tǒng),、 Solaris 工作站或者一個Mac系統(tǒng)上,。
3.2 Java平臺
  一個平臺是程序運行的硬件或者軟件環(huán)境。剛才已經提到了一些比較流行的平臺,,如Windows 2000,、 Linux、Solaris和Mac OS,。大多數平臺可以認為是硬件和操作系統(tǒng)的聯(lián)合體,。 Java與其他平臺不同,因為它只是一個運行在其他硬件平臺基礎上的軟件平臺,。Java平臺有兩個組件:JavaVM和JavaAPI,。圖4為Java平臺結構圖。


3.3 J2ME平臺
  Java發(fā)展至今已推廣到各種平臺,,針對不同應用平臺SUN公司開發(fā)了四個版本的Java運行環(huán)境,,其中如PDA、STB這樣的硬件運算能力不高且存儲有限的各式消費性電子產品專門提出了J2ME版本,。
  J2ME定義了一套Java的運行環(huán)境和開發(fā)環(huán)境,,它包含安裝在各類消費性電子設備中的Java虛擬機和特別為了各類消費性電子設備中的核心類庫。而J2ME的主要應用則可以分為兩大類:個人移動設備和共享固定設備,。前者在Configuration層使用CLDC,,其所應用的終端設備包括移動電話等,在人機接口上比較精簡且內存需求較小,。后者在Configuration層使用CDC,,如車用導航、娛樂設備,、數字電視機頂盒等,。圖 5為J2ME平臺結構。


4 移植與實現過程
  筆者所做的工作就是將JavaVM的CDC&Foundation移植到前述框圖所描述的數字電視機頂盒上,,見圖6,。


4.1方案
  我國的數字電視中間件標準明確指出中間件系統(tǒng)要采用Java虛擬機,提供Java應用程序標準接口,,使用Java語言編寫交互式應用程序,。根據該標準,結合有線電視機頂盒的硬件環(huán)境和操作系統(tǒng)等特征,,提出了基于有線電視機頂盒的數字電視中間件的實現方案,。
4.2 方案的實現
  采用SUN公司在其主頁上公布的免費的Java虛擬機軟件實現代碼,經過各方面的修改移植到現有的數字電視機頂盒上,。
4.2.1 環(huán)境搭建
  (1)通過修改源碼中的build目錄下的相關make文件,,使得虛擬機源代碼" title="源代碼">源代碼的運行環(huán)境得以正確搭建在機頂盒上,,為下一步的代碼調試奠定基礎。主要表現在編譯器名稱以及路徑,、文件后綴名和JDK工具包路徑,。為了減少初期移植工作的難度,,相應地簡化修改了一些生成Java虛擬機可執(zhí)行代碼的選項,。
  (2)根據現有數字電視機頂盒具體的硬件配置,主要根據flash的大小修改了相應的硬件配置文件,。
4.2.2 代碼調試
  在正確搭建了編譯調試環(huán)境后,,做代碼的調試。主要有以下幾個方面的修改和代碼重寫:
  (1)與操作系統(tǒng)相關的修改,。數字電視機頂盒采用ST公司提供的嵌入式實時操作系統(tǒng)OS20,,而源代碼中是基于Linux操作系統(tǒng)。修改關于task結構的定義和使用,。另外在OS20操作系統(tǒng)內核代碼中的關于支持可變參數的定義也與Linux中的不同,,也要做相應修改。
  (2)與CPU有關的修改,。主要是將源代碼中用X86匯編指令寫的匯編文件CVMjniInvokeNative.S用自行設計的C2匯編指令實現,。由于ST20-C2提供的寄存器較少,在實現中采用了局部變量完成數據的存儲和傳遞,。
  (3)調試中的簡化修改,。屏蔽了多線程,給調試帶來了莫大的方便,。去掉動態(tài)加載功能,,使需要使用的類都是預先編譯并被本地化成romjava.c。
4.2.3 測試與運行結果
  JavaVM實際上是系統(tǒng)的一個進程,,系統(tǒng)會像對待普通進程一樣,,為它分配必要資源,包括進程優(yōu)先級,、系統(tǒng)需要的內存空間等,。JavaVM作為系統(tǒng)的進程,將依照自己優(yōu)先級,,參與系統(tǒng)的進程調度,。JavaVM系統(tǒng)與其它進程一起,共享包括處理器資源在內的系統(tǒng)資源,。為此,,筆者在main()函數中創(chuàng)建一個任務來啟動javavm這個任務。
  將整個修改好的源代碼在新的編譯環(huán)境下編譯連接成可執(zhí)行代碼,,通過JTAG口下載到機頂盒目標板中運行,。
  Java虛擬機的“輸入”是“hello.java”,經過Javac編譯后生成類文件“hello.class”。如果代碼調試成功就應該在顯示終端打出“hello world”字樣,,這是Java虛擬機解釋字節(jié)碼的結果,。說明基于CDC&Foudation配置的Java虛擬機移植成功。
  本論文提出的在有線數字電視機頂盒環(huán)境中實現數字電視中間件的方案采用Java技術作為核心,,充分體現了Java技術的優(yōu)點,,使交互式電視的應用開發(fā)更加簡捷方便。該方案實現了Java平臺(CDC)的基本功能,,為進一步研究和實現Java應用程序標準接口提供了軟件平臺,。
  當然目前的這個CDC實現還存在部分問題,需要進一步改進以提高其穩(wěn)定性,,在此基礎上,,可以增加個人簡表和Java TV API為Java應用程序的開發(fā)提供完整的環(huán)境。
  以上介紹了嵌入式中間件JavaVM的基本概念及其抽象模型,,給出了它在數字電視機頂盒的移植與實現,。通過嵌入式中間件JavaVM,使不同平臺之間的應用程序代碼快速移植成為可能,。嵌入式中間件可以適用于不同軟硬件平臺,;能夠獨立于平臺和處理器,能移植于不同操作系統(tǒng)與不同微處理器體系結構,,從而使上層的應用程序移植性更強,。我們相信,嵌入式中間件的廣泛使用將使嵌入式應用也能像Java語言一樣,,可在各式各樣機器,、操作平臺的環(huán)境中開發(fā)應用軟件——“一次編譯,到處運行”,。
參考文獻
1 探矽工作室.深入嵌入式Java虛擬機.北京:中國鐵道出版社,2003
2 Connected Device Configuration and Foundation Profile. Version 1.0.1 Java(tm) 2 Platform. Micro Edition,2003
3 CDC: An Application Framework for Personal Mobile Devices. JavaTM 2 Platform. Micro Edition,2003

本站內容除特別聲明的原創(chuàng)文章之外,,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點,。轉載的所有的文章,、圖片、音/視頻文件等資料的版權歸版權所有權人所有,。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者,。如涉及作品內容、版權和其它問題,,請及時通過電子郵件或電話通知我們,,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected],。