摘要:討論了和欣嵌入式操作系統(tǒng)上數(shù)字電視0sD工具的開發(fā),采用EZCOM技術(shù)構(gòu)建0SD中間件,設計實現(xiàn)了基于SDA55XX芯片的OSD開發(fā)工具,并以此芯片為例,重點介紹了數(shù)字電視OSD開發(fā)工具的設計思想、體系結(jié)構(gòu)以及基于此工具的OSD開發(fā)方法。
關(guān)鍵詞:嵌入式操作系統(tǒng) 數(shù)字電視0SD工具
數(shù)字電視服務的最大特點是除了支持傳統(tǒng)的音頻、視頻業(yè)務外,還提供了電視增值業(yè)務,如視頻點播、數(shù)據(jù)廣播、個性化交互電視、遠程教育、Internet、三網(wǎng)合一、電視電子商務和日常信息綜合服務等。而所有電視增值業(yè)務,都是建立在強大的軟件開發(fā)能力上的。在諸多數(shù)字電視要素中,在屏顯示系統(tǒng)0SD(0n Screen Display)是貫穿整個數(shù)字電視應用和增值業(yè)務的主線,所有的增值業(yè)務及數(shù)字電視控制都是通過0SD展現(xiàn)在用戶面前。因此,0SD開發(fā)是數(shù)字電視軟件開發(fā)中最關(guān)鍵的要素。
目前國內(nèi)普遍采用外國廠商提供的與芯片捆綁銷售的操作系統(tǒng)及在此系統(tǒng)上的OSD開發(fā)工具。受國外操作系統(tǒng)技術(shù)封閉的影響,國內(nèi)廠商將很難做剄自主開發(fā),必須高度依賴國外廠商的技術(shù)支持。為了更好地發(fā)展我國的數(shù)字電視產(chǎn)業(yè),一方面要采用具有自主知識產(chǎn)權(quán)的操作系統(tǒng),另一方面還必須加快對數(shù)字電視軟件平臺相關(guān)技術(shù)的研究和開發(fā)。和欣嵌入式操作系統(tǒng)是863課題“網(wǎng)絡化嵌入式支撐技術(shù)”的研究成果.是具有自主知識產(chǎn)權(quán)的操作系統(tǒng)。本課題是863課題“基于構(gòu)件、中間件技術(shù)的因特網(wǎng)操作系統(tǒng)及跨操作系統(tǒng)的構(gòu)件、中間件運行平臺”的一部分。因此,本文對基于和欣數(shù)字電視OSD軟件開發(fā)的研究,不僅具有重要的理論意義.還具有廣闊的應用前景。
1 和欣嵌入式操作系統(tǒng)及其構(gòu)件技術(shù)
和欣嵌入式操作系統(tǒng)技術(shù)體系所包括的ezCOM構(gòu)件技術(shù)、構(gòu)件運行平臺技術(shù)以及開發(fā)應用軟件所需的集成開發(fā)環(huán)境,是一個完整的面向構(gòu)件的應用軟件開發(fā)平臺。
和欣是32位嵌入式操作系統(tǒng)。操作系統(tǒng)基于微內(nèi)核,具有多進程、多線程、搶占式、基于線程的多優(yōu)先級任務調(diào)度等特性。它提供FAT兼容的文件系統(tǒng),可以從軟盤、硬盤、Flash ROM啟動,也可以通過網(wǎng)絡啟動。系統(tǒng)體積小,速度快,適合網(wǎng)絡時代的絕大部分嵌入式信息設備。
和欣操作系統(tǒng)完全面向構(gòu)件技術(shù),提供的功能模塊全部基于ezCOM構(gòu)件技術(shù),因此是可拆卸的構(gòu)件。應用系統(tǒng)可以按照需要剪裁組裝,或在運行時動態(tài)加載必要的構(gòu)件。
從傳統(tǒng)的操作系統(tǒng)體系結(jié)構(gòu)的角度看,和欣操作系統(tǒng)可以看成是由微內(nèi)核、構(gòu)件支持模塊、系統(tǒng)服務器組成的。
2 SDA55xx芯片簡介
SDA55xx微控制器是Micronas公司出品的一款主要用于電視機控制以及提供圖形圖像顯示的電視芯片。SDA55xx不僅能夠提供解碼全球圖文電視系統(tǒng)WSrl’(World System Teletext)功能,同時支持解碼其他諸如視頻演放系統(tǒng)VPS(Video Programming System)、節(jié)目傳送控制PDC(Program Delivery Contro1)以及用于PAL-plus(歐洲新電視播出制式)播放的寬屏幕信令WSS(WideScteen Signalling)。SDA55xx的數(shù)據(jù)分割器以及顯示部分支持非常廣泛的電視制式,包括PAL、NTSC以及上面提到的VPS、WSS、PDC、TTX和隱蔽字幕數(shù)據(jù)(Closed Caption Data)。
3 DTV OSD工具的設計
3.1 設計思想
DTV OSD Developer是建立在DIV中間件平臺上的可視化開發(fā)工具,它根據(jù)數(shù)字電視軟件開發(fā)的特點,把界面設計中使用頻繁的對象封裝為控件,以方便用戶調(diào)用。在開發(fā)過程中所看到的用戶界面框架與程序運行時的界面基本相同,這就使軟件設計可以在脫離真機的情況下完成,而不必把大量的時問用于重復下載程序到芯片以及頻繁開機調(diào)試,從而提高軟件開發(fā)效率。
3.2 體系結(jié)構(gòu)
嵌入式操作系統(tǒng)和DTV軟件開發(fā)平臺中間件構(gòu)成了基于嵌入式操作系統(tǒng)的數(shù)字電視系統(tǒng)的開發(fā)運行環(huán)境。嵌入式實時操作系統(tǒng)及設備的上層應用接口通過驅(qū)動程序控制相應設備,并對中間件提供系統(tǒng)服務。在數(shù)字電視軟件系統(tǒng)中,DTV軟件平臺中間件基于操作系統(tǒng)為應用軟件提供運行支持,同時對操作系統(tǒng)提供的設備控制接口進行適當封裝,由此形成的新接口解除了不同應用提供商與不同的數(shù)字電視中特定的硬件和軟件細節(jié)問的高度藕合關(guān)系,從而實現(xiàn)了內(nèi)容只需創(chuàng)作一次即可在“任何”地方運行。
DTV軟件開發(fā)平臺采用立體層次結(jié)構(gòu),作為系統(tǒng)構(gòu)件運行在操作系統(tǒng)中間件運行平臺上,由于構(gòu)件與外部應用程序及操作系統(tǒng)的交互完全通過接口進行,保證了構(gòu)件的實現(xiàn)細節(jié)不會影響到使用構(gòu)件的程序,使得它可以不斷根據(jù)功能需求和所支持應用類型增加新的功能和要求。其層次結(jié)構(gòu)如圖1所示。
3.3 基于SDA55xx的0SD開發(fā)
在基于SDA55xx的OSD開發(fā)中,由于開發(fā)資料只有Miemnas公司提供的關(guān)于SDA55xx的詳細DATASHEET及開發(fā)環(huán)境,包括一套Windows下的集成開發(fā)環(huán)境(WINIDEA)軟件和一套模擬器設備,所以所有的開發(fā)都從零開始。要開發(fā)基于SDA55xx的OSD系統(tǒng),就必須熟悉DATASHEET,掌握其內(nèi)部特殊寄存器的功能、內(nèi)部XRAM的分配、DRCS的結(jié)構(gòu)以及構(gòu)造方法。根據(jù)這些情況,筆者將基于SDA55xx的OSD開發(fā)設計為以下流程:
(1)OSD設計階段。主要進行OSD界面設計,此時設計的OSD界面就是最終呈現(xiàn)給用戶的界面,所以對于美觀及實用要求很高;(2)模塊設計階段。根據(jù)OSD設計階段設計的OSD界面,分析其中包括的主要元素,然后將每個元素的繪制封裝成一個個模塊。此階段的主要任務是:明確風格OSD界面中的元素,定義每個模塊的結(jié)構(gòu)等;(3)具體實現(xiàn)階段。這一階段主要實現(xiàn)每個模塊的繪制功能,其工作是分配XRAM、構(gòu)造DRCS及配置特殊寄存器。模塊繪制功能實現(xiàn)后,由主程序調(diào)用繪制模塊完成OSD菜單系統(tǒng)。圖2是基本系統(tǒng)結(jié)構(gòu)。此結(jié)構(gòu)中OSD界面及模塊設計都很重要,但主要工作是最后的DRCS的構(gòu)造、XRAM的分配及特殊寄存器的賦值。
3.4 系統(tǒng)構(gòu)成
DTV Visual Developer主要由四個工作區(qū)組成:
(1)OSD TreeView:是編輯菜單狀態(tài)的主要場所,菜單狀態(tài)采用樹狀結(jié)構(gòu)表示,父菜單與子菜單的關(guān)系通過父節(jié)點與子節(jié)點的關(guān)系模擬。
(2)Menu Designer:是用戶界面設計的工作區(qū),在這里設計的用戶界面框架與程序運行時的圖形界面基本相同,它提供了添加、刪除以及調(diào)整控件形狀和位置的功能。
(3)nems Window:其中每一項都對應于一個菜單的狀態(tài),它包含了這個菜單狀態(tài)下的所有控件,無論該控件是可見或不可見的。
(4)Properties Window:可以編輯選中控件的各種屬性和行為。
此外,DTV Visual Developer還提供了諸如變量表、字符串表和顏色表等方便用戶使用的功能。同時,這個集成開發(fā)環(huán)境也是可配置的,例如控件的種類、每種控件的屬性以及程序中使用的字庫等都可以根據(jù)用戶的需要定制。這就保證了對開發(fā)工具的靈活性和適應性的要求。
3.5 DTV OSD Developer的設計要點
在DTV OSD Developer中,所有菜單狀態(tài)均被抽象為OSD TreeView中的一個樹節(jié)點,每個狀態(tài)都對應一個惟一編號。編號中除最后兩位外,其余每兩位代表一個菜單層次,如“01FFFFFF0l”表示這個程序中的菜單深度最大為四層,而最后兩位則表示此菜單狀態(tài)所對應的通道,如01代表TV,02代表AV等。子菜單狀態(tài)標號的前幾位應與父菜單狀態(tài)標號的相應位一致,如菜單狀態(tài)“01FFFFFF01”的第一個子菜單編號應該是“0100FFFF01”,這樣,當程序在各菜單狀態(tài)中跳轉(zhuǎn)時可以方便地通過它們的狀態(tài)編號進行調(diào)度。
每個菜單狀態(tài)都被封裝成為一個枚舉結(jié)構(gòu),如TV通道下的主菜單狀態(tài)可由以下結(jié)構(gòu)表示:
主程序在查找一個菜單狀態(tài)時,可以通過狀態(tài)編號定位到一個數(shù)組結(jié)構(gòu),根據(jù)此結(jié)構(gòu)找到對應子狀態(tài)的內(nèi)存地址和子狀態(tài)數(shù)目。如TV通道下的主菜單數(shù)組結(jié)構(gòu)為:
4 基于DTV OSD Developer的數(shù)宇電視軟件開發(fā)方法
在使用可視化開發(fā)工具DTV OSD Developer的數(shù)字電視軟件開發(fā)過程中,所有的DTV應用程序都將抽象成為控件集合+資源集合的模式,如圖3所示。
這種開發(fā)模式的應用使得軟件功能的實現(xiàn)不再以各個功能模塊的實現(xiàn)為標志,而是按照“創(chuàng)建用戶界面一設置控件對象的屬性一編寫事件響應代碼”的流程進行。這不僅極大地提高了軟件開發(fā)的效率,同時也使所開發(fā)的應用程序邏輯性更強也更易于維護。
本文結(jié)合863課題“基于構(gòu)件、中間件技術(shù)的因特網(wǎng)操作系統(tǒng)及跨操作系統(tǒng)的構(gòu)件、中間件運行平臺”,在和欣嵌入式操作系統(tǒng)上,通過開發(fā)基于ezCOM的OSD中間件,最終形成OSD應用程序、OSD中間件、和欣構(gòu)件運行平臺、和欣操作系統(tǒng)、硬件平臺這一五層系統(tǒng)架構(gòu)下的OSD開發(fā)方式,并且實現(xiàn)了一個完全構(gòu)件化的系統(tǒng)架構(gòu)。
采用OSD中問件系統(tǒng)進行開發(fā),隔離了很多具體細節(jié)的實現(xiàn),用簡單的方法定制具有特色的OSD軟件,從而在提高開發(fā)效率,減少開發(fā)成本的同時能夠跟上技術(shù)的發(fā)展,將應用的開發(fā)變得更加便捷,使產(chǎn)品的開放性和可移植性更強。