- 相關(guān)推薦
嵌入式Linux系統中的GUI系統的研究與移植
來(lái)源:?jiǎn)纹瑱C及嵌入式系統應用 作者:北京航空航天大學(xué) 徐廣毅 張曉林 崔迎煒 楊欣昕 吳小偉摘要:針對嵌入式Linux系統中幾種常見(jiàn)的GUI(Graphic User Interface)系統,討論嵌入式GUI實(shí)現的底層技術(shù)方式;詳細分析Microwindows、MiniGUI、Qt/Embedded等三種GUI的實(shí)現特點(diǎn)、體系結構、API接口。結合這三種嵌入式GUI在以Motorola i,MX1為核心的實(shí)際應用系統中移植開(kāi)發(fā)的問(wèn)題,討論移植技術(shù)與中文化技術(shù)。
引言
嵌入式GUI為嵌入式系統提供了一種應用于特殊場(chǎng)合的人們交互接口。嵌入式GUI要求簡(jiǎn)單、直觀(guān)、可靠、占用資源小且反應快速,以適應系統硬件資源有限的條件。另外,由于嵌入式系統硬件本身的特殊性,嵌入式GUI應具備高度可移植性與可裁減性,以適應不同的硬件條件和使用需求?傮w來(lái)講,嵌入式GUI具備以下特點(diǎn):
*體積;
*運行時(shí)耗用系統資源;
*上層接口與硬件無(wú)關(guān),高度可移植;
*高可靠性;
*在某些應用場(chǎng)合應具備實(shí)時(shí)性。
1 基于嵌入式Linux的GUI系統底層實(shí)現基礎
一個(gè)能夠移植到多種硬件平臺上的嵌入式GUI系統,應用至少抽象出兩類(lèi)設備:基于圖形顯示設備(如VGA卡)的圖形抽象層GAL(Graphic Abstract Layer),基于輸入設備(如鍵盤(pán),觸摸層等)的輸入抽象層IAL(Input Abstract Layer)。GAL層完成系統對具體的顯示硬件設備的操作,極大程度上隱蔽各種不同硬件的技術(shù)實(shí)現細節,為誚程序開(kāi)發(fā)人員提供統一的圖形編程接口。IAL層則需要實(shí)現對于各類(lèi)不同輸入設備的控制操作,提供統一的調用接口。GAL層與IAL層的設計概念,可以極大程序地提高嵌入式GUI的可移植性,如圖1所示。
目前應用于嵌入式Linux系統中比較成熟,功能也比較強大的GUI系統底層支持庫有SVGA lib、LibGGI、Xwindow、framebuffer等。
2 三種嵌入式GUI系統的分析與比較
2.1 Microwindows
Microwindows是一個(gè)典型的基于Server/Clinent體系結構的GUI系統,基本分為三層,如圖2所示。
最底層是面向圖形顯示和鍵盤(pán)、鼠標或觸摸屏的驅動(dòng)程序;中間層提供底層硬件的抽象接口,并進(jìn)行窗口管理;最高層分別提供兼容于X Window和ECMA APIW(Win32子集)的API。其中使用Nano-X接口的API與X接口兼容,但是該接口沒(méi)有提供窗口管理,如窗口移動(dòng)和窗口剪切等高級功能,系統中需要首先啟動(dòng)nano-X的Server程序nanoxserver和窗口管理程序nanowm。用戶(hù)程序連接nano-X的Server獲得自身的窗口繪制操作。使用ECMA APIW編寫(xiě)的應用程序無(wú)需nanox-server和nanowm,可直接運行。
Microwindows提供了相對完善的圖形功能和一些高級的特性,如Alpha混合、三維支持和TrueType字體支持等。該系統為了提高運行速度,也改進(jìn)了基于Socket套接字的X實(shí)現模式,采用了基于消息機制的Server/Client傳輸機制。Microwindows也有一些通用的窗口控件,但其圖形引擎存在許多問(wèn)題,可以歸納如下:
*無(wú)任何硬件加速能力;
*圖形引擎中存在許多低效算法,如在圓弧圖函數的逐點(diǎn)判斷剪切的問(wèn)題。
由于該項目缺乏一個(gè)強有力的核心代碼維護人員,2003年Microwindows推出版本0.90后,該項目的發(fā)展開(kāi)始陷于停滯狀態(tài)。
2.2 MiniGUI
MiniGUI是由國內自由軟件開(kāi)發(fā)人員設計開(kāi)發(fā)的,目標是為基于Linux的實(shí)時(shí)嵌入式系統提供一個(gè)輕量級的圖形用戶(hù)界面支持系統。MiniGUI的體系架構如圖3所示。
MiniGUI分為最底層的GAL層和IAL層,向上為基于標準POSIX接口中pthread庫的Mini-thread架構和基于Server/Client的Mini-Lite架構。其中前者受限于thread模式對于整個(gè)系統的可靠性影響——進(jìn)程中某個(gè)thread的意外錯誤可能導致整個(gè)進(jìn)程的崩潰,該架構應用于系統功能較為單一的場(chǎng)合。Mini-Lite應用于多進(jìn)程的應用場(chǎng)合,采用多進(jìn)程運行方式設計的Server/Client架構能夠較好地解決各個(gè)進(jìn)程之間的窗口管理、Z序剪切等問(wèn)題。MiniGUI還有一種從Mini-Lite衍生出的standalone運行模式。與Lite架構不同的是,standalone模式一次只能以窗口最大化的方式顯示一個(gè)窗口。這在顯示屏尺寸較小的應用場(chǎng)合具有一定的應用意義。
MiniGUI的GAL層技術(shù)SVGA lib、LibGGI、基于framebuffer的native圖形引擎以及啞圖形引擎等,對于Trolltech公司的QVFB在X Window下也有較好的支持。IAL層則支持Linux標準控制臺下的GPM鼠標服務(wù)、觸摸屏、標準鍵盤(pán)等。
MiniGUI下豐富的控件資源也是MiniGUI的特點(diǎn)之一。當前MiniGUI的最新版本是1.3.3。該版本的控件中已經(jīng)添加了窗口皮膚、工具條等桌面GUI中的高級控件支持。
2.3 QT/Embedded
Qt/Embedded是著(zhù)名的Qt庫開(kāi)發(fā)商Trolltech公司開(kāi)發(fā)的面向嵌入式系統的Qt版本。因為Qt是KDE等項目使用的GUI支持庫,許多基于Qt的X Window程序因此可以非常方便地移植到Qt/Embedded上。Qt/Embedded同樣是
【嵌入式Linux系統中的GUI系統的研究與移植】相關(guān)文章:
嵌入式系統中“軟外設”的研究03-19
嵌入式Linux系統及其應用前景03-18
嵌入式Linux系統下Microwindows的應用03-19
嵌入式系統中的CACHE問(wèn)題03-19
嵌入式系統中的線(xiàn)性Flash文件系統設計03-21
嵌入式ARM-Linux水產(chǎn)養殖監控系統的設計03-07
嵌入式系統中的Flash存儲管理03-18