Embedded Linux 底下幾種 GUI 系統架構

Next Previous Contents

2. Embedded Linux 底下幾種 GUI 系統架構

即使是到了嵌入式環境底下,GUI 整體架構跟 PC Desktop 相去不遠,舉凡繪圖函式庫、字型、事件處理..等等課題都是 GUI 系統所要面臨到的不管是 PC 或 Embedded,但是嵌入式系統本身有筆者前面章節所提到的種種限制,所以在整體設計上必須較為嚴謹,必須顧慮的條件更多,彷彿會到 Dos 底下製作遊戲的年代,對於軟體所佔記憶體錙銖必較。

UNIX 環境底下的圖形視窗標準為 X Window System,Linux 算是 UNIX Like 的系統,上頭跑的 GUI 系統是相容於標準 X 的 XFree86 系統,所以 Embedded Linux GUI 系統自然參照現有 PC Desktop 架構具體而微,筆者以 X Window System 架構的思維來介紹各個系統,希望這樣的介紹能夠讓您有清楚的觀念。

依照 X 的邏輯,我大致劃分了即 X Server ( 包括 Display、Input.. )、Graphic Library ( 底層繪圖函式庫 )、Toolkitss ( 如 QT、GTK+..等等 )、Window Manager、Internationalization ( I18N )..等幾大類來剖析。

底下有幾個 X 的專有名詞,筆者順便簡略的介紹 X Window System 的架構,如果想要更徹底的了解 X 則必須找尋相關專書閱讀。

  • 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

    有了點、線、面的函式之後,雖然已經去除大半的無聊工作,但是就開發視窗程式來說,還是顯得非常沒有效率,怎麼辦呢?只有繼續將構成視窗的抽象元件例如:按鈕、捲軸..等等,抽離出來,重新定義一組更高階的函式庫,再配合上一些聯繫的語法函式就成了 Toolkits 這東西,目前以 QT、GTK+..等較為流行。

  • Window Manger

    有了 Toolkits 我們可以很輕鬆的建立視窗軟體 ( X Client ),但是每個視窗軟體只負責自己軟體內的事務,那不同視窗間的溝通、協調例如:視窗的切換、放大、縮小..等等,就沒人管了,於是視窗管理員 ( Window Manager ) 就應運而生了。

  • Internationalization

    國際化通常是我們東方語系國家的人比較關心的議題,但是很多軟體一開始都由西方國家所主導開發,因此這點常常受到忽略,這個問題牽扯的層面非常廣泛,上從語文的顯示、輸入,中至語文習慣,下到文字位元的處理,完整的解決是必須從頭到腳徹底配合才能達成,只處理一半都只能說是一個跛腳的系統。

    隨著東方國家使用 GNU/Linux 的人口越來越多,I18N 也就日益受到重視,目前底層 libc 部份已經有完整的支援,剩下來便是 GUI 系統的問題,由於處理雙位元所耗的資源較大、西方國家主導的系統多的情況下,有時候在一些取捨上,I18N 就被犧牲了,整體而言 Embedded Linux GUI 系統在 I18N 的程度通常都沒 PC 端的好,只有在有需求時才會特別調校。

上頭幾點就是筆者藉 X Window System 的分層架構,來指出一般的 GUI 系統所必須具備的功能,雖說 X 架構不錯,但坦白說卻不甚適用於嵌入式環境底下,因為實作起來實在太過於龐大,因此有很多 Embedded Linux GUI 系統會把上述幾點合併,甚至全部綁在一塊,當然這樣會失去很多彈性與功能,但卻也是不得不的作法。

2.1 Qt Embedded

  • 概說

    Qt 是 Trolltech這家商業公司所開發的一個跨平台FrameWork環境,在 X 底下可以看作是一套功能完整的 UI Toolkits,採用類似 C++ 的語法以及具備物件導向功能,跨平台的特性可以讓使用 Qt 撰寫的軟體,只寫一次程式卻可以在 Microsoft Windows 95/98/2000, Microsoft Windows NT, MacOS X, Linux, Solaris, HP-UX, Tru64 (Digital UNIX), Irix, FreeBSD, BSD/OS, SCO and AIX 這些平台執行。雖然是商業公司的產品,但是 Qt 走的卻是 Open Source 的路子,並遵循同樣的遊戲規則,除了提供免費下載以外,全部都是開放原始碼,非商業用途亦採用 GPL 的版權宣告,著名的 Open Source 『 KDE 』 Project 便是採用 Qt 所發展。

  • Qt / Embedded for embedded system

    Trolltech 也針對了嵌入式環境推出了『 Qt / Embedded 』產品。與 Desktop 版本不同 ,Qt / Embedded 已經直接取代掉 X Server 及 X Library 等等角色,所有的功能全部整合在一起。

  • 特色

    • 跨平台

      Trolltech 公司承諾會維持同樣的 API ,不管是在 Windows 底下的 Qt 或是 X11 底下的 Qt,這樣的好處是什麼?今天你只要用 Qt 寫了一套軟體,然後在不同平台下重新編譯過就可以立即使用,省掉了不少移植軟體的功夫自然也省掉了許多寶貴的時間,這樣的概念與 Java 十分接近。

    • 模組化設計

      模組化設計最大的好處就是彈性,Linux kernel 不也因為模組化而彈性十足,Qt / Embedded 號稱最小可以縮到 800 Kb 左右,最多則可以長到 3 Mb ( for Intel x86 ),這樣的彈性讓 Qt / Embedded 更適合在嵌入式環境底下生存。

    • 開放原始碼

      開放原始碼的優點應該是不言而諭的。如果你願意你可以深入了解 Qt 到底是如何運作的。

    • 介面簡潔漂亮

      安裝過 KDE 吧!是不是對它愛不釋手,介面真的挺美的。

    • 執行速度快

      跟 X11 比起來,剃除了許多累贅,Qt / Embedded 執行速度增快許多。

    • Trolltech 公司支援

      公司採購軟體最需要的就是完整的支援,只要您跟 Trolltech 購買 Qt 就可以得到他們最完整的支援。

    • 參考文件豐富

      Qt 誕生也好幾年了,透過 Trolltech 及全世界網友的努力,Qt 的文件可說是相當完整而豐富。

  • 參考網站

2.2 QPE ( Qt Plamtop Environment )

  • 概說

    Trolltech 公司所推出針對 PDA 軟體的整體解決方案,從底層的 GUI 系統、Window Manager、Soft Keyboard 到上層的 PIM、瀏覽器、多媒體..等等,全部一手包辦。

  • ScreenShot

    • 主畫面

      附圖 1

    • Address Book

      附圖 2

    • 手寫

      附圖 3

    • Datebook

      附圖 4

    • 計算機

      附圖 5

    • MPEG Player

      附圖 6

    • Games

      附圖 7

    • 系統工具

      附圖 8

  • 參考網站

    http://www.trolltech.com/products/qt/embedded/qpe.html

2.3 GtkFB

  • 概說

    自從 Qt 推出了 Embedded 版本之後,雖然 GTK+ 並非商業公司所發展,但也加緊腳步推出了 GtkFB 專案,這個專案的宗旨當然也是要替 Embedded 系統提出一套基於 GTK+ 的 GUI 解決方案。

    與 Qt / Embedded 類似的作法,GtkFB 也跳過 X 層直接與 FrameBuffer 溝通,因此也具有 Qt / Embedded 的幾項優點,不過畢竟不是商業軟體,在於發展的速度上仍然較為緩慢。

  • 特色

    • 不需 X Server 直接與 FrameBuffer 溝通
    • API 與 Desktop 版相容。
    • 採 LGPL 授權方式
    • 體積小

  • ScreentShot

    附圖 9

  • 參考網站

    http://www.directfb.org/gtk.xml

2.4 Microwindows

  • 概說

    Microwindows Open Source Project 成立的宗旨在於針對體積小的裝置,建立一套先進的視窗環境,在 Linux Desktop 上透過 Cross Complie 之後,就可以很容易製作出 microwindows 的軟體,

  • 特色

    • 跨平台
    • 不需 X Server
    • 採用 FLTK Toolkits
    • 支援 TrueType 字型

  • ScreenShot

    • MP3 Player

      附圖 10

    • Todo

      附圖 11

    • Games

      附圖 12

  • 參考網址

    http://microwindows.org/

2.5 MiniGUI

  • 概說

    這是蠻特別的一套 GUI 系統,由大陸的魏永明先生所主持的專案,難得有中國人主導的專案,因為如此所以 MiniGUI 對於中文的支援非常良好。

  • 特色

    • 支援 GB2312 與 BIG5 字元集,其他字元集也可以輕鬆加入。
    • 支援多種格式字體,例如:TrueType、Adobe Type1等。
    • GDI 函數 ( MoveTo、LineTo、FillBox、Rectangle、Circle、TextOut、DrawText ..等 )。
    • 可選擇具有 Multi-Thread 版與沒有 Multi-Thread 的 MiniGUI Lite 版。

  • ScreenShot

    • Mail

      附圖 13

    • Browser

      附圖 14

    • Games

      附圖 15

  • 參考網址

    http://www.minigui.org/

2.6 Pure X 架構

  • Tiny X Server

    Tiny X Server 為 XFree86 Project 的一部分,由 Keith Packard 先生所發展,他本身就是 XFree86 專案的核心成員之一,一般的 X Server 都太過於龐大,因此 Keith Packard 就以 XFree86 為基礎,精簡了不少東西而成 Tiny X Server ,它的體積可以小到幾百 Kb 而已,非常適合應用於嵌入式環境之中。

  • 彈性大

    以純 X Window System 搭配 Tiny X Server 架構來說,最大的優點就是彈性與開發速度,因為與 Desktop 的 X 架構相同,因此相對的很多以 Qt、GTK+、FLTK..等等所開發的軟體可以很容易的移植上來。

    雖然移植速度快,但是卻有體積大的缺點,由於很多軟體本來是針對 Deskop 環境所開發,因此無形之中功能都比較多樣,有些並不適用於嵌入式環境,因此 『 調校 』 變成為採用此架構最大的課題,有時候重新改寫都可能比調校所需的時間還短。

  • ScreenShot ( Coventive 之 XTinux )

    • 主畫面

      附圖 16

    • Mail

      附圖 17

    • Browser

      附圖 18

    • 手寫

      附圖 19

    • 日曆

      附圖 20

    • 字典

      附圖 21

    • Games

      附圖 22

  • 參考網站

    http://www.xfree86.org/


Next Previous Contents
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值