国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

恰當選擇嵌入式Linux環境下的GUI系統(圖)

2024-07-21 02:33:46
字體:
來源:轉載
供稿:網友

  在嵌入式系統領域,有不少GUI系統,如QNX Photon MicroGUI等,可是具體到嵌入式linux領域又有哪些可供選擇的GUI系統呢?
  
  在嵌入式環境底下,GUI系統的整體構架跟PC Desktop相去不遠,例如繪圖函數庫、字型、事件處理等也都是嵌入式GUI系統所要面臨的。但是嵌入式系統本身由于體積小、資源少的特點,所以在整體設計上必須較為嚴謹,必須考慮的條件更多,有時很像又回到了Dos下編制程序的年代,對于軟件所占的存儲量有時可以說是錙銖必較。
  
  Unix環境下的圖形視窗標準為X Window System(以下簡稱X標準),Linux是類Unix系統,所以頂層運行的GUI系統是兼容X標準的XFree86系統。X標準大致可以劃分X Server、Graphic Library(底層繪圖函數庫)、Toolkits、Window Manager、Internationalization(I18N)等幾大部分(具體內容見鏈接)。
  
  筆者認為,雖然X架構不錯,但卻不怎么適用于嵌入式環境,因為實際工作起來實在太過于龐大,因此許多嵌入式Linux GUI系統會把上述幾點合并,甚至全部綁到一起,當然這樣同時也會失去很多彈性與擴展功能,但為了適應于嵌入式系統,這也是一個解決問題的方法。本文下面就介紹一下現存的主流嵌入式Linux下GUI解決方案。
  
  主流解決方案介紹
  
  Qt/Embedded
  
  Qt是Trolltech這家商業公司所開發的一個跨平臺FrameWork環境,在X環境下可以看作是一套功能完整的用戶界面工具包,它采用類似C++的語法,并且具備物件導向功能。跨平臺的特性可以讓使用Qt編寫的軟件,在Microsoft Windows 95/98/2000、 Microsoft Windows NT、MacOS X、Linux、Solaris、HP-UX、Tru64 (Digital UNIX)、Irix、FreeBSD、BSD/OS、SCO、AIX等許多平臺上執行。雖然是商業公司的產品,但是Qt走的卻是開源路線,并遵循同樣的游戲規則,提供免費下載,全部都是開放源代碼,非商業用途亦采用GPL的版權宣告,聞名的Open Source “KDE” 項目便是采用Qt所開發的。
  
  Trolltech也針對嵌入式環境推出了“Qt/Embedded”產品。與桌面版本不同,Qt/Embedded已經直接取代掉X Server及X Library等角色,所有的功能全部整合在一起。
  
  Qt/Embedded 同樣具有跨平臺的特點,省掉了不少移植軟件的功夫,這樣的概念和java十分接近。同時它還采用模塊化設計,其最大的好處是有彈性, Qt/Embedded號稱最小可以縮到800Kb左右,最多可以長到3Mb(for Intel x86),這樣的彈性也讓Qt/Embedded更適合在嵌入式環境下生存。
  
 恰當選擇嵌入式Linux環境下的GUI系統(圖)(圖一)

  
圖1 QPE的主界面

  
  另外,Trolltech公司還推出了針對PDA軟件的整體解決方案QPE(Qt Plamtop Environment)。它從底層的GUI系統、Window Manger、Soft Keyboard到上層的PIM、瀏覽器、多媒體等,全部都考慮進去了。其主界面如圖1所示 ,內部包括地址簿、計算器、世界時間、時間設置、記事本、終端、文件瀏覽器、幫助、媒體播放器、圖像瀏覽器、文本編輯器等。
  
  相對其他GUI來說, Qt/Embedded 應該說是肥美型的產品,功能豐富,但能消化它的東西只能是高端產品,32MB內存是運行它的最小要求。因此,假如開發的產品不是高端的信息終端類產品,不應優先考慮 Qt/Embedded。
  
  GtkFB
  
  自從Qt推出了嵌入式版本之后,雖然GTK+并非商業公司所發展,但也加緊腳步推出了GtkFB方案,其宗旨就是要為嵌入式系統推出一套基于GTK+的GUI解決方案。與Qt/Embedded類似,GtkFB也跳過X層直接與FrameBuffer溝通,因此也具有Qt/Embedded的幾項優點,不過由于不是商業軟件,在發展的速度上較為緩慢。
  
  Microwindows
  
  Microwindows Open Source PRoject成立的宗旨在于針對體積小的裝置,建立一套先進的視窗環境,在Linux桌面上通過交叉編譯可以很輕易地制作出micro-windows的程序。
MicroWindows能夠在沒有任何操作系統或其他圖形系統的支持下運行,它能對裸顯示設備進行直接操作。這樣,MicroWindows就顯得十分小巧,便于移植到各種硬件和軟件系統上。
  
  然而MicroWindows 的免費版本進展一直很慢,幾乎處于停頓狀態,而且至今為止,國內沒有任何一家專業對 MicroWindows 提供全面技術支持、服務和擔保的公司。
  
  MiniGUI
  
恰當選擇嵌入式Linux環境下的GUI系統(圖)(圖二)

  
圖2 MiniGUI應用程序截圖

  
  MiniGUI是中國人做得比較好的自由軟件之一,它是在Linux控制臺上運行的多窗口圖形操作系統,可以在以Linux為基礎的應用平臺上提供一個簡單可行的MiniGUI支持系統?!靶 笔荕iniGUI的特色,MiniGUI可以應用在電視機頂盒、實時控制系統、掌上電腦等諸多場合。由于這是由中國人自己開發的GUI系統,所以MiniGUI對于中文的支持最好。它支持GB2312與BIG5字元集,其他字元集也可以輕松加入。界面如圖2所示。
  
  Pure X架構
  
  Tiny X Server是XFree86 Project的一部分,由Keith Pachard先生所發展,而他本身就是XFree86專案的核心成員之一。一般的X Server都太過于龐大,因此Keith Packard就以XFree86為基礎,精簡了不少東西而成Tiny X Server,它的體積可以小到幾百Kb而已,非常適合應用于嵌入式環境。
  
  以純X Window System搭配Tiny X Server架構來說,最大的優點就是彈性與開發速度,因為與桌面的X架構相同,因此相對于很多以Qt、GTK+、FLTK等開發的軟件可以很輕易地移植上來。
  
  雖然移植方便,但是卻有體積大的缺點,由于很多軟件本來是針對桌面環境開發的,因此無形之中具備了桌面環境中很多復雜的功能。因此“調校”變成采用此架構最大的課題,有時候重新改寫都可能比調校所需的時間還短。
  
  OpenGUI
  
  OpenGUI在Linux系統上已經存在很長時間了。最初的名字叫FastGL,只支持256色的線性顯存模式,但目前也支持其他顯示模式,并且支持多種操作系統平臺,比如MS-
  
  DOS、QNX和Linux等,不過目前只支持x86硬件平臺。OpenGUI分為三層: 最低層是由匯編語言編寫的快速圖形引擎;中間層提供了圖形繪制API,包括線條、矩形、圓弧等,并且兼容Borland的BGIAPI;第三層用C++編寫,提供了完整的GUI對象庫。
  
  OpenGUI采用LGPL條款發布。OpenGUI比較適合于基于x86平臺的實時系統,跨平臺的可移植性較差,目前發展較慢。
  
  一點建議
  
  綜合上述GUI解決方案各方面的性能,歸結起來有在國內有四種GUI較為適用,筆者對其做出推薦。
  
  1. OpenGUI
  
  由于基于匯編實現內核,并利用MMX指令進行了優化,OpenGUI運行速度非??臁KС?2位的機器,能夠在多種操作系統下運行,主要用來在這些系統中開發圖形應用程序和游戲。由于歷史悠久,OpenGUI非常穩定,但是由于其內核用匯編語言實現,其內部使用的是私有的API,所以其可移植性較差,可配置性也較差。
  
  2. Qt/Embedded
  
  這個版本的主要特點是可移植性較好。因為Qt是KDE等項目使用的GUI支持庫,所以許多基于Qt的X Window程序可以非常方便地移植到Qt/Embedded版本上。因此,自從Qt/Embedded以GPL條款發布以來,就有大量的嵌入式Linux開發商轉到了Qt/Embedded系統上,如韓國的Mizi公司。但是,由于它是基于C++類庫的,所以和其他GUI相比系統消耗資源較大。因此說Qt/Embedded是肥美型的產品,功能豐富,一般用于手持式高端信息產品。
  
  3. MiniGUI和Micro-Windows的比較
  
  MiniGUI和MicroWindows均為自由軟件,但這兩個系統的技術路線卻有所不同。MiniGUI的策略是建立在比較成熟的圖形引擎之上,比如Svgalib和LibGGI,開發的重點在于窗口系統、圖形接口之上。而MicroWindows的開發重點則在底層的圖形引擎之上,所以可以對裸顯示器直接操作,而窗口系統和圖形接口方面的功能還稍有欠缺。比如說,MiniGUI有一套用來支持多字符集和多編碼的函數接口,可以支持各種的字符集,包括GB、BIG5、UNI-CODE等,而MicroWindows在多字符支持上尚沒有統一接口。
  
  鏈接
  
  X Window System的分層架構
  
  ● X Server
  
  X Window System架構上有一項特點是別的GUI系統所沒有的,這個特點就是Client/Server架構,注重這里和一般我們所熟知的某某服務器(Server端)跟PC端(Client端)相連接的情形是不同的。惟一類似的是X Window System本身也是采用網路架構設計。具體而簡單一點的說明就是,X Client可以看作我們在X上執行的軟件,X Server則是負責顯示及傳遞使用者輸入事件(包括鍵盤、鼠標等硬件裝置的輸入)。
  
  ● Graphic Library
  
  我們可以把一幅圖案想象成有成千上萬個細微小點所組成,這種小點的單位通常為pixel,在同一平方單位里這些小點數越高圖案就越清楚、畫質就越好,也就是說分辨率或解析率高。
事實上我們要設計的視窗當然不可能是這樣一點一點地畫上去的,這樣太過浪費時間,基于這種觀念我們就設計出高階一點的函數來幫助我們解決這個繁瑣的步驟,例如各類視窗編程里用到的畫點、畫線、畫矩形、畫圓形、畫不規則形、上色等函數。透過這些函數是的程序設計者不用去管畫一條線要幾個點以及如何讓顯示器顯示等林林總總低階的工作,我們稱繪圖相關的一組函數庫為GUI的基本Graphic Library。
  
  ● Toolkits
  
  有了點、線、面的函數之后,雖然已經去除了大半的重復無聊工作,但是就開發視窗程序來說,還是顯得非常沒有效率,怎么辦呢?只有繼續將構成視窗的抽象元件,如按鈕、卷軸、組合

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌鲁木齐县| 香港 | 陇南市| 收藏| 师宗县| 德保县| 陆丰市| 山丹县| 云安县| 桃园县| 汝阳县| 应城市| 景德镇市| 裕民县| 阿荣旗| 张家川| 分宜县| 保定市| 曲松县| 海口市| 石阡县| 三明市| 伊吾县| 巴林右旗| 湟中县| 凌海市| 儋州市| 丹寨县| 安义县| 阳春市| 喜德县| 边坝县| 安乡县| 德化县| 皮山县| 张北县| 荣昌县| 合江县| 黄平县| 扶余县| 安顺市|