<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 主流嵌入式Linux系統(tǒng)下GUI解決方案

          主流嵌入式Linux系統(tǒng)下GUI解決方案

          ——
          作者: 時(shí)間:2007-02-28 來(lái)源:人民網(wǎng) 收藏
          在嵌入式系統(tǒng)領(lǐng)域,有不少GUI系統(tǒng),如QNX Photon MicroGUI等,可是具體到嵌入式Linux領(lǐng)域又有哪些可供選擇的GUI系統(tǒng)呢?

            在嵌入式環(huán)境底下,GUI系統(tǒng)的整體構(gòu)架跟PC Desktop相去不遠(yuǎn),例如繪圖函數(shù)庫(kù)、字型、事件處理等也都是嵌入式GUI系統(tǒng)所要面臨的。但是嵌入式系統(tǒng)本身由于體積小、資源少的特點(diǎn),所以在整體設(shè)計(jì)上必須較為嚴(yán)謹(jǐn),必須考慮的條件更多,有時(shí)很像又回到了Dos下編制程序的年代,對(duì)于軟件所占的存儲(chǔ)量有時(shí)可以說(shuō)是錙銖必較。

            Unix環(huán)境下的圖形視窗標(biāo)準(zhǔn)為X Window System(以下簡(jiǎn)稱X標(biāo)準(zhǔn)),Linux是類Unix系統(tǒng),所以頂層運(yùn)行的GUI系統(tǒng)是兼容X標(biāo)準(zhǔn)的XFree86系統(tǒng)。X標(biāo)準(zhǔn)大致可以劃分X Server、Graphic Library(底層繪圖函數(shù)庫(kù))、Toolkits、Window Manager、Internationalization(I18N)等幾大部分(詳細(xì)內(nèi)容見鏈接)。

            筆者認(rèn)為,雖然X架構(gòu)不錯(cuò),但卻不怎么適用于嵌入式環(huán)境,因?yàn)閷?shí)際工作起來(lái)實(shí)在太過(guò)于龐大,因此許多嵌入式Linux GUI系統(tǒng)會(huì)把上述幾點(diǎn)合并,甚至全部綁到一起,當(dāng)然這樣同時(shí)也會(huì)失去很多彈性與擴(kuò)展功能,但為了適應(yīng)于嵌入式系統(tǒng),這也是一個(gè)解決問(wèn)題的方法。本文下面就介紹一下現(xiàn)存的主流嵌入式Linux下GUI解決方案。

            主流解決方案介紹

            Qt/Embedded

            Qt是Trolltech這家商業(yè)公司所開發(fā)的一個(gè)跨平臺(tái)FrameWork環(huán)境,在X環(huán)境下可以看作是一套功能完整的用戶界面工具包,它采用類似C++的語(yǔ)法,并且具備物件導(dǎo)向功能。跨平臺(tái)的特性可以讓使用Qt編寫的軟件,在Microsoft Windows 95/98/2000、 Microsoft Windows NT、MacOS X、Linux、Solaris、HP-UX、Tru64 (Digital UNIX)、Irix、FreeBSD、BSD/OS、SCO、AIX等許多平臺(tái)上執(zhí)行。雖然是商業(yè)公司的產(chǎn)品,但是Qt走的卻是開源路線,并遵循同樣的游戲規(guī)則,提供免費(fèi)下載,全部都是開放源代碼,非商業(yè)用途亦采用GPL的版權(quán)宣告,著名的Open Source “KDE” 項(xiàng)目便是采用Qt所開發(fā)的。

            Trolltech也針對(duì)嵌入式環(huán)境推出了“Qt/Embedded”產(chǎn)品。與桌面版本不同,Qt/Embedded已經(jīng)直接取代掉X Server及X Library等角色,所有的功能全部整合在一起。

            Qt/Embedded 同樣具有跨平臺(tái)的特點(diǎn),省掉了不少移植軟件的功夫,這樣的概念和Java十分接近。同時(shí)它還采用模塊化設(shè)計(jì),其最大的好處是有彈性, Qt/Embedded號(hào)稱最小可以縮到800Kb左右,最多可以長(zhǎng)到3Mb(for Intel x86),這樣的彈性也讓Qt/Embedded更適合在嵌入式環(huán)境下生存。

            另外,Trolltech公司還推出了針對(duì)PDA軟件的整體解決方案QPE(Qt Plamtop Environment)。它從底層的GUI系統(tǒng)、Window Manger、Soft Keyboard到上層的PIM、瀏覽器、多媒體等,全部都考慮進(jìn)去了。其主界面如圖1所示 ,內(nèi)部包括地址簿、計(jì)算器、世界時(shí)間、時(shí)間設(shè)置、記事本、終端、文件瀏覽器、幫助、媒體播放器、圖像瀏覽器、文本編輯器等。

            相對(duì)其他GUI來(lái)說(shuō), Qt/Embedded 應(yīng)該說(shuō)是肥美型的產(chǎn)品,功能豐富,但能消化它的東西只能是高端產(chǎn)品,32MB內(nèi)存是運(yùn)行它的最小要求。因此,如果開發(fā)的產(chǎn)品不是高端的信息終端類產(chǎn)品,不應(yīng)優(yōu)先考慮 Qt/Embedded。

            GtkFB自從Qt推出了嵌入式版本之后,雖然GTK+并非商業(yè)公司所發(fā)展,但也加緊腳步推出了GtkFB方案,其宗旨就是要為嵌入式系統(tǒng)推出一套基于GTK+的GUI解決方案。與Qt/Embedded類似,GtkFB也跳過(guò)X層直接與FrameBuffer溝通,因此也具有Qt/Embedded的幾項(xiàng)優(yōu)點(diǎn),不過(guò)由于不是商業(yè)軟件,在發(fā)展的速度上較為緩慢。

            Microwindows

            Microwindows Open Source Project成立的宗旨在于針對(duì)體積小的裝置,建立一套先進(jìn)的視窗環(huán)境,在Linux桌面上通過(guò)交叉編譯可以很容易地制作出micro-windows的程序。MicroWindows能夠在沒有任何操作系統(tǒng)或其他圖形系統(tǒng)的支持下運(yùn)行,它能對(duì)裸顯示設(shè)備進(jìn)行直接操作。這樣,MicroWindows就顯得十分小巧,便于移植到各種硬件和軟件系統(tǒng)上。

            然而MicroWindows 的免費(fèi)版本進(jìn)展一直很慢,幾乎處于停頓狀態(tài),而且至今為止,國(guó)內(nèi)沒有任何一家專業(yè)對(duì) MicroWindows 提供全面技術(shù)支持、服務(wù)和擔(dān)保的公司。

            MiniGUI是中國(guó)人做得比較好的自由軟件之一,它是在Linux控制臺(tái)上運(yùn)行的多窗口圖形操作系統(tǒng),可以在以Linux為基礎(chǔ)的應(yīng)用平臺(tái)上提供一個(gè)簡(jiǎn)單可行的MiniGUI支持系統(tǒng)?!靶 笔荕iniGUI的特色,MiniGUI可以應(yīng)用在電視機(jī)頂盒、實(shí)時(shí)控制系統(tǒng)、掌上電腦等諸多場(chǎng)合。由于這是由中國(guó)人自己開發(fā)的GUI系統(tǒng),所以MiniGUI對(duì)于中文的支持最好。它支持GB2312與BIG5字元集,其他字元集也可以輕松加入。

            Pure X架構(gòu)

            Tiny X Server是XFree86 Project的一部分,由Keith Pachard先生所發(fā)展,而他本身就是XFree86專案的核心成員之一。一般的X Server都太過(guò)于龐大,因此Keith Packard就以XFree86為基礎(chǔ),精簡(jiǎn)了不少東西而成Tiny X Server,它的體積可以小到幾百Kb而已,非常適合應(yīng)用于嵌入式環(huán)境。

            以純X Window System搭配Tiny X Server架構(gòu)來(lái)說(shuō),最大的優(yōu)點(diǎn)就是彈性與開發(fā)速度,因?yàn)榕c桌面的X架構(gòu)相同,因此相對(duì)于很多以Qt、GTK+、FLTK等開發(fā)的軟件可以很容易地移植上來(lái)。

            雖然移植方便,但是卻有體積大的缺點(diǎn),由于很多軟件本來(lái)是針對(duì)桌面環(huán)境開發(fā)的,因此無(wú)形之中具備了桌面環(huán)境中很多復(fù)雜的功能。因此“調(diào)?!弊兂刹捎么思軜?gòu)最大的課題,有時(shí)候重新改寫都可能比調(diào)校所需的時(shí)間還短。
              OpenGUI

            OpenGUI在Linux系統(tǒng)上已經(jīng)存在很長(zhǎng)時(shí)間了。最初的名字叫FastGL,只支持256色的線性顯存模式,但目前也支持其他顯示模式,并且支持多種操作系統(tǒng)平臺(tái),比如MS-DOS、QNX和Linux等,不過(guò)目前只支持x86硬件平臺(tái)。OpenGUI分為三層: 最低層是由匯編語(yǔ)言編寫的快速圖形引擎;中間層提供了圖形繪制API,包括線條、矩形、圓弧等,并且兼容Borland的BGIAPI;第三層用C++編寫,提供了完整的GUI對(duì)象庫(kù)。 OpenGUI采用LGPL條款發(fā)布。OpenGUI比較適合于基于x86平臺(tái)的實(shí)時(shí)系統(tǒng),跨平臺(tái)的可移植性較差,目前發(fā)展較慢。

            一點(diǎn)建議

            綜合上述GUI解決方案各方面的性能,歸結(jié)起來(lái)有在國(guó)內(nèi)有四種GUI較為適用,筆者對(duì)其做出推薦。

            1.OpenGUI

            由于基于匯編實(shí)現(xiàn)內(nèi)核,并利用MMX指令進(jìn)行了優(yōu)化,OpenGUI運(yùn)行速度非???。它支持32位的機(jī)器,能夠在多種操作系統(tǒng)下運(yùn)行,主要用來(lái)在這些系統(tǒng)中開發(fā)圖形應(yīng)用程序和游戲。由于歷史悠久,OpenGUI非常穩(wěn)定,但是由于其內(nèi)核用匯編語(yǔ)言實(shí)現(xiàn),其內(nèi)部使用的是私有的API,所以其可移植性較差,可配置性也較差。

            2.Qt/Embedded

            這個(gè)版本的主要特點(diǎn)是可移植性較好。因?yàn)镼t是KDE等項(xiàng)目使用的GUI支持庫(kù),所以許多基于Qt的X Window程序可以非常方便地移植到Qt/Embedded版本上。因此,自從Qt/Embedded以GPL條款發(fā)布以來(lái),就有大量的嵌入式Linux開發(fā)商轉(zhuǎn)到了Qt/Embedded系統(tǒng)上,如韓國(guó)的Mizi公司。但是,由于它是基于C++類庫(kù)的,所以和其他GUI相比系統(tǒng)消耗資源較大。因此說(shuō)Qt/Embedded是肥美型的產(chǎn)品,功能豐富,一般用于手持式高端信息產(chǎn)品。

            3.MiniGUI和Micro-Windows的比較

            MiniGUI和MicroWindows均為自由軟件,但這兩個(gè)系統(tǒng)的技術(shù)路線卻有所不同。MiniGUI的策略是建立在比較成熟的圖形引擎之上,比如Svgalib和LibGGI,開發(fā)的重點(diǎn)在于窗口系統(tǒng)、圖形接口之上。而MicroWindows的開發(fā)重點(diǎn)則在底層的圖形引擎之上,所以可以對(duì)裸顯示器直接操作,而窗口系統(tǒng)和圖形接口方面的功能還稍有欠缺。比如說(shuō),MiniGUI有一套用來(lái)支持多字符集和多編碼的函數(shù)接口,可以支持各種的字符集,包括GB、BIG5、UNI-CODE等,而MicroWindows在多字符支持上尚沒有統(tǒng)一接口。

            X Window System的分層架構(gòu)

            ● X ServerX Window System架構(gòu)上有一項(xiàng)特點(diǎn)是別的GUI系統(tǒng)所沒有的,這個(gè)特點(diǎn)就是Client/Server架構(gòu),注意這里和一般我們所熟知的某某服務(wù)器(Server端)跟PC端(Client端)相連接的情形是不同的。惟一類似的是X Window System本身也是采用網(wǎng)路架構(gòu)設(shè)計(jì)。具體而簡(jiǎn)單一點(diǎn)的說(shuō)明就是,X Client可以看作我們?cè)赬上執(zhí)行的軟件,X Server則是負(fù)責(zé)顯示及傳遞使用者輸入事件(包括鍵盤、鼠標(biāo)等硬件裝置的輸入)。

            ● Graphic Library

            我們可以把一幅圖案想象成有成千上萬(wàn)個(gè)細(xì)微小點(diǎn)所組成,這種小點(diǎn)的單位通常為pixel,在同一平方單位里這些小點(diǎn)數(shù)越高圖案就越清晰、畫質(zhì)就越好,也就是說(shuō)分辨率或解析率高。事實(shí)上我們要設(shè)計(jì)的視窗當(dāng)然不可能是這樣一點(diǎn)一點(diǎn)地畫上去的,這樣太過(guò)浪費(fèi)時(shí)間,基于這種觀念我們就設(shè)計(jì)出高階一點(diǎn)的函數(shù)來(lái)幫助我們解決這個(gè)繁瑣的步驟,例如各類視窗編程里用到的畫點(diǎn)、畫線、畫矩形、畫圓形、畫不規(guī)則形、上色等函數(shù)。透過(guò)這些函數(shù)是的程序設(shè)計(jì)者不用去管畫一條線要幾個(gè)點(diǎn)以及如何讓顯示器顯示等林林總總低階的工作,我們稱繪圖相關(guān)的一組函數(shù)庫(kù)為GUI的基本Graphic Library。

            ● Toolkits

            有了點(diǎn)、線、面的函數(shù)之后,雖然已經(jīng)去除了大半的重復(fù)無(wú)聊工作,但是就開發(fā)視窗程序來(lái)說(shuō),還是顯得非常沒有效率,怎么辦呢?只有繼續(xù)將構(gòu)成視窗的抽象元件,如按鈕、卷軸、組合框等各類控件抽離出來(lái),重新定義一組更高階的函數(shù)庫(kù),在配合上聯(lián)系的語(yǔ)法函數(shù)就成立Toolkits這類的東西,目前流行的有QT、GTK+等。

            ● Window Manager

            有了Toolkits,我們可以很輕松地建立視窗模塊(X Client),但是每個(gè)視窗模塊只負(fù)責(zé)自己模塊內(nèi)的事務(wù),那么不同視窗間的溝通、協(xié)調(diào),例如視窗的切換、放大、縮小等,就沒有模塊管理了,于是視窗管理員(Window Manager)就應(yīng)運(yùn)而生了。

            ● Internationalization

            國(guó)際化通常是我們東方語(yǔ)系國(guó)家的人比較關(guān)心的議題,但是很多軟件一開始都由西方國(guó)家所主導(dǎo)開發(fā),因此這點(diǎn)常常受到忽略,這個(gè)問(wèn)題牽扯的層面很多,上從語(yǔ)言的顯示、輸入、中止語(yǔ)言習(xí)慣,下到文字位元的處理,完整的解決是必須從頭到腳徹底配合才能達(dá)成,只處理一半都只能說(shuō)是一個(gè)蹩腳的系統(tǒng)。

            隨著東方國(guó)家使用GUN/Linux的人口越來(lái)越多,I18N(i-eighteen-letters-n的縮寫)也日益受到重視,目前底層libc部分已經(jīng)有完整的支持,剩下來(lái)便是GUI系統(tǒng)的問(wèn)題,由于處理雙位元所耗的資源較大,西方國(guó)家主導(dǎo)的系統(tǒng)很多情況下,經(jīng)過(guò)一些取舍,I18N就被犧牲掉了,整體而言Embedded Linux GUI系統(tǒng)在I18N的程度通常都沒有PC端的好,只有在需求時(shí)才會(huì)使用。

          linux相關(guān)文章:linux教程


          c++相關(guān)文章:c++教程




          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();