《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 嵌入式Linux的圖形使用者界面(GUI)設(shè)計(jì)
嵌入式Linux的圖形使用者界面(GUI)設(shè)計(jì)
摘要: 作業(yè)系統(tǒng)從純文字界面一路進(jìn)展到光鮮亮麗得圖形外表,其中包含了無數(shù)的設(shè)計(jì)師的創(chuàng)意,當(dāng)然,也有許多截他人之長補(bǔ)自己之短得案例出現(xiàn)。在嵌入式系統(tǒng)方面,由于Linux已經(jīng)是主流嵌入式架構(gòu)之一,針對(duì)這個(gè)架構(gòu)所開發(fā)出來的嵌入式產(chǎn)品自然也要在圖形使用者界面花費(fèi)相當(dāng)大的心力。
Abstract:
Key words :

前言:
  
作業(yè)系統(tǒng)從純文字界面一路進(jìn)展到光鮮亮麗得圖形外表,其中包含了無數(shù)的設(shè)計(jì)師的創(chuàng)意,當(dāng)然,也有許多截他人之長補(bǔ)自己之短得案例出現(xiàn)。在嵌入式系統(tǒng)方面,由于Linux已經(jīng)是主流嵌入式架構(gòu)之一,針對(duì)這個(gè)架構(gòu)所開發(fā)出來的嵌入式產(chǎn)品自然也要在圖形使用者界面花費(fèi)相當(dāng)大的心力。

  兼顧硬體的特殊性、功能的易用性、視覺美感等要素,這些皆是嵌入式系統(tǒng)GUI設(shè)計(jì)的重點(diǎn),但是過去的圖形介面設(shè)計(jì)並沒有專門的設(shè)計(jì)人員來負(fù)責(zé),而多由程式設(shè)計(jì)人員或者是美工人員兼差扛起,這些人沒有接受過專業(yè)的人機(jī)介面設(shè)計(jì),或者是想法太過一廂情願(yuàn),無法真正切合使用者需求。甚至,部分廠商乾脆就直接抄襲國外大廠的介面設(shè)計(jì),如此不尊重專業(yè)的結(jié)果,就是導(dǎo)致臺(tái)灣在圖形介面設(shè)計(jì)的經(jīng)驗(yàn)累積與發(fā)展遠(yuǎn)遠(yuǎn)不及國外大廠。大陸方面其實(shí)也在走過去臺(tái)灣走過的老路, 從抄襲,轉(zhuǎn)而代工,自有設(shè)計(jì)少之又少。



  設(shè)計(jì)圖形使用者介面的必要概念

  在PC上的各類圖形使用者界面的共同特點(diǎn)是以視窗管理系統(tǒng)為核心,使用鍵盤和滑鼠作為輸入設(shè)備。視窗管理系統(tǒng)除基於可重疊多視窗管理技術(shù)外,廣泛採用的另一核心技術(shù)是事件驅(qū)動(dòng)(Event-Driven)技術(shù)。圖形使用者界面和人機(jī)交互過程極端依賴視覺和手動(dòng)控制的參與,因此具有強(qiáng)烈的直接操作特點(diǎn)。而在嵌入式系統(tǒng)上,不同規(guī)模的硬體架構(gòu)對(duì)於圖形介面的需求也各有不同,但基本理念仍然一致,那就是作為使用者與機(jī)器的有效溝通管道。

  由於目前多媒體的概念正風(fēng)行,作業(yè)系統(tǒng)與使用者溝通的方式從過去的純文字、圖形、到了現(xiàn)代,已經(jīng)轉(zhuǎn)變成動(dòng)畫、聲音甚至3D影像的結(jié)合產(chǎn)物。這些結(jié)合多媒體概念的人機(jī)介面設(shè)計(jì),在現(xiàn)代資訊產(chǎn)品中扮演著極為重要的角色,由於人類對(duì)於訊息的感受最直接的就是視覺與聽覺,結(jié)合了兩大感官能力,可以進(jìn)一步豐富資訊內(nèi)容與使用者進(jìn)行的交互作用。至於在操作應(yīng)用方面,電視遊樂器Wii所帶來的嶄新操作方式,也可以提供我們對(duì)將來下一代作業(yè)系統(tǒng)使用者介面操作方式的另1層省思,擺脫過去滑鼠與螢?zāi)辉诓僮魃舷鄬?duì)缺乏直覺的印象,可以利用動(dòng)作感應(yīng)與螢?zāi)贿M(jìn)行最直接的互動(dòng),將來甚至也可能透過腦波控制,直接利用腦波對(duì)作業(yè)系統(tǒng)進(jìn)行操控。

  使用者與機(jī)器溝通的管道與方式隨著科技的進(jìn)步而增加,但基本上,人類在使用系統(tǒng)所提供的操作介面時(shí),大多依靠的事日常生活所提供的經(jīng)驗(yàn)來做判斷,操作介面符合人性,越能達(dá)到直覺的目標(biāo),使用者花在與機(jī)器溝通的訓(xùn)練時(shí)間就可以相對(duì)縮短,但是親易近人之後,也要注意依照此方式所設(shè)計(jì)出來的操作介面是否擁有足夠的深度,能夠充分發(fā)揮硬體設(shè)備本身的能力,因?yàn)橐恢滦允欠浅V匾脑O(shè)計(jì)原則,為了要使用到更進(jìn)階的硬體機(jī)能就必須呼叫出不同的使用者介面的話,那麼這樣的設(shè)計(jì)就無法維持其一致性,雖然可以應(yīng)用到更完整的系統(tǒng)能力,但基本上並不能稱為1款成功的使用者圖形介面。


  作業(yè)系統(tǒng)的使用者介面發(fā)展

  嚴(yán)格來說,真正將圖形化使用者介面帶入一般資訊應(yīng)用的,乃是Apple公司,諸如收拉式選單、圖示、拖拉操作以及點(diǎn)擊執(zhí)行等概念,都是早在1980年代時(shí)就由該公司所開發(fā)構(gòu)思出來的,其後Apple公司也持續(xù)在圖形操作領(lǐng)域有非常多的進(jìn)展,諸如微軟、Linux等都只不過是這股風(fēng)潮之下的追隨者,其中微軟算是在作業(yè)系統(tǒng)操作介面中,參考Apple公司最徹底的1家,從早先的Windows 3.x,到目前最新的Vista,處處都可以看到Apple公司作業(yè)系統(tǒng)的影子在。

  隨著嵌入式系統(tǒng)的發(fā)展,使用者也越來越注重裝置上的操作簡易性,在消費(fèi)型行動(dòng)設(shè)備上,美觀更是成為視覺操作介面的設(shè)計(jì)要點(diǎn)之一,各家行動(dòng)設(shè)備廠商在美感的發(fā)揮程度上各有不同,但是基本上都還是依循的既有的模式,比如說在手機(jī)介面設(shè)計(jì)上,常見的9宮格甚至12宮格操作模式就成為各主流手機(jī)介面的標(biāo)準(zhǔn)樣版,收放式選單、圖示以及超連結(jié)的概念也被徹底的實(shí)行。

  臺(tái)灣的代工思維 無法創(chuàng)造出像Apple公司產(chǎn)品的使用者介面

  要在嵌入式系統(tǒng)的有限資源中做繁複的圖形介面設(shè)計(jì)是一件非常不容易的事情,有時(shí)開發(fā)者為了省時(shí)省事,就只能建議專案領(lǐng)導(dǎo)者以實(shí)用為主,避免太多花俏的設(shè)計(jì)。不過創(chuàng)意依然是使用者介面設(shè)計(jì)上的最重要元素之一,就以Apple公司的iPhone及過去的iPod為例,其實(shí)在技術(shù)層面上非常的簡易,都只是現(xiàn)有技術(shù)的整合而已,但是為何臺(tái)灣設(shè)計(jì)者辦不到?為何臺(tái)灣著名的手機(jī)產(chǎn)業(yè)及相關(guān)手持式裝置也都只能沿用公版介面或只能沿襲舊有操作習(xí)慣?教育是問題之一,但主事者的態(tài)度也是關(guān)鍵,臺(tái)灣並不缺乏這方面的設(shè)計(jì)人才,缺乏的只是宏觀的態(tài)度以及長久的遠(yuǎn)見。

  由於硬體不斷的發(fā)展與更新,因此未來的嵌入式系統(tǒng)在使用者介面的設(shè)計(jì)上還是有非常大的發(fā)展空間,國內(nèi)廠商若能好好的把握這塊市場機(jī)會(huì),積極培養(yǎng)人才,並且尊重專業(yè),臺(tái)灣便有機(jī)會(huì)可以脫離代工產(chǎn)業(yè)流血砍價(jià)拼規(guī)模的惡性循環(huán),衝出紅海的陰影,另闢一番藍(lán)海新天地。

  嵌入式Linux的應(yīng)用方興未艾

  嵌入式系統(tǒng)正以它體積小、專用性等特點(diǎn)深入社會(huì)應(yīng)用的各個(gè)層次。在此領(lǐng)域中,嵌入式Linux在開發(fā)活力上,以及技術(shù)深度,可以說是目前嵌入式技術(shù)領(lǐng)域的領(lǐng)導(dǎo)者之一,除了有各大半導(dǎo)體、伺服器端、終端硬體設(shè)備廠商的支援以外,在開發(fā)難易度上,也因?yàn)榫邆淞朔浅XS富的支援文件及社團(tuán)資源,且作業(yè)系統(tǒng)本身不需授權(quán)費(fèi)用,或授權(quán)費(fèi)用相對(duì)低廉(端視不同廠商的授權(quán)方式),成本更顯低廉,因此被嵌入式硬體廠商廣泛採用。

  在特定嵌入式應(yīng)用領(lǐng)域中,比如PDA、智慧型手機(jī)、UMPC、工控電腦等嵌入式架構(gòu)中,嵌入式Linux的圖形使用者界面的性能將直接影響整個(gè)系統(tǒng)的操作感受與流暢度,因此產(chǎn)品製造商和最終使用者。如何針對(duì)使用者的需求,在已有的圖形使用者界面上,訂製和改進(jìn)出具有特定功能的圖形使用者界面,是嵌入式系統(tǒng)開發(fā)者共同關(guān)注的問題。


  嵌入式Linux圖形使用者界面的分類

  嵌入式系統(tǒng)往往是非常特化的硬體設(shè)備,針對(duì)不同的應(yīng)用,因此對(duì)圖形使用者界面的需求也會(huì)有所不同。有的系統(tǒng)只要求簡單的圖形功能,而有些系統(tǒng)要求完備的GUI能力支援。因此很多嵌入式系統(tǒng)需要自行定製的嵌入式圖形使用者界面。以下是幾種常用的嵌入式圖形使用者界面及技術(shù)特性:

■MiniGUI




圖說:利用MiniGUI所設(shè)計(jì)出來的手機(jī)操作介面。(資料來源:www.linuxdevices.com)


  MiniGUI是在Linux控制臺(tái)上執(zhí)行基於SVGALib和LinuxThread6函式庫的多視窗圖形使用者界面支援系統(tǒng)。MiniGUI 採用了類似Win32的API,實(shí)現(xiàn)了簡化的類似微軟視窗風(fēng)格的圖形使用者界面。 MiniGUI也是1個(gè)視窗系統(tǒng),它的主要組成元素是視窗,在這個(gè)基礎(chǔ)上MiniGUI中的視窗可以基本分四類,分別為主視窗、對(duì)話框、控制元件和主視窗中的片段。

  MiniGUI中的主視窗和Windows應(yīng)用程式的主視窗概念類似,MiniGUI中的每個(gè)主視窗對(duì)應(yīng)於一個(gè)單獨(dú)的執(zhí)行緒,通過函式庫存取可建立主視窗以及對(duì)應(yīng)的執(zhí)行緒。每個(gè)執(zhí)行緒有一個(gè)訊息佇列,主視窗從這一訊息佇列中獲取消息並由視窗過程(回調(diào)函數(shù))進(jìn)行處理。MiniGUI的目標(biāo)是保持現(xiàn)有體積小巧的前提下,在Linux控制臺(tái)上提供1個(gè)迷你視窗系統(tǒng)支援。〝輕薄短小〞是MiniGUI的最大特色。同時(shí)MiniGUI又將盡力與微軟的 MSWindows API保持相容。這麼定位是希望MiniGUI可以在未來以Linux 為基礎(chǔ)的應(yīng)用平臺(tái)上,提供一個(gè)簡單可行的 GUI 支援系統(tǒng),讓MiniGUI 可以應(yīng)用在Windows CE系統(tǒng)可以應(yīng)用的任何場合。

■Microwindows/Nano-X Windows System



圖說:利用Microwindows所設(shè)計(jì)出來的GUI介面。(資料來源:www.devdrv.co.jp)


  Microwindows (已改名為Nano-X Windows System)是1個(gè)開放原始碼的自由軟體項(xiàng)目,最初是由臺(tái)灣人所發(fā)展,支援多種平臺(tái)。該項(xiàng)目的開發(fā)相當(dāng)活躍,大陸也有人參與了其中的開發(fā),並增加了GB2312等字元編碼的支援。Microwindows的主要特色在於提供了相當(dāng)完善的圖形功能,包括如 Alpha 混合,3D支援,TrueType 字體支援等高級(jí)的功能。使得那些只有在具有大容量硬碟和記憶體配置的高階Windows系統(tǒng)才能實(shí)現(xiàn)的視窗環(huán)境,如Microsoft Windows和X2Windows,可以在嵌入式設(shè)備上順利運(yùn)作。

  Microwindows從原理上採用分層設(shè)計(jì)的方法,每層次完成特定的功能,並且能夠在不影響其它層次的基礎(chǔ)上針對(duì)不同的應(yīng)用進(jìn)行改編或者重寫。在最底層方面,顯示螢?zāi)?、滑鼠、觸控螢?zāi)坏鹊尿?qū)動(dòng)程式提供了與交互相關(guān)的硬體設(shè)備的存??;中間層是1個(gè)精簡的圖形引擎,提供了劃線、區(qū)塊填充、多邊形等多種基本的圖形功能;最上層為圖形應(yīng)用程式提供了豐富的介面函式庫(API),透過這些函式庫可以自訂桌面和視窗的外觀。目前Microwindows提供2套API,以便能夠更好地適應(yīng)不同平臺(tái)應(yīng)用程序的移植,即 與Win32/Win CE基本兼容的API以及採用X體系的Nano-X API。

  設(shè)備驅(qū)動(dòng)程序的介面定義在device.h文件中。中間層所提供與設(shè)備無關(guān)的圖形引擎就是透過存取設(shè)備驅(qū)動(dòng)程式跟硬體設(shè)備進(jìn)行溝通。這就保證了當(dāng)平臺(tái)硬體設(shè)備發(fā)生變化的時(shí)候,只需要改寫相對(duì)應(yīng)的驅(qū)動(dòng)程式,而無需修改上層程式碼,簡化了開發(fā)的流程。icrowindows提供基於Linux2.4.X內(nèi)核的 FrameBuffer設(shè)備驅(qū)動(dòng)程式。FrameBuffer在Linux系統(tǒng)中透過/dev/fb0設(shè)備檔案進(jìn)行工作,利用mmap()系統(tǒng)函式將顯示換衝記憶體映射至系統(tǒng)記憶體中。

  Microwindows 能夠在沒有任何作業(yè)系統(tǒng)或其他圖形系統(tǒng)的支援下運(yùn)行,並且具有對(duì)無顯示設(shè)備進(jìn)行直接操作的能力。雖然擁有WIN32相容API,便於熟悉Windows開發(fā)的使用者進(jìn)行開發(fā),不過介面仍不夠完善。

■OpenGUI



圖說:OpenGUI的系統(tǒng)架構(gòu)。(資料來源:www.tutok.sk)

  OpenGUI基於使用組合語言實(shí)現(xiàn)的x86圖形核心,提供了一個(gè)高階的C/C++圖形/視窗介面。它和MiniGUI一樣,也是使用LGPL授權(quán)方式。OpenGUI提供了2D繪圖架構(gòu),訊息驅(qū)動(dòng)的API、BMP檔案格式支援。OpenGUI功能強(qiáng)大、使用方便。使用者甚至可以實(shí)現(xiàn)Borland BGI風(fēng)格的應(yīng)用程式,或者是QT風(fēng)格的視窗。OpenGUI支援滑鼠和鍵盤的事件。在Linux上基於Framebuffer3或者SVGALib4實(shí) 現(xiàn)繪圖。Linux下OpenGUI也支援Mesa3D,支援真實(shí)的3D成像效果。在顏色數(shù)量方面,OpenGUI已經(jīng)支援8、16、32位元色深。

  由於其基於組合語言實(shí)現(xiàn)的核心架構(gòu),並利用多媒體加速指令集進(jìn)行最佳化,因此OpenGUI運(yùn)行速度非常快,除了可以支援32位元的機(jī)器,能夠在MS- DOS,QNX5和Linux下執(zhí)行,目前OpenGUI主要用來在這些系統(tǒng)中開發(fā)圖形應(yīng)用程式和遊戲。雖然OpenGUI非常穩(wěn)定,但可移植性因?yàn)槠浜诵哪耸鞘褂媒M合語言實(shí)作的關(guān)係,而會(huì)受到影響。

■QT/Embedded(已改名為Qtopia Core)




圖說:QT/Embedded的系統(tǒng)架構(gòu)。(資料來源:www.tutok.sk)


  Qt/Embedded是Trolltech公司的另一個(gè)產(chǎn)品,Qt也是流行的Linux桌面環(huán)境KDE 的基礎(chǔ),KDE是所有主要的Linux發(fā)行版的一個(gè)標(biāo)準(zhǔn)組件。自從1996年起,Qt開始進(jìn)入商業(yè)應(yīng)用領(lǐng)域,並且成為全世界數(shù)千種成功的應(yīng)用程式的視覺外觀基礎(chǔ)。雖然走Open Source開發(fā)路線,採用GPL授權(quán),但商業(yè)應(yīng)用的話就必需要支付授權(quán)費(fèi)。2005年年初,Trolltech 在大陸北京成立研發(fā)據(jù)點(diǎn),在亞洲語系方面的支援會(huì)有相當(dāng)大的突破,Trolltech 還是秉持雙授權(quán)(dual-licensing)與社團(tuán)推廣(community-promoting) 的機(jī)制,持續(xù)以 GPL/QPL 釋出最新的Qt技術(shù),並且累積加值服務(wù),算是業(yè)界相當(dāng)優(yōu)秀的長久經(jīng)營典範(fàn)。Qt/Embedded是Qt的嵌入式Linux介面,是完整內(nèi)建C++GUI和基於 Linux的嵌入式平臺(tái)開發(fā)工具。


  由於Qt/Embedded 並不是只針對(duì)嵌入式裝置而設(shè)計(jì)的,Qt/Embedded是來自桌上版本 (UNIX/X11、Windows,與 MacOS X 等平臺(tái))Qt圖形介面的簡化與移植。因此,開發(fā)者可以持續(xù)利用開發(fā)桌面應(yīng)用程式的經(jīng)驗(yàn),來進(jìn)行嵌入式應(yīng)用程式開發(fā),開發(fā)者不必重新學(xué)習(xí)一套新的 API,也不需要適應(yīng)新的程式設(shè)計(jì)技巧。不過這並不是說原本桌面應(yīng)用程式可以直接套用到到相對(duì)精簡的嵌入式裝置上。事實(shí)上,手持式裝置對(duì)於螢?zāi)怀叽?、圖示的拖放執(zhí)行,與記憶體資源都與桌上行系統(tǒng)有著相當(dāng)程度的需求差異。不過,Qt 與Qt/Embedded 在基本的 API 上都是一致的。

  由於針對(duì)大範(fàn)圍的應(yīng)用,Qt/Embedded API的設(shè)備開發(fā)非常廣泛。Qt/Embedded可以開發(fā)市場上多種類型的產(chǎn)品和設(shè)備,從消費(fèi)性電子(智慧型手機(jī)、網(wǎng)路終端和set-top box)到工業(yè)控制設(shè)備(如醫(yī)學(xué)成像設(shè)備、行動(dòng)訊息系統(tǒng)等)等等,都在其支援之列。這套環(huán)境提供的API和Qt/Windows與Qt/X11相同,但不需要使用到X11,取而代之的提供從硬體介面、繪圖函式庫以及完整的GUI工具。Qt/Embedded對(duì)儲(chǔ)存記憶體的需求約在800kB到3MB(x86處理器環(huán)境下)左右。其另一個(gè)特點(diǎn)就是跨平臺(tái),用Qt API開發(fā)出來的應(yīng)用程式,可以在不同的作業(yè)系統(tǒng)和視窗系統(tǒng)上執(zhí)行。

  隨著嵌入式處理器運(yùn)算能力的不斷提高,對(duì)外接設(shè)備的支援的不斷發(fā)展,嵌入式Linux系統(tǒng)的應(yīng)用也逐漸增多。Qt/Embedded延續(xù)了Qt在桌面系統(tǒng)的所有功能以外,豐富的API函式庫支援以及完整的程式編譯模型使得嵌入式Linux系統(tǒng)中的應(yīng)用程序開發(fā)更加便捷。不過由於Qt/Embedded過於完整,在記憶體佔(zhàn)用空間方面就很難下降,因此對(duì)於嵌入式裝置的硬體要求也會(huì)更高。


作者:林宗輝/DIGITIMES

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。