嵌入式Linux環(huán)境下MiniGUI的研究與移植
前言
近年來隨著嵌入式設(shè)備與市場需求的廣泛結(jié)合,手機(jī)、PDA、DVD播放機(jī)等產(chǎn)品的應(yīng)用對可視化操作界面的簡潔和方便提出了更高的要求,這都需要一個穩(wěn)定可靠的高性能GUI系統(tǒng)來提供支持。圖形用戶界面(Graphic User Interface,簡稱GUI)的廣泛流行是當(dāng)今計(jì)算機(jī)技術(shù)的重要成就之一,它極大地方便了非專業(yè)用戶的使用,人們可以通過窗口、菜單方便地進(jìn)行操作。由于嵌入式系統(tǒng)實(shí)時性要求高,同時嵌入式系統(tǒng)硬件配置又有限,所以對輕型GUI的需求更加突出。另外,嵌入式系統(tǒng)往往是一種訂制設(shè)備,它們對GUI的需求也各不相同,因此GUI也必須是可訂制的。綜上所述,嵌入式系統(tǒng)對GUI的基本要求應(yīng)包括輕型、占用資源少、高性能、高可靠性以及可配置。MiniGUI是目前比較常用的幾種GUI系統(tǒng)之一,與其他的GUI相比,MiniGUI最顯著的特點(diǎn)就是輕型、占用資源少,而且在這幾年的發(fā)展里,MiniGUI已經(jīng)非常成熟和穩(wěn)定了,在許多產(chǎn)品和項(xiàng)目中都已得到了實(shí)際應(yīng)用。
1 MiniGUI的特點(diǎn)和體系結(jié)構(gòu)
1. 1 MiniGUI的特點(diǎn)
MiniGUI是由原清華大學(xué)教師魏永明主持開發(fā)的輕量級圖形系統(tǒng),是一種面向嵌入式或?qū)崟r系統(tǒng)的圖形用戶界面支持系統(tǒng)。它遵循GPL公約,是基于SVGALib及LinuxThread庫的多窗口GUI支持系統(tǒng)。能跨多種操作系統(tǒng),主要運(yùn)行于linux及一切具有POSIX線程支持的POSIX兼容系統(tǒng),包括普通嵌入式Linux、eCos、uC/OS-II、VxWorks等系統(tǒng),是國內(nèi)最早的自由軟件之一。
MiniGUI的主要特點(diǎn)有:
(1) 遵循GPL條款的純自由軟件;
(2) 提供了完備的多窗口機(jī)制;
(3) 多字符集和多字體支持,目前支持ISO8859-1、GB2312及Big5等字符集,并且支持各種光柵字體和TrueType、Type1等矢量字體;
(4) 全拼和五筆等漢字輸入法支持;
(5) BMP、GIF、JPEG及PCX等常見圖像文件的支持;
(6) Windows的資源文件支持,如位圖、圖標(biāo)、光標(biāo)、插入符、定時器及加速鍵等;
(7) 可移植性好。
1.2 MiniGUI的體系結(jié)構(gòu)
1.2.1多線程的分層設(shè)計(jì)
從整體結(jié)構(gòu)上看,MiniGUI是分層設(shè)計(jì)的,結(jié)構(gòu)如圖1所示。在最底層,GAL(圖形抽象層)和IAL(輸入抽象層)及鼠標(biāo)和鍵盤的驅(qū)動;中間層是MiniGUI的核心層,包括窗口系統(tǒng)必不可少的各個模塊;最頂層是API,即編程接口。GAL和IAL為MiniGUI提供了底層的Linux控制臺或者X Window上的圖形接口以及輸入接口,而Pthread用于提供內(nèi)核級線程支持的C函數(shù)庫。利用GAL和IAL,大大提高了MiniGUI的可移植性,并且使程序的開發(fā)和調(diào)試變得更加容易??梢栽赬 Window上開發(fā)和調(diào)試自己的MiniGUI程序,通過重新編譯就可以讓MiniGUI應(yīng)用程序運(yùn)行在特殊的嵌入式硬件平臺上。
MiniGUI本身運(yùn)行在多線程模式下,它的許多模塊都以單獨(dú)的線程運(yùn)行,同時,MiniGUI還利用線程來支持多窗口。從本質(zhì)上講,每個線程有一個消息隊(duì)列,消息隊(duì)列是實(shí)現(xiàn)線程數(shù)據(jù)交換和同步的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)。一個線程向消息隊(duì)列中發(fā)送消息,而另一個線程從這個消息隊(duì)列中獲取消息,同一個線程中創(chuàng)建的窗口可共享同一個消息隊(duì)列。一個線程向消息隊(duì)列中發(fā)送消息,而另一個線程從這個消息隊(duì)列中獲取消息,同一個線程中創(chuàng)建的窗口可共享同一個消息隊(duì)列。利用消息隊(duì)列和多線程之間的同步機(jī)制,可以實(shí)現(xiàn)下面要講到的微客戶/服務(wù)器機(jī)制。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論