當前位置:編程學習大全網 - 編程語言 - 請教CVM在機頂盒的移植過程

請教CVM在機頂盒的移植過程

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

每個Java解釋器,不管是壹個開發工具或者是壹個運行applet小程序的web瀏覽器,都是Java虛擬機的實現形式。Java bytecodes 使得“壹次編寫,隨處運行”這種時髦觀點成為可能。bytecodes 能夠運行在任何壹種Java虛擬機形式上,這就意味著只要計算機上安裝有Java虛擬機, 那麽同樣的壹個Java程序可以運行在 Windows 2000系統、 Solaris 工作站或者壹個Mac系統上。

1.2 Java平臺

壹個平臺是程序運行的硬件或者軟件環境。剛才已經提到了壹些比較流行的平臺,如Windows 2000、 Linux、Solaris和Mac OS。大多數平臺可以認為是硬件和操作系統的聯合體。 Java與其他平臺不同,因為它只是壹個運行在其他硬件平臺基礎上的軟件平臺。Java平臺有兩個組件:JavaVM和JavaAPI。

1.3 J2ME平臺

Java發展至今已推廣到各種平臺,針對不同應用平臺SUN公司開發了四個版本的Java運行環境,其中如PDA、STB這樣的硬件運算能力不高且存儲有限的各式消費性電子產品專門提出了J2ME版本。

J2ME定義了壹套Java的運行環境和開發環境,它包含安裝在各類消費性電子設備中的Java虛擬機和特別為了各類消費性電子設備中的核心類庫。而J2ME的主要應用則可以分為兩大類:個人移動設備和***享固定設備。前者在Configuration層使用CLDC,其所應用的終端設備包括移動電話等,在人機接口上比較精簡且內存需求較小。後者在Configuration層使用CDC,如車用導航、娛樂設備、數字電視機頂盒等。

2 移植與實現過程

筆者所做的工作就是將JavaVM的CDC&Foundation移植到前述框圖所描述的數字電視機頂盒上。

2.1方案

我國的數字電視中間件標準明確指出中間件系統要采用Java虛擬機,提供Java應用程序標準接口,使用Java語言編寫交互式應用程序。根據該標準,結合有線電視機頂盒的硬件環境和操作系統等特征,提出了基於有線電視機頂盒的數字電視中間件的實現方案。

2.2 方案的實現

采用SUN公司在其主頁上公布的免費的Java虛擬機軟件實現代碼,經過各方面的修改移植到現有的數字電視機頂盒上。

2.2.1 環境搭建

(1)通過修改源碼中的build目錄下的相關make文件,使得虛擬機源代碼的運行環境得以正確搭建在機頂盒上,為下壹步的代碼調試奠定基礎。主要表現在編譯器名稱以及路徑、文件後綴名和JDK工具包路徑。為了減少初期移植工作的難度,相應地簡化修改了壹些生成Java虛擬機可執行代碼的選項。

(2)根據現有數字電視機頂盒具體的硬件配置,主要根據flash的大小修改了相應的硬件配置文件。

2.2.2 代碼調試

在正確搭建了編譯調試環境後,做代碼的調試。主要有以下幾個方面的修改和代碼重寫:

(1)與操作系統相關的修改。數字電視機頂盒采用ST公司提供的嵌入式實時操作系統OS20,而源代碼中是基於Linux操作系統。修改關於task結構的定義和使用。另外在OS20操作系統內核代碼中的關於支持可變參數的定義也與Linux中的不同,也要做相應修改。

(2)與CPU有關的修改。主要是將源代碼中用X86匯編指令寫的匯編文件CVMjniInvokeNative.S用自行設計的C2匯編指令實現。由於ST20-C2提供的寄存器較少,在實現中采用了局部變量完成數據的存儲和傳遞。

(3)調試中的簡化修改。屏蔽了多線程,給調試帶來了莫大的方便。去掉動態加載功能,使需要使用的類都是預先編譯並被本地化成romjava.c。

2.2.3 測試與運行結果

JavaVM實際上是系統的壹個進程,系統會像對待普通進程壹樣,為它分配必要資源,包括進程優先級、系統需要的內存空間等。JavaVM作為系統的進程,將依照自己優先級,參與系統的進程調度。JavaVM系統與其它進程壹起,***享包括處理器資源在內的系統資源。為此,筆者在main()函數中創建壹個任務來啟動javavm這個任務。將整個修改好的源代碼在新的編譯環境下編譯連接成可執行代碼,通過JTAG口下載到機頂盒目標板中運行。

Java虛擬機的“輸入”是“hello.java”,經過Javac編譯後生成類文件“hello.class”。如果代碼調試成功就應該在顯示終端打出“hello world”字樣,這是Java虛擬機解釋字節碼的結果。說明基於CDC&Foudation配置的Java虛擬機移植成功。

本論文提出的在有線數字電視機頂盒環境中實現數字電視中間件的方案采用Java技術作為核心,充分體現了Java技術的優點,使交互式電視的應用開發更加簡捷方便。該方案實現了Java平臺(CDC)的基本功能,為進壹步研究和實現Java應用程序標準接口提供了軟件平臺。

當然目前的這個CDC實現還存在部分問題,需要進壹步改進以提高其穩定性,在此基礎上,可以增加個人簡表和Java TV API為Java應用程序的開發提供完整的環境。

以上介紹了嵌入式中間件JavaVM的基本概念及其抽象模型,給出了它在數字電視機頂盒的移植與實現。通過嵌入式中間件JavaVM,使不同平臺之間的應用程序代碼快速移植成為可能。嵌入式中間件可以適用於不同軟硬件平臺;能夠獨立於平臺和處理器,能移植於不同操作系統與不同微處理器體系結構,從而使上層的應用程序移植性更強。我們相信,嵌入式中間件的廣泛使用將使嵌入式應用也能像Java語言壹樣,可在各式各樣機器、操作平臺的環境中開發應用軟件——“壹次編譯,到處運行”。

  • 上一篇:陜西建工集團:開啟智慧建造新模式
  • 下一篇:Python並發編程pdf
  • copyright 2024編程學習大全網