基于嵌入式Linux系統(tǒng)界面的研究
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1概述
1.1什么是嵌入式系統(tǒng)
嵌入式系統(tǒng)一般指非PC系統(tǒng),有計(jì)算機(jī)功能但又不稱之為計(jì)算機(jī)的設(shè)備或器材。他是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),并且軟硬件可裁減的,適用于對(duì)功能、可靠性、成本、體積、功耗等綜合性嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。
1.2嵌入式操作系統(tǒng)的發(fā)展
嵌入式技術(shù)的發(fā)展,大致經(jīng)歷了4個(gè)階段:
第一階段是以單芯片為核心的可編程控制器形式的系統(tǒng),同時(shí)具有與監(jiān)測(cè)、伺服、指示設(shè)備相配合的功能。這種系統(tǒng)大部分應(yīng)用于一些專業(yè)性極強(qiáng)的工業(yè)控制系統(tǒng)中,一般沒(méi)有操作系統(tǒng)的支持,通過(guò)匯編語(yǔ)言編程對(duì)系統(tǒng)進(jìn)行直接控制,運(yùn)行結(jié)束后清除內(nèi)存。
第二階段是以嵌入式CPU為基礎(chǔ)、以簡(jiǎn)單操作系統(tǒng)為核心的嵌入式系統(tǒng)。這一階段的操作系統(tǒng)具有一定的兼容性和擴(kuò)展性,但用戶界面不夠友好。
第三階段是以嵌入式操作系統(tǒng)為標(biāo)志的嵌入式系統(tǒng)。這一階段系統(tǒng)的主要特點(diǎn)是:嵌入式操作系統(tǒng)能運(yùn)行于各種不同類型的微處理器上,兼容性好;操作系統(tǒng)內(nèi)核精小、效率高,并且具有高度的模塊化和擴(kuò)展性;具備文件和目錄管理、設(shè)備支持、多任務(wù)、網(wǎng)絡(luò)支持、圖形窗口以及用戶界面等功能;具有大量的應(yīng)用程序接口(API),開(kāi)發(fā)應(yīng)用程序簡(jiǎn)單;嵌入式應(yīng)用軟件豐富。
第四階段是以基于Internet為標(biāo)志的嵌入式系統(tǒng),這是一個(gè)正在迅速發(fā)展的階段。目前大多數(shù)嵌入式系統(tǒng)還孤立于Internet之外,但隨著Internet的發(fā)展以及Internet技術(shù)與信息家電、工業(yè)控制技術(shù)等結(jié)合日益密切,嵌入式設(shè)備與Internet的結(jié)合將代表著嵌入式技術(shù)的真正未來(lái)。
1.3嵌入式操作系統(tǒng)的特點(diǎn)
與其他類型的操作系統(tǒng)相比,嵌入式操作系統(tǒng)具有以下一些特點(diǎn)。
(1)體積小
嵌入式系統(tǒng)有別于一般的計(jì)算機(jī)處理系統(tǒng),他不具備像硬盤(pán)那樣大容量的存儲(chǔ)介質(zhì),而大多使用閃存(FlashMemory)作為存儲(chǔ)介質(zhì)。這就要求嵌入式操作系統(tǒng)只能運(yùn)行在有限的內(nèi)存中,不能使用虛擬內(nèi)存,中斷的使用也受到限制。因此,嵌入式操作系統(tǒng)必須結(jié)構(gòu)緊湊,體積微小。
(2)實(shí)時(shí)性
大多數(shù)嵌入式系統(tǒng)都是實(shí)時(shí)系統(tǒng),而且多是強(qiáng)實(shí)時(shí)多任務(wù)系統(tǒng),要求相應(yīng)的嵌入式操作系統(tǒng)也必須是實(shí)時(shí)操作系統(tǒng)(RTOS)。實(shí)時(shí)操作系統(tǒng)作為操作系統(tǒng)的一個(gè)重要分支已成為研究的一個(gè)熱點(diǎn),主要探討實(shí)時(shí)多任務(wù)調(diào)度算法和可調(diào)度性、死鎖解除等問(wèn)題。
(3)特殊的開(kāi)發(fā)調(diào)試環(huán)境
提供完整的集成開(kāi)發(fā)環(huán)境是每一個(gè)嵌入式系統(tǒng)開(kāi)發(fā)人員所期待的。一個(gè)完整的嵌入式系統(tǒng)的集成開(kāi)發(fā)環(huán)境一般需要提供的工具是編譯/連接器、內(nèi)核調(diào)試/跟蹤器和集成圖形界面開(kāi)發(fā)平臺(tái)。其中的集成圖形界面開(kāi)發(fā)平臺(tái)包括編輯器、調(diào)試器、軟件仿真器和監(jiān)視器等。
2嵌入式Linux
嵌入式Linux是按照嵌入式操作系統(tǒng)的要求而設(shè)計(jì)的一種小型操作系統(tǒng)。由一個(gè)Kernel(內(nèi)核)及一些根據(jù)需要進(jìn)行定制的系統(tǒng)模塊組成。其Kernel很小,一般只有幾百kB左右。即使加上其他必須的模塊和應(yīng)用程序,所需的存儲(chǔ)空間也很小。他有多任務(wù)、多進(jìn)程的系統(tǒng)特征,有些還具有實(shí)時(shí)性。一個(gè)小型的嵌入式Linux系統(tǒng)只需要引導(dǎo)程序、Linux微內(nèi)核、初始化進(jìn)程3個(gè)基本元素。運(yùn)行嵌入式Linux的CPU可以是x86,Alpha,Sparc,MIPS,PPC等。與這些芯片搭配的主板都很小,與一張PCI卡大小相當(dāng),有的甚至更小。嵌入式Linux所需的存儲(chǔ)器不是軟磁盤(pán)、硬盤(pán)、Zip盤(pán)、CDROM,DVD這些眾所周知的常規(guī)存儲(chǔ)器,他使用Rom,CompactFlash,MSystems的DiskOnChip,Sony的MemoryStick,IBM的MicroDrive等體積極小與主板上的BIOS大小相近,存儲(chǔ)容量不太大的存儲(chǔ)器。他的內(nèi)存可以使用普通的內(nèi)存,也可以使用專用的RAM。與其他嵌入式操作系統(tǒng)相比,Linux的源代碼是開(kāi)放的,不存在黑箱技術(shù)。Linux作為一種可裁剪的軟件平臺(tái)系統(tǒng),是發(fā)展未來(lái)嵌入式設(shè)備產(chǎn)品的最佳資源。
3圖形用戶界面系統(tǒng)MiniGUI
3.1圖形用戶界面簡(jiǎn)介
計(jì)算機(jī)用戶界面是指計(jì)算機(jī)與其使用者之間的對(duì)話接口,是計(jì)算機(jī)系統(tǒng)的重要組成部分。計(jì)算機(jī)的發(fā)展史不僅是計(jì)算機(jī)本身處理速度和存儲(chǔ)容量飛速提高的歷史,也是計(jì)算用戶界面不斷改進(jìn)的歷史。用戶界面的重要性在于他極大地影響了最終用戶的使用,影響了計(jì)算機(jī)的推廣應(yīng)用,甚至影響了人們的工作和生活。由于開(kāi)發(fā)用戶界面的工作量極大,加上不同用戶對(duì)界面的要求也不盡相同,因此,用戶界面已成為計(jì)算機(jī)軟件研制中最困難的部分之一。
GUI在嵌入式系統(tǒng)或者實(shí)時(shí)系統(tǒng)中的地位將越來(lái)越重要,這些系統(tǒng)對(duì)GUI的基本要求包括:
①輕型、占用資源少。
②高性能。
③高可靠性。
④可配置。
3.2MiniGUI圖形用戶系統(tǒng)
3.2.1MiniGUI特色
MiniGUI由原清華大學(xué)教師魏永明先生開(kāi)發(fā),是中國(guó)人做得較好的自由軟件之一。MiniGUI是一種面向嵌入式系統(tǒng)或者實(shí)時(shí)系統(tǒng)的圖形用戶界面支持系統(tǒng)。他主要運(yùn)行于Linux控制臺(tái),實(shí)際可以運(yùn)行在任何一種具有POSIX線程支持的POSIX兼容系統(tǒng)上。MiniGUI同時(shí)也是國(guó)內(nèi)最早出現(xiàn)的幾個(gè)自由軟件項(xiàng)目之一。
MiniGUI的主要特色有:
(1)遵循LGPL條款的純自由軟件。
(2)提供了完備的多窗口機(jī)制。包括多個(gè)單獨(dú)線程中運(yùn)行的多窗口;單個(gè)線程中主窗口的附屬;對(duì)話框和預(yù)定義的控件類(按鈕、單行和多行編輯框、列表框、進(jìn)度條、工具欄等)。
(3)消息傳遞機(jī)制。
(4)多字符集和多字體支持。
(5)BMP,GIF,JPEG,PCX等常見(jiàn)圖像文件的支持。
(6)Windows的資源文件支持,如位圖、圖標(biāo)、光標(biāo)、插入符、定時(shí)器、加速鍵等。
(7)小巧
包含全部功能的庫(kù)文件大小為300kB左右。
(8)可配置
可根據(jù)項(xiàng)目需求進(jìn)行定制配置和編譯。
(9)高穩(wěn)定性和高性能。
(10)可移植性好。
(11)圖形抽象層
圖形抽象層對(duì)頂層API基本沒(méi)有影響,但大大方便了MiniGUI應(yīng)用程序的移植、調(diào)試等工作。目前包含2個(gè)圖形引擎,SVGALib和LibGGI,利用LibGGI時(shí),可在XWindow上運(yùn)行MiniGUI應(yīng)用程序,并可非常方便地進(jìn)行調(diào)試。與圖形抽象層相關(guān)的還有輸入事件的抽象層。
3.2.2MiniGUI的體系結(jié)構(gòu)
從整體結(jié)構(gòu)上看,MiniGUI是分層設(shè)計(jì)的,層次結(jié)構(gòu)如圖1所示。在最底層,GAL和IAL提供底層圖形接口以及鼠標(biāo)和鍵盤(pán)的驅(qū)動(dòng);中間層是MiniGUI的核心層,包括窗口系統(tǒng)必不可少的各個(gè)模塊;最頂層是API,即編程接口。GAL和IAL為MiniGUI提供了底層的Linux控制臺(tái)或者XWindow上的圖形接口以及輸入接口,而Pthread用于提供內(nèi)核級(jí)線程支持的C函數(shù)庫(kù)。???[!--empirenews.page--]
利用GAL和IAL,大大提高了MiniGUI的可移植性,并且使程序的開(kāi)發(fā)和調(diào)試變得更加容易??梢栽赬Window上開(kāi)發(fā)和調(diào)試自己的MiniGUI程序,通過(guò)重新編譯就可以讓MiniGUI應(yīng)用程序運(yùn)行在特殊的嵌入式硬件平臺(tái)上。
MiniGUI本身運(yùn)行在多線程模式下,他的許多模塊都以單獨(dú)的線程運(yùn)行,同時(shí),MiniGUI還利用線程來(lái)支持多窗口。從本質(zhì)上講,每個(gè)線程有一個(gè)消息隊(duì)列,消息隊(duì)列是實(shí)現(xiàn)線程數(shù)據(jù)交換和同步的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)。一個(gè)線程向消息隊(duì)列中發(fā)送消息,而另一個(gè)線程從這個(gè)消息隊(duì)列中獲取消息,同一個(gè)線程中創(chuàng)建的窗口可共享同一個(gè)消息隊(duì)列。
多線程有一定的好處,但不方便的是不同的線程共享同一個(gè)地址空間,因此,客戶線程可能會(huì)破壞系統(tǒng)服務(wù)器線程的數(shù)據(jù),但有一個(gè)重要的優(yōu)勢(shì)是,由于共享地址空間,線程之間就沒(méi)有額外的數(shù)據(jù)復(fù)制開(kāi)銷。由于MiniGUI是面向嵌入式或?qū)崟r(shí)控制系統(tǒng)的,因此,這種應(yīng)用環(huán)境下的應(yīng)用程序往往具有單一的功能,從而使得采用多線程而非多進(jìn)程模式實(shí)現(xiàn)圖形界面有了一定的實(shí)際意義,也更加符合MiniGUI之“Mini”的特色。
在多線程環(huán)境中,與多進(jìn)程間的通訊機(jī)制類似,線程之間也有交互和同步的需求。比如,用來(lái)管理窗口的線程維持全局的窗口列表,而其他線程不能直接修改這些全局的數(shù)據(jù)結(jié)構(gòu),而必須依據(jù)“先來(lái)先服務(wù)”的原則,依次處理每個(gè)線程的請(qǐng)求,這就是一般性的C/S模式。MiniGUI利用線程之間的同步操作實(shí)現(xiàn)了客戶線程和服務(wù)器線程之間的微C/S機(jī)制,之所以這樣命名,是因?yàn)榭蛻艉头?wù)器是同一進(jìn)程中的不同線程。
4MiniGUI在雷達(dá)顯示界面上的應(yīng)用
我們自主裁剪了Linux系統(tǒng),并在此基礎(chǔ)上安裝了基于SVGALib圖形引擎的MiniGUI輕量級(jí)圖形用戶界面支持系統(tǒng),基于MiniGUI編寫(xiě)了圖形用戶界面雷達(dá)終端顯示應(yīng)用程序。
5結(jié)語(yǔ)
嵌入式Linux系統(tǒng)是源代碼開(kāi)放的一種可裁剪的軟件平臺(tái)系統(tǒng),不存在黑箱技術(shù)。他的小巧、穩(wěn)定、多任務(wù)、可配置、高性能、高可靠性、硬件的良好支持和價(jià)格的優(yōu)勢(shì),尤其網(wǎng)絡(luò)功能的強(qiáng)大,使他迅速成長(zhǎng)發(fā)展,受到廣大開(kāi)發(fā)人員的青睞。
MiniGUI是國(guó)人自行開(kāi)發(fā)研制的適合嵌入式系統(tǒng)的輕量級(jí)圖形用戶界面支持系統(tǒng),他采用WIN32體系架構(gòu),提供了完備的多窗口機(jī)制、對(duì)話框和預(yù)定義的控件類,消息傳遞機(jī)制等,大大地簡(jiǎn)化了開(kāi)發(fā)人員的界面設(shè)計(jì)。
但是,國(guó)產(chǎn)的嵌入式操作系統(tǒng)在技術(shù)含量、兼容性、市場(chǎng)運(yùn)作模式等方面也還有很多工作要做,我們應(yīng)該在跟蹤國(guó)外嵌入式操作系統(tǒng)的最新技術(shù)的同時(shí),堅(jiān)持自主產(chǎn)權(quán),力爭(zhēng)找到自己的突破點(diǎn),探索出一條自己的發(fā)展道路。Linux正提供了一個(gè)這樣的平臺(tái)。