簡述MiniGUI在HDTV SoC平臺(tái)上的移植
出處::喻世美 龍滬強(qiáng) 胡劍凌 發(fā)布于:2011-09-02 13:49:42
1.引言:
嵌入式系統(tǒng)是“控制、監(jiān)視或者輔助裝置、機(jī)器和設(shè)備運(yùn)行的裝置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。從中可以看出嵌入式系統(tǒng)是軟件和硬件的綜合體,還可以涵蓋機(jī)械等附屬裝置。目前國內(nèi)一個(gè)普遍被認(rèn)同的定義是:以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)功能的日益強(qiáng)大使得在嵌入式產(chǎn)品中包含圖形界面功能成為一種趨勢(shì)。嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適用于應(yīng)用系統(tǒng),對(duì)功能、對(duì)可靠性、成本、體積、功耗有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)是面向用戶、面向產(chǎn)品、面向應(yīng)用的,它必須與具體應(yīng)用相結(jié)合才會(huì)具有生命力、才更具有優(yōu)勢(shì)。因此可以這樣理解上述三個(gè)面向的含義,即嵌入式系統(tǒng)是與應(yīng)用緊密結(jié)合的,它具有很強(qiáng)的專用性,必須結(jié)合實(shí)際系統(tǒng)需求進(jìn)行合理的裁減利用。
高清數(shù)字電視解碼平臺(tái)HDTV SoC是由上海交通大學(xué)自行研究開發(fā)的,以數(shù)字電視機(jī)頂盒為應(yīng)用背景的嵌入式單片系統(tǒng)。在硬件平臺(tái)構(gòu)建和操作系統(tǒng)移植的基礎(chǔ)上,系統(tǒng)對(duì)友好的界面提出了更高的要求。
MiniGUI是由北京飛漫軟件技術(shù)有限公司創(chuàng)辦的開源Linux圖形用戶界面支持系統(tǒng),經(jīng)過近些年的發(fā)展,MiniGUI已經(jīng)發(fā)展成為比較成熟的性能優(yōu)良的、功能豐富的跨操作系統(tǒng)的嵌入式圖形界面支持系統(tǒng)。“小”是MiniGUI的特色,它目前已經(jīng)廣泛應(yīng)用于通訊、醫(yī)療、工控、電子、機(jī)頂盒、多媒體等領(lǐng)域。目前,MiniGUI的版本為MiniGUI 3.0,所以MiniGUI對(duì)中文的支持。MiniGUI 為嵌入式 Linux 系統(tǒng)提供了完整的圖形系統(tǒng)支持,是針對(duì)嵌入式 Linux僅有的兩個(gè)商用嵌入式GUI系統(tǒng)之一。MiniGUI為嵌入式Linux 系統(tǒng)提供了完整的多進(jìn)程支持;可以 MiniGUI-Processes、MiniGUI-Threads或者M(jìn)iniGUI-Standalone 三種運(yùn)行模式運(yùn)行。
2.HDTV SoC平臺(tái)和MiniGUI:

HDTV SoC 是用于高清數(shù)字電視信號(hào)接收端的解碼平臺(tái)。如圖1所示:該平臺(tái)包含以下功能模塊:傳輸流解復(fù)用(TSD),系統(tǒng)控制,音頻解碼、視頻解碼,視頻處理,顯示后處理(OSD),以及串口等外圍設(shè)備。視頻支持MPEG-II高清和標(biāo)清解碼,音頻支持AAC、AC3、MP3、MP2格式。
在HDTV SoC平臺(tái)上建立圖形界面,需要分別利用串口模塊(UART)和顯示后處理模塊(OSD)作為輸入和輸出設(shè)備。充分而高效地將顯示后處理模塊(OSD)的功能與上層軟件有機(jī)結(jié)合是有效建立圖形界面的關(guān)鍵。OSD是on-screen display的簡稱,即屏幕菜單式調(diào)節(jié)方式。一般是按Menu鍵后屏幕彈出的顯示器各項(xiàng)調(diào)節(jié)項(xiàng)目信息的矩形菜單,可通過該菜單對(duì)顯示器各項(xiàng)工作指標(biāo)包括色彩、模式、幾何形狀等進(jìn)行調(diào)整,從而達(dá)到的使用狀態(tài)。它通過顯示在屏幕上的功能菜單達(dá)到調(diào)整各項(xiàng)參數(shù)的目的,不但調(diào)整方便,而且調(diào)整的內(nèi)容也比以上的兩種方式多,增加了失真、會(huì)聚、色溫、消磁等調(diào)整內(nèi)容。像以前顯示器出現(xiàn)的網(wǎng)紋干擾、屏幕視窗不正、磁化等需要送維修廠商維修的故障,現(xiàn)在舉手之間便可解決。
MiniGUI具有良好的軟件架構(gòu),通過可移植層(Portable Layer)將MiniGUI上層和底層操作系統(tǒng)隔離開來;可移植層可將特定操作系統(tǒng)及底層硬件的細(xì)節(jié)隱藏起來,而上層應(yīng)用程序無需關(guān)心底層硬件平臺(tái)的輸入和輸出。作為國內(nèi)廣泛應(yīng)用的嵌入式圖形界面中間件產(chǎn)品,相對(duì)與其它嵌入式GUI系統(tǒng),MiniGUI有以下優(yōu)勢(shì):1.輕型,占用資源少。2.高性能,高可靠性。3.可配置。4.可伸縮性強(qiáng)。5.跨操作系統(tǒng)支持
3.移植MiniGUI:
MiniGUI的體系結(jié)構(gòu)可表示如下圖:

圖2 MiniGUI的體系結(jié)構(gòu)
如圖3所示,MiniGUI從上到下包括應(yīng)用程序,層,可移植層(圖形與輸入設(shè)備抽象層)以及輸入輸出設(shè)備層。其中,圖形引擎(GAL)和輸入引擎(IAL)一起構(gòu)成可移植層。可移植層為上層提供了統(tǒng)一的輸入輸出的抽象接口,從而增強(qiáng)了MiniGUI的可移植性。
首先,定制圖形引擎。MiniGUI可以支持包括SVGALib 和 LibGGI在內(nèi)的多種圖形引擎,另外還自帶了基于framebuffer設(shè)備的私有圖形引擎。相對(duì)于其他圖形引擎,私有引擎專為Linux平臺(tái)上的MiniGUI而設(shè)計(jì),有更好的性能和顯示效果,因此在Linux平臺(tái)上被廣泛采用。但是該引擎需要Linux內(nèi)核中包含對(duì)顯示設(shè)備的framebuffer驅(qū)動(dòng)的支持。
其次,定制輸入引擎。不同的平臺(tái)在輸入引擎上差別較大。HDTV SoC平臺(tái)采用UART作為輸入設(shè)備,所以輸入引擎要基于UART,將UART得到的外部信息轉(zhuǎn)換為上層應(yīng)用程序能夠理解和識(shí)別的信息格式。
,需要根據(jù)平臺(tái)特性和應(yīng)用需求對(duì)MiniGUI進(jìn)行功能配置。
我們將圖3中的圖形設(shè)備(Graphic Device)和輸入設(shè)備(Input Device)替換為具體的驅(qū)動(dòng)程序及相應(yīng)的硬件設(shè)備可得出MiniGUI在HDTV SoC平臺(tái)上實(shí)現(xiàn)的具體框圖如圖4所示:

經(jīng)過以上分析之后,我們更加明確了移植所要做的工作,并且可進(jìn)一步將整個(gè)移植過程分為三階段:,開發(fā)和調(diào)試基于OSD硬件的framebuffer驅(qū)動(dòng)程序,并且調(diào)試圖形引擎,這是整個(gè)移植過程中為關(guān)鍵的一步;第二,定制和調(diào)試基于UART設(shè)備的輸入引擎;第三,開發(fā)自己的應(yīng)用程序,并且交叉編譯和配置整個(gè)MiniGUI。
首先,我們需要開發(fā)針對(duì)HDTV SoC 平臺(tái)上OSD硬件設(shè)備的framebuffer驅(qū)動(dòng)程序。framebuffer機(jī)制定義了一組與顯示設(shè)備相關(guān)的數(shù)據(jù)結(jié)構(gòu)和操作,對(duì)顯示設(shè)備的幀緩存進(jìn)行了軟件抽象,為上層提供了統(tǒng)一的訪問接口,屏蔽了底層硬件的細(xì)節(jié)。應(yīng)用程序?qū)υ摻M數(shù)據(jù)結(jié)構(gòu)和操作進(jìn)行訪問,就可以實(shí)現(xiàn)對(duì)不同顯卡硬件的訪問操作。減少依賴于顯卡的代碼量,同時(shí)增加了這部分代碼的可移植性。
如果MiniGUI采用基于framebuffer設(shè)備的私有圖形引擎,首先需要在內(nèi)核中添加framebuffer設(shè)備驅(qū)動(dòng)。framebuffer設(shè)備的實(shí)現(xiàn)主要依賴于四個(gè)數(shù)據(jù)結(jié)構(gòu):
fb_fix_screeninfo用來表示與顯示設(shè)備無關(guān)的常值信息,這些信息在設(shè)備初始化時(shí)指定,應(yīng)用程序可以通過借口函數(shù)來訪問這些信息,但是不允許改變它們。
fb_var_screeninfo用來表示與顯示設(shè)備無關(guān)的變量信息與特定顯示模式。應(yīng)用程序可以調(diào)用相應(yīng)的借口來訪問和修改這些信息。
fb_ops是供上層調(diào)用的一組函數(shù)接口。全部的framebuffer操作都要通過該接口來完成。
fb_info 是常規(guī)信息,API以及幀緩沖設(shè)備的底層信息。該結(jié)構(gòu)只能被用于內(nèi)核中,前面三個(gè)結(jié)構(gòu)均可通過外部接口查看。
在驅(qū)動(dòng)程序中實(shí)現(xiàn)了上述四個(gè)結(jié)構(gòu)之后,一個(gè)簡單得framebuffer驅(qū)動(dòng)程序即宣告完成。將該驅(qū)動(dòng)程序作為模塊加載之后,就可以進(jìn)行調(diào)試,直到輸出正常。
在framebuffer驅(qū)動(dòng)程序完成之后,接下來需要定制輸入引擎。MiniGUI通過INPUT數(shù)據(jù)結(jié)構(gòu)來表示輸入引擎。MiniGUI維護(hù)著一個(gè)由所有輸入引擎組成的輸入引擎數(shù)組,每個(gè)數(shù)組項(xiàng)對(duì)應(yīng)著一個(gè)輸入引擎。如果該數(shù)組中沒有與該平臺(tái)對(duì)應(yīng)的項(xiàng),就需要在其中添加對(duì)應(yīng)的輸入引擎。由于SoC平臺(tái)只能通過UART和用戶進(jìn)行交互,所以輸入引擎以UART為基礎(chǔ)。
在圖形引擎和輸入引擎的定制完成之后,需要對(duì)MiniGUI的源代碼進(jìn)行交叉編譯和安裝。到這里,整個(gè)移植工作基本結(jié)束。在此基礎(chǔ)上,我們還可以在MiniGUI平臺(tái)上開發(fā)自己的應(yīng)用程序。
4.總結(jié):
本文作者創(chuàng)新觀點(diǎn):在SoC平臺(tái)上建立GUI界面需要充分考慮系統(tǒng)性能,資源以及GUI系統(tǒng)本身的資源消耗,移植開源軟件通常是經(jīng)濟(jì),簡便的辦法。移植工作主要是建立GUI系統(tǒng)與輸入輸出硬件的映射,在必要的時(shí)候需要根據(jù)GUI系統(tǒng)要求為底層硬件開發(fā)專用的驅(qū)動(dòng)程序。由于MiniGUI在SoC芯片上的應(yīng)用還比較少,所以本次移植工作不僅驗(yàn)證了移植方法的可行性,對(duì)于如何為MiniGUI在機(jī)頂盒中的應(yīng)用,以及對(duì)于如何在受到資源和性能約束的嵌入式系統(tǒng)中建立圖形界面,均具有一定的借鑒意義
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫電子市場(chǎng)網(wǎng),http://hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- ARM技術(shù)架構(gòu)與應(yīng)用開發(fā)實(shí)踐指南2026/1/6 10:40:19
- 嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS)選型與移植技術(shù)指南2025/12/31 10:42:31
- 工業(yè)嵌入式系統(tǒng):通信接口技術(shù)選型與抗干擾設(shè)計(jì)實(shí)踐2025/12/15 14:36:53
- 深入解析嵌入式 OPENAMP 框架:開啟異核通信新時(shí)代2025/7/22 16:27:29
- 一文快速了解OPENWRT基礎(chǔ)知識(shí)2025/7/14 16:59:04
- 高速PCB阻抗控制核心實(shí)操規(guī)范
- 高速數(shù)字系統(tǒng)(如DDR、SerDes)中的信號(hào)完整性濾波
- MOSFET在UPS電源中的應(yīng)用解析
- 電源管理IC在物聯(lián)網(wǎng)設(shè)備中的應(yīng)用
- SMT連接器焊接缺陷分析
- MOSFET在汽車電子中的應(yīng)用要求
- 通信設(shè)備電源管理IC應(yīng)用解析
- 通信設(shè)備連接器選型與設(shè)計(jì)
- PCB電磁兼容性(EMC)設(shè)計(jì)核心實(shí)操規(guī)范
- 物聯(lián)網(wǎng)節(jié)點(diǎn)低功耗設(shè)計(jì):信號(hào)鏈中的濾波與功耗管理









