熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

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

2013-11-13 16:04:52  來源: Oracle 

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

  
QPE的主界面

  
  另外Trolltech公司還推出了針對PDA軟件的整體解決方案QPE(Qt Plamtop Environment)它從底層的GUI系統Window MangerSoft Keyboard到上層的PIM浏覽器多媒體等全部都考慮進去了其主界面如圖所示 內部包括地址簿計算器世界時間時間設置記事本終端文件浏覽器幫助媒體播放器圖像浏覽器文本編輯器等
  
  相對其他GUI來說 Qt/Embedded 應該說是肥美型的產品功能豐富但能消化它的東西只能是高端產品MB內存是運行它的最小要求因此如果開發的產品不是高端的信息終端類產品不應優先考慮 Qt/Embedded
  
  GtkFB
  
  自從Qt推出了嵌入式版本之後雖然GTK+並非商業公司所發展但也加緊腳步推出了GtkFB方案其宗旨就是要為嵌入式系統推出一套基於GTK+的GUI解決方案與Qt/Embedded類似GtkFB也跳過X層直接與FrameBuffer溝通因此也具有Qt/Embedded的幾項優點不過由於不是商業軟件在發展的速度上較為緩慢
  
  Microwindows
  

  Microwindows Open Source Project成立的宗旨在於針對體積小的裝置建立一套先進的視窗環境在Linux桌面上通過交叉編譯可以很容易地制作出microwindows的程序MicroWindows能夠在沒有任何操作系統或其他圖形系統的支持下運行它能對裸顯示設備進行直接操作這樣MicroWindows就顯得十分小巧便於移植到各種硬件和軟件系統上
  
  然而MicroWindows 的免費版本進展一直很慢幾乎處於停頓狀態而且至今為止國內沒有任何一家專業對 MicroWindows 提供全面技術支持服務和擔保的公司
  
  MiniGUI
  

  
MiniGUI應用程序截圖

  
  MiniGUI是中國人做得比較好的自由軟件之一它是在Linux控制台上運行的多窗口圖形操作系統可以在以Linux為基礎的應用平台上提供一個簡單可行的MiniGUI支持系統是MiniGUI的特色MiniGUI可以應用在電視機頂盒實時控制系統掌上電腦等諸多場合由於這是由中國人自己開發的GUI系統所以MiniGUI對於中文的支持最好它支持GB與BIG字元集其他字元集也可以輕松加入界面如圖所示
  
  Pure X架構
  
  Tiny X Server是XFree Project的一部分由Keith Pachard先生所發展而他本身就是XFree專案的核心成員之一一般的X Server都太過於龐大因此Keith Packard就以XFree為基礎精簡了不少東西而成Tiny X Server它的體積可以小到幾百Kb而已非常適合應用於嵌入式環境
  
  以純X Window System搭配Tiny X Server架構來說最大的優點就是彈性與開發速度因為與桌面的X架構相同因此相對於很多以QtGTK+FLTK等開發的軟件可以很容易地移植上來
  
  雖然移植方便但是卻有體積大的缺點由於很多軟件本來是針對桌面環境開發的因此無形之中具備了桌面環境中很多復雜的功能因此調校變成采用此架構最大的課題有時候重新改寫都可能比調校所需的時間還短
  
  OpenGUI
  
  OpenGUI在Linux系統上已經存在很長時間了最初的名字叫FastGL只支持色的線性顯存模式但目前也支持其他顯示模式並且支持多種操作系統平台比如MS
  
  DOSQNX和Linux等不過目前只支持x硬件平台OpenGUI分為三層: 最低層是由匯編語言編寫的快速圖形引擎中間層提供了圖形繪制API包括線條矩形圓弧等並且兼容Borland的BGIAPI第三層用C++編寫提供了完整的GUI對象庫
  
  OpenGUI采用LGPL條款發布OpenGUI比較適合於基於x平台的實時系統跨平台的可移植性較差目前發展較慢
  
  一點建議
  
  綜合上述GUI解決方案各方面的性能歸結起來有在國內有四種GUI較為適用筆者對其做出推薦
  
  . OpenGUI
  
  由於基於匯編實現內核並利用MMX指令進行了優化OpenGUI運行速度非常快它支持位的機器能夠在多種操作系統下運行主要用來在這些系統中開發圖形應用程序和游戲由於歷史悠久OpenGUI非常穩定但是由於其內核用匯編語言實現其內部使用的是私有的API所以其可移植性較差可配置性也較差
  
  . Qt/Embedded
  
  這個版本的主要特點是可移植性較好因為Qt是KDE等項目使用的GUI支持庫所以許多基於Qt的X Window程序可以非常方便地移植到Qt/Embedded版本上因此自從Qt/Embedded以GPL條款發布以來就有大量的嵌入式Linux開發商轉到了Qt/Embedded系統上如韓國的Mizi公司但是由於它是基於C++類庫的所以和其他GUI相比系統消耗資源較大因此說Qt/Embedded是肥美型的產品功能豐富一般用於手持式高端信息產品
  
  . MiniGUI和MicroWindows的比較
  
  MiniGUI和MicroWindows均為自由軟件但這兩個系統的技術路線卻有所不同MiniGUI的策略是建立在比較成熟的圖形引擎之上比如Svgalib和LibGGI開發的重點在於窗口系統圖形接口之上而MicroWindows的開發重點則在底層的圖形引擎之上所以可以對裸顯示器直接操作而窗口系統和圖形接口方面的功能還稍有欠缺比如說MiniGUI有一套用來支持多字符集和多編碼的函數接口可以支持各種的字符集包括GBBIGUNICODE等而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
  
  有了點面的函數之後雖然已經去除了大半的重復無聊工作但是就開發視窗程序來說還是顯得非常沒有效率怎麼辦呢?只有繼續將構成視窗的抽象元件如按鈕卷軸組合
From:http://tw.wingwit.com/Article/program/Oracle/201311/17775.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.