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