GUI ( Graphic User Interface ) 系統已行之多年,自從蘋果的麥金塔電腦問世之後,世界立刻掀起一陣圖形化的使用者介面熱潮,隨之而起的微軟 Windows 系統,讓這份流行立於不敗之地,而人們對電腦生硬的刻板印象也逐漸消逝,由於 GUI 的出現讓 PC 更容易的融入每個家庭。
GUI 的系統很多,有我們熟知的微軟 Windows 作業系統、蘋果電腦的 Mac OS 、UNIX 底下的 X Window System 等 PC GUI 系統,Embedded 領域裡頭也有不少的 GUI 系統如 QNX Photon microGUI 等等,這些都不是我們所要探討的主題,本文將把重點置於『 Embedded Linux 』上的 GUI 系統。
GUI 系統本身的複雜度絕對不是一兩篇文章所能探討的,筆者將盡可能的介紹目前較為成熟的幾種 GUI 系統架構,幫助建立讀者一些基本觀念,如要實作則得另闢單元專欄介紹囉。
過去的人害怕學電腦,因為 DOS 時代所謂的學電腦常常和背指令劃上等號,這是許多人的刻板印象,也是許多學電腦人的痛苦回憶,直到圖形介面系統的出現才改變了這樣的情況,全拜圖形使用者介面的親和力。
人本來就活在充滿 2D 或 3D 的圖形世界中, GUI 的出現只是順從了人的本性,『親和力』是 GUI 對電腦世界的第一項貢獻。
如果網路是僅有『 文字 』的世界,相信很多人包括你我,上網意願恐怕要打個對折,GUI 系統跟網路是相輔相成的,沒有太多的因果關係,但卻是相得益彰。
GUI 系統是多媒體的基礎,今天的電腦早都進入多媒體時代了,聲光音效讓我們的電腦世界更多采多姿。
嵌入式系統的應用面非常廣泛,在導論裡頭筆者已經提過,很多的場合底下 GUI 都是不可或缺的系統,最顯眼的例子當然就是 PDA。一套良好的 GUI 系統可能影響一項產品的成敗,由其是在這個注重包裝的時代。
與 PC 環境不同的是嵌入式系統通常是安裝在體積較小、資源有限的裝置,所以能夠成為嵌入式的 GUI 系統一定要具備以下的條件:
談到『嵌入』,真的是除了小還是小,現在 PC 的硬體動不動就是以GB論,以現在Distribution 常用的兩片光碟安裝片來選擇全部安裝都還不能塞滿整顆硬碟。對於嵌入式硬體來說根本是不可能的奢求,大部分嵌入式系統用的 flash 大都以 16mb 或 32mb 為主,與 PC 簡直是天壤之別,所以這樣苛刻的環境底下只有把軟體盡量壓小囉。
牽扯到圖形處理的系統都不會是一件輕鬆的事情,複雜的程度不是三言兩語能帶過,所以製作嵌入式 GUI 系統的方式大致可分為兩大類:
在某個角度來看,精簡既有的系統是最快速的方式,缺點是效能不好控制、體積只能縮小到一定的程度。
最好的情況當然是重新打造一套,優點是系統掌握度高、效能及體積都能調整到最佳狀態,但是所需的時間、人力都是很大的成本。
這類嵌入式系統如:PDA、手機,最注重的就是系統資源及省電功能,在省電的前提下 CPU 速度不能太高,運算速度越快越耗電而且散熱也會成為大問題。
如:Set Top Box、部份 WebPAD,這類系統主要考量點在於硬體成本。
結論是嵌入式系統的 CPU 都不會比 PC 上的好,記憶體也是少的多,因此 GUI 系統面臨了另一項挑戰,必須審慎使用系統資源,不能做無謂的浪費。
嵌入式系統的一大特色就是硬體差異大,並不像 PC 一般全都 x86 架構。縱使底層硬體差異大,上層 GUI 系統依舊需要表現出統一的介面,所以擔任嵌入式 GUI 系統必須盡量與硬體劃清界線,最好的情形是在 GUI 系統與硬體中間有一層系統負責隔離,所幸已經有 Linux kernel 可以扮演這個角色。