- 相關推薦
基于虛擬處理器嵌入式中間件
摘要:嵌入式中間件是使嵌入式應用獨立于具體軟硬件平臺的核心軟件環(huán)境。本文介紹可以被完全移植的基于虛擬處理器的嵌入式中間件;討論基本虛擬處理器的嵌入式中間件移植模型以及移植實現;給出采用虛擬處理器技術的嵌入式中間件Intent在PowerPC/PSOS平臺上的應用實例。關鍵詞:嵌入式 中間件 虛擬處理器 Intent
引言
嵌入式中間是在嵌入式應用程序和操作系統(tǒng)、硬件平臺之間嵌入的一個中間層,通常定義成一組較為完整的、標準的應用程序接口。它主要為嵌入式應用軟件的開發(fā)提供跨操作系統(tǒng)和跨硬件平臺,層次化、模塊化和可擴展的接口,同時,根據嵌入式應用的編程特點提供必要的編程工具。
借助嵌入式中間件,應用程序可以獨立于操作系統(tǒng)和硬件平臺,使產品的開放性和可移植性更強。有了中間件以后,應用程序不僅可以運行于不同硬件平臺,也可以在不同的操作系統(tǒng)上運行,從而在提高開發(fā)效率、減少開發(fā)成本的同時能夠跟上技術的發(fā)展,使應用的開發(fā)變得更加簡捷。
1 基于虛擬處理器的嵌入式中間件
1.1 虛擬處理器
可移植性通常指將某一個操作系統(tǒng)的應用程序移植到新的平臺或處理器上。嵌入式中間件的功能是使應用獨立于操作系統(tǒng),獨立于硬件平臺,所以要求能夠建立在不同的操作系統(tǒng)和硬件平臺上,與支持具體的應用與平臺無關。因此,嵌入式中間件自身必須具有高度的可移植性,使它能夠被完全地移植到不同的軟硬件平臺上,包括庫以及所有其它部分;谔摂M處理器(Virtual processor)的嵌入式中間件,通常將所的代碼編譯到一個虛擬處理器而不關心具體的目標硬件平臺來實現這一特性。嵌入式中間件被設計成運行在一個虛擬的處理器上,一個理想的32位RISC(精簡指令集計算機)小端(little-endian)系統(tǒng)。(范文先生網m.panasonaic.com收集整理)基于這種系統(tǒng)編寫代碼時,就像在真正的處理器上編寫一樣。當將應用代碼轉換成準備在目標處理器上執(zhí)行的本地代碼時,只需要一個翻譯器;因而,無論是將嵌入式中間件移植到一個新的處理器、一個新的平臺還是兼而有之,都只需要編寫不同的界面接口即可實現其完全的移植。
1.2 移植模型
基于虛擬處理器的嵌入式中間件自身具有完全的可移植性,能夠提供通用的驅動,支持在不同的平臺上運行。影響基于虛擬處理器的嵌入式中間件可移植性的因素可抽象為三個組件,即翻譯器、CPU隔離接口和平臺隔離接口。利用翻譯器(translator),應用代碼可以被轉換為相應的本地代碼而運行。翻譯器將應用代碼映射為對等的本地代碼,包括指令選擇、寄存器分配和指令調度。由于嵌入式處理器的模式可能不同,所以嵌入式中間件應能提供基于小端(little-endians)處理器和大端(big-endians)處理器的翻譯器,以使所有代碼和數據,包括文件和網絡通信數據,都可以在不做任何修改的情況下,從一個小端處理器的系統(tǒng)搬移到其它大端處理器的系統(tǒng)中;同時,翻譯操作可根據靜態(tài)或動態(tài)地執(zhí)行。
此外,基于虛擬處理器的嵌入式中間件的可移植性還依賴于另外兩個組件。其一是CPU隔離接口CII(CPU Isolation Interface),它將操作系統(tǒng)與處理器的細節(jié)隔離。CII包含了實現FIXUP(定位)操作的函數及其它與CPU相關的操作。另一個組件是平臺隔離接口PII(Platform Isolation Interface)。通過提供一個抽象的中間層,PII將操作系統(tǒng)和設備驅動程序與Platform的細節(jié)隔離。PII提供一套函數,可以“虛擬地”訪問中斷、異常、內存管理、時鐘等等。由此抽象出來的基于虛擬處理器的嵌入式中間件結構如圖1所示。
最值得注意的就是,基于虛擬處理器的嵌入式中間件這一抽象模型的建立,可以通過PII和CII提供一種十分有效的機制,可以使中間件在“Hosted Mode(宿主模式)”下運行于操作系統(tǒng)上。運行于宿主模式的嵌入式中間件,其平臺隔離接口(PII)中部分函數的實現,包括用于設置或訪問中斷、異常、時鐘等函數,均須借助“宿主操作系統(tǒng)”提供的接口實現。
1.3 移植實現
嵌入式中間件環(huán)境的建立過程是將一個系統(tǒng)(中間件)移植到另一個系統(tǒng)——硬件平臺+實時操作系統(tǒng)的過程;谔摂M處理器的嵌入式中間件的移植實現可分為兩步:①移植到一個新的處理器,需要編寫翻譯器以及CPU隔離接口CII;②移植到一個新的平臺,需要重新實現平臺隔離層PIL(Platform Isolation Layer)。平臺隔離層指所有的使中間件適合一個具體平臺而編寫的代碼。這一層由平臺隔離接口PII和平臺具體的設備驅動程序所組成。
1.3.1 處理器移植
處理器的移植涉及到對翻譯器、CPU隔離接口的代碼重新實現。
(1)翻譯器
在進行處理移植時,真正需要實質改變的代碼是翻譯器。不同的處理器有著特定的翻譯器。一個翻譯器可以為任一類型處理器而創(chuàng)建;蛘呤且粋數字信號處理器(DSP),一個微處理器或者一個微控制器。
(2)CPU隔離接口
CII是一個集合名詞。它包含在內核和處理器之間提供接口的代碼以及搜集中間件在其上運行的處理器信息的代碼。中間件內核自身不需重新編寫。
CII的接口包括獨立處理器指令集的接口、任務切換期間調度程序和處理器之間起中介調停作用的接口以及用于棧操作的接口等。
1.3.2 平臺移植
平臺移植需要重新實現平臺隔離層,包括平臺隔離接口和具體的設備驅動程序。如果支持Java語言,還須實現Java原始接口中。
(1)平臺隔離接口
PII是一個函數集合,允許內核和設備驅動程序訪問硬件和軟件所提供的功能。對于內核,PII提供了一系列函數,用于系統(tǒng)啟動和關閉、分配和翻譯內存、鎖定和解鎖內存以及建立異常處理程序。設備驅動程序可以訪問的PII函數有:用于安裝和卸載中斷處理程序、物理地址空間和進程地址空間的映射和解除映射、獲得邏輯地址的物理址以及調用一個宿主操作系統(tǒng)的系統(tǒng)調用等一系列函數。
(2)設備驅動程序
設備驅動程序提供廣泛的用于和硬件接服務(比如I/O端口)以及軟件服務(比如與宿主操作系統(tǒng)的運行時接口)。設備驅動程序為每個設備系列提供了應用程序接口(API)。對于那一系列的每個設備API保持相,但是每個設備驅動程序包含了具體平臺和處理器的代碼。這樣,任何一個設備驅動程序的實現對應用程序是透明的,應用程序不用知道設備驅動程序如何提供它的服務。應用程序要使用某個設備驅動器,必須首先安裝它。所有的應用程序將一個設備驅動程序的用加入到一個叫作裝配表的查找表\u34920表中,同時有一個字與這個引用相關聯。這樣,可以編寫一個新的設備驅動程序,代替裝配表中原來的版本。只要賦予它和原來設備驅動器相同的名字,應用程序就可以訪問它,而意思到這一變化。
(3)Java原始接口
Java原始接口JNI(Java Native Interface)是一個標準的編程接口,用來編寫Java方法以及Java應用程序中使用Java虛擬機實現的原始方法庫的二進制兼容性。JNI的實現首先需建立兩個.h文件:host-md.h和host-hlp.h。它們?yōu)镴NI機制提供了宿主平臺的關信息。第一個文件定義了原始的類型,比如8、16、32、64位整數;第二個文件定義了一系列與OS無關的函數,用來分配內存,啟動進程和使用互斥變量等,然后為宿主主平臺重新編譯實現jni.c文件。
2 Intent中間件系統(tǒng)及其移植實現
2.1 Intent系統(tǒng)
Intent系統(tǒng)是一個典型的基于虛擬處理器的嵌入式中間件。它是一個專為連接家庭、可移動和專業(yè)網絡的數字裝置設計的多媒體內容平臺;具有功能強大、二進制可移植的特性,可廣泛運行于從低功耗裝置到工作站等各種設備。Intent內部各系統(tǒng)組伯按照可移植程度分為兩大類——可移植性強的組件和可移植性弱的組件。Java組件和多全庫等可移植組件組成完全可移植的Intent媒體平臺;而其它與硬件和下層宿主操作系統(tǒng)直接相關的組件,如翻譯器(translator)、設備驅動程序等,與Intern的OS核心(kernel)一起組成Intent系統(tǒng)的底層操作系統(tǒng)——elate。Intent系統(tǒng)的體系結構如圖2所示。
Elate是一個具有可移植性的實時操作系統(tǒng),它的移植通過將所有的代碼編譯到一個虛擬處理器來實現,而不關心具體的具體硬件平臺。Elate的核心就是這個虛擬處理器VP(Virtual Processor)。它被定義為一個32位字長,RISC(精簡指令集計算機)結構的小端系統(tǒng)。基于這種系統(tǒng)編寫代碼時,就像在真正的處理器上編寫一樣。當將可移植的代碼轉換成準備在鞭上執(zhí)行的目標處理器的本代碼時,只需一個翻譯器tool。Tool是elate中的概念,是用定義的虛擬處理器語言VP Code所編寫的程序,與函數或方法相類似。
與大多數操作系統(tǒng)不同,elate的絕大多數代碼了基于VP編寫的,這些代碼以靜態(tài)或運動的方式被轉換為真實處理器的本地代碼。里的“真實處理器”指令在運行elate的處理器。這便利大段的代碼在系統(tǒng)平臺間轉移成可能。Elate向Intent內核及其它應用提供了與CPU、外圍設備等硬件的資源接口,是Intent系統(tǒng)軟硬件的界面。
Intent系統(tǒng)可廣泛運行于數字電視機頂盒、智能手機、PDA以及其它嵌入式數字設備。以下將以數字電視機頂盒為例,介紹Intent的具體實現。
2.2 Intent系統(tǒng)的移植實現
數字電視機頂盒是一種能夠讓用戶在同有模擬電視上觀看數字電視節(jié)目,進行交互式數字化娛樂、教育和商業(yè)化活動的消費類電子產品。其基本功能是接收數字電視廣播節(jié)目,時具有所有廣泛和交互式多媒體應用的功能。機頂盒系統(tǒng)由硬件平臺和軟件系統(tǒng)組成,可將其分為4層,從底向上分別為底層硬件、實時操作系統(tǒng)平臺、中間件、應用軟件。底層硬件提供機頂盒的硬件平臺;實時操作系統(tǒng)平臺提供操作系統(tǒng)內核以及各種硬件驅動程序;中間件(middleware)將應用軟件與依賴于具體的硬件平臺;應用軟件包括本機存儲的應用和可不載的應用。
圖2
這里,所研發(fā)的機頂盒系統(tǒng)以PowerPC為微處理器,PSOS為實時操作系統(tǒng)平臺,Intent系統(tǒng)作為中間件層。系統(tǒng)中,PSOS操作系統(tǒng)作宿主操作系統(tǒng);Intent系統(tǒng)以寄生模式建立,通過其高效的Java虛擬機以及媒體平臺,實現機頂盒的交互功能。Intent的移植實現同樣分成兩個步驟;移植到新的處理器和移植到新的平臺。
2.2.1 移植到PowerPC
由于Intent提供了廣泛的翻譯器,用來將一個VP代碼的tool轉換成一個本地tool,因此對于系統(tǒng)翻譯器只需選擇針對PowerPC的翻譯器,同時根據PowerPC的特點,作部分修改。對Intent系統(tǒng)CII部分的移植主要包括;對獨立處理器指令集的接口tool、任務切換期間調度tool、處理器之間起中介調停作用的tool以及用于棧操作的tool進行針對PowerPC的重新編寫,這一層的代碼涉及到指令級調用。
2.2.2 移植到具體平臺
在宿主平臺(PSOS+設備)上,Intent的PII層將和PSOS接口。宿主模式下,VP代碼編寫的tool需要調用宿主端的函數,以訪問宿主的庫函數和系統(tǒng)調用,包括系統(tǒng)內存的管理、中斷的條開關閉操作,安裝時鐘中斷等操作,均需要調用宿主操作系統(tǒng)的函數。Intent中提供的一個跨系統(tǒng)調用的機制叫作Opentool。Opentool提供了一種機制,它使Intent端的tool在不考慮calling invention等環(huán)境因素的前提下,可以調用宿主端的函數,并正確地傳遞參數。反之亦然。使用這種機制。VP代碼只要像調用普通tool一樣,調用類似以下的tool:
!<platform>/<function name>!<in>!(out)
其中platform可以是任意的名字,不過一般都取為平臺的名字;function name與宿主系統(tǒng)端函數一一對應,對應關系可改動;in、out為函數的輸入、輸出,即可實現Intent與PSOS的接口。不過須重新實現opentool.c,編寫main.c或boot.c以及重新編寫用于系統(tǒng)啟動和關閉、分配和釋放內存、鎖定和解鎖內存、建立異常處理程序以及用于設備驅動程序的一些接口函數;同時,還須實現Java原始接口(JNI)。
Intent提供了通用設備驅動程序(如鍵盤、鼠標、圖形顯示等),用于和硬件接口。因此須為每個設備選擇具體的設備驅動程序,時安裝它。對于特殊的不在Intent所提供的設備驅動程序之列的設備(如OSD),須用VP代碼實現其驅動程序。由于elate操作系統(tǒng)支持基于對象的編程模式,所以設備驅動程序的編寫就顯得相對容易,可以將設備驅動器作為一個對象來進行編程。
2.2.3 生成系統(tǒng)映像
為了生成可引導的系統(tǒng)映像,還需建立平臺系統(tǒng)配置文件。平臺系統(tǒng)配置文件可以分成以下幾個部分:
SETUP——設置指定平臺所需的配置,包括對一些AVE(Audio Video Environment)參數的設置,或者為鍵盤等定義串行口的配置;
DEPENDS——設置依賴于應用程序和其它區(qū)域的平臺配置的可選部分;
MEMORY——定義平臺的內存設置,包括平臺的Boot Tools、內存區(qū)域等。
平臺系統(tǒng)配置文件信息還包含devices.sys。它定義了平臺支持的設備。這個文件的列表由依賴于平臺的設備驅動程序和通用的elate設備驅動程序組成。可以在Intent的Shell命令行中輸入sysbuild,以調用sysbuild程序來生成一個可引導的系統(tǒng)映像。它的命令格式如下:
sysbuild<platform><appsysfile>。
<platform>指定建立映像的運行平臺,這里為PSOS;<appsysfile>指定應用程序的sysbuild文件,也就是所生成映像的.sys文件。所應用程序的sys文件都應為.sys作為擴展名,但是在命令行中,擴展名不必指出。
2.3 Intent系統(tǒng)的運行
Intent系統(tǒng)實際上是宿主系統(tǒng)的一個進程,它不會取代宿主系統(tǒng)的地位。宿主系統(tǒng)會像對待普通進程一樣,為Intent系統(tǒng)分配必要資源,包括進程優(yōu)先級、系統(tǒng)需要的內存空間等等。Intent系統(tǒng)作為宿主系統(tǒng)的進程,將依照自己優(yōu)先,參與宿主系統(tǒng)的進程調度。Intent系統(tǒng)與其它進程一起,共享享處理器資源在內的系統(tǒng)資源。
移植到PSOS上以后,Intent系統(tǒng)通過OSOS環(huán)境中所建立的進程引入系統(tǒng)映像文件。一個映像文件是一個可以被下載到目標硬件上可引導的Intent映像。它描述了應用程序所需的Tool和數據,同時也描述了程序如何運行。當映像文件成功引入后,將切換到iintent系統(tǒng)的運行環(huán)境。
結語
以上介紹了基于虛擬處理器的嵌入式中間件基本概念以及其抽象模型,給出了Intent的移植實現,對基于虛擬處理器的嵌入式中間件作為初步探討。通過虛擬處理器,使不同處理器之間的代碼快速移植成為可能。使用虛擬處理器技術,進行組件化開發(fā),使得嵌入式中間悠揚可以很方便地實現完全移植;谔摂M處理器的嵌入式中間件可以適用于同軟硬件平臺;通過翻譯器、CPU隔離層和平臺隔離層,使其能夠獨立于平臺和處理器能主可移植于不同操作系統(tǒng)與不同微處理器體系結構,從而使中間件環(huán)境的建立變得更加容易,可移植性更強。我們相信,嵌入式中間件的廣泛使用將使嵌入式應用也能像Java語言一樣,可在各式各樣機器、操作平臺的環(huán)境中開發(fā)應用軟件——“一次編譯,到處運行”。
【基于虛擬處理器嵌入式中間件】相關文章:
中間件思想在嵌入式GIS設計中的應用08-06
基于DSP的Bluetooth嵌入式系統(tǒng)應用08-06
基于橢圓曲線的嵌入式文件加密08-06
基于Web的嵌入式設備管理08-06
基于8051嵌入式系統(tǒng)的GPRS終端實現08-06
基于Linux的嵌入式網絡存儲器設計08-06