基于Linux的嵌入式操作系統(tǒng)的研究與設計_第1頁
基于Linux的嵌入式操作系統(tǒng)的研究與設計_第2頁
基于Linux的嵌入式操作系統(tǒng)的研究與設計_第3頁
基于Linux的嵌入式操作系統(tǒng)的研究與設計_第4頁
基于Linux的嵌入式操作系統(tǒng)的研究與設計_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、武 漢 大 學碩 士 學 位 論 文基于Linux的嵌入式操作系統(tǒng)的研究與設計Research and Design of Embedded Operating System Based on Linux第一章 引言PAGE - -PAGE III摘 要在后PC時代,對嵌入式系統(tǒng)的研究與開發(fā)成為當前的一個熱點,嵌入式系統(tǒng)蘊含著巨大的市場需求,其應用已滲透到了各行各業(yè)。Linux是一種通用而且適合于嵌入式系統(tǒng)的操作系統(tǒng),它既可以嵌入到一個非常小的系統(tǒng)中處理簡單的任務,也可以組合起來處理非常復雜的任務。因此,對嵌入式Linux的研究具有非常重要的意義。通過對Linux內(nèi)核源代碼和嵌入式系統(tǒng)特殊性的

2、分析,作者給出了嵌入式Linux的開發(fā)步驟并討論了在開發(fā)過程中的一些重要問題。由于Linux實時性能的缺陷,而嵌入式系統(tǒng)往往要應用到實時性能要求很高的環(huán)境,作者對Linux進程管理部分進行了深入分析,提出了添加實時內(nèi)核,改進實時調(diào)度方式等方法來增強Linux的實時性能,使其適應嵌入式系統(tǒng)的實時需求。本文對Linux文件管理和虛擬文件系統(tǒng)進行了分析,比較了各種可用于嵌入式系統(tǒng)的文件系統(tǒng),并提出了構(gòu)建嵌入式文件系統(tǒng)的基本方法。根據(jù)嵌入式系統(tǒng)存儲空間小和實時性要求高的特點,作者對Linux的虛擬內(nèi)存機制進行了改造,并提出了兩種改進方案,一種是通過直接修改內(nèi)核源代碼來徹底去掉虛擬內(nèi)存機制,另一種是通過

3、將交換空間置零的方法來消除虛擬內(nèi)存機制的不利影響。MiniGUI是一個優(yōu)秀的圖形用戶界面,本文詳細分析了MiniGUI的原理和機制,并對基于MiniGUI的圖形應用開發(fā)做了簡單討論。最后,本文還詳細討論了Linux的設備管理機制,并對設備驅(qū)動程序的開發(fā)方式進行了歸納總結(jié)。通過舉例說明了字符設備的驅(qū)動程序的開發(fā)方式,對塊設備和網(wǎng)絡設備的驅(qū)動程序開發(fā)也進行了簡要介紹。關鍵字:嵌入式Linux實時虛擬內(nèi)存管理MiniGUI設備驅(qū)動程序AbstractIn the pervasive computing, research and development for embedded systems ha

4、ve become a hotspot currently. The huge market demand is latent in embedded systems, and embedded systems have already applied to every walk of life. Linux is a versatile and cost effective operating system for embedded systems. It can be embedded in a surprisingly small system to handle simple task

5、s and scaled up to handle more complex tasks. Therefore, the research for embedded linux is very important. Through the analysis of linux kernel source code and specificity of embedded systems, the author presents steps of development for embedded linux and discusses some important problem which wil

6、l be met in developing. Because of the shortage of real-time performance, and because embedded systems are applied to the environment which requires a very high real-time performance, the author analyzes process management of linux thoroughly. Moreover, the author present the approach of strengtheni

7、ng linux real-time performance through adding real-time kernel and reforming real-time scheduling. By these ways, linux will meet the real-time demand of embedded systems. This term analyzes file system management and virtual file system of linux and hase a comparitson among many file system of embe

8、dded systems. Then, the author present the fundamental approach of building embedded file system. According to the feature of small memory space and high real-time demand of embedded system, the author reforms virtual memory management mechanism of linux and present two reforming approach: one is th

9、at virtual memory management mechanism is got rid of through modifying linux kernel source code; the other is that virtual memory management mechanism is taken off through putting the size of switch space into zero.MiniGUI is a excellent graphics user interface. This term analyzes the principle and

10、mechanism of MiniGUI in detail, and discusses the development of MiniGUI applications. At last, this term discusses the device management mechanism of linux, and concludes the developing approaches of device driver. Through a example the developing approaches of character device driver are explained

11、, and the developing approaches of block device driver and network device also are introduced briefly.Keywords: embedded linux, real-time, virtual memory management, MiniGUI,device driver目 錄摘 要IAbstractII引 言第1章 緒 論11.1 嵌入式系統(tǒng)概況11.2 嵌入式操作系統(tǒng)的特點和發(fā)展31.3 嵌入式Linux的優(yōu)勢和發(fā)展現(xiàn)狀41.4 嵌入式Linux系統(tǒng)研究中的問題6第2章 嵌入式Linux系

12、統(tǒng)的構(gòu)建82.1 嵌入式Linux的開發(fā)流程82.2 構(gòu)建嵌入式Linux的關鍵問題92.3 嵌入式Linux開發(fā)的步驟11第3章 嵌入式Linux實時性能的改造183.1 Linux進程管理的實時性能分析183.2 Linux在實時性方面的缺陷和關鍵問題203.3 嵌入式Linux實時化改造方法21第4章 嵌入式Linux系統(tǒng)的文件系統(tǒng)264.1 Linux的文件系統(tǒng)管理264.2 各種不同的文件系統(tǒng)274.3 適合嵌入式環(huán)境的文件系統(tǒng)30第5章 嵌入式Linux系統(tǒng)的存儲管理315.1 Linux的存儲管理315.2 Linux內(nèi)存管理用于嵌入式系統(tǒng)的問題355.3 改進Linux的存儲管

13、理36第6章 嵌入式Linux中的圖形用戶界面406.1 MiniGUI簡介406.2 MiniGUI的兩個版本426.3 基于Linux 和 MiniGUI 的嵌入式系統(tǒng)軟件開發(fā)45第7章 嵌入式Linux下設備驅(qū)動程序的開發(fā)517.1 Linux設備管理簡介517.2 設備驅(qū)動程序的開發(fā)53第8章 結(jié)束語59參考文獻60致 謝62引 言隨著計算機技術的發(fā)展,嵌入式系統(tǒng)已成為計算機領域的一個重要組成部分。嵌入式系統(tǒng)的廣泛應用,已經(jīng)深入到我們?nèi)粘I钪?,在手機、PDA、機頂盒、汽車、微波爐、自動售貨機、醫(yī)療儀器、信息家電等方面都有嵌入式系統(tǒng)的身影。事實上,嵌入式系統(tǒng)在數(shù)量上已經(jīng)遠遠超過了各種通

14、用計算機,并將在信息產(chǎn)業(yè)中占有越來越重要的位置。由于Linux具有低費用、高性能的特點,使Linux系統(tǒng)成為嵌入式操作系統(tǒng)的新寵。理想的嵌入式操作系統(tǒng)的特點是:適應于多種CPU和多種硬件平臺;性能穩(wěn)定,剪裁性很好;開法和使用都很容易,生成的代碼質(zhì)量高,可靠性好;有一定的實時處理能力,并且能接入Internet。而所有這些特點Linux都具有,這些優(yōu)勢使Linux成為了嵌入式操作系統(tǒng)的首選。嵌入式Linux的開發(fā)與應用在國外已經(jīng)是如火如荼了,許多Linux的改良品種已被開發(fā)出來并應用于各種嵌入式系統(tǒng)。它們包括RTLinux(實時Linux)、clinux(用于非 MMU 設備的 Linux)、M

15、ontavista Linux(用于ARM、MIPS、PPC 的 Linux 分發(fā)版)、ARM-Linux(ARM 上的 Linux)和其它 Linux 系統(tǒng)。在國內(nèi),也出現(xiàn)了幾個有代表性的優(yōu)秀嵌入式Linux系統(tǒng),紅旗嵌入式Linux就是其中一個典型的例子。本文作者在攻讀碩士學位研究生階段一直在從事車載GPS導航系統(tǒng)和車載嵌入式平臺等相關研究和開發(fā)工作,并在這些工作中深刻體會到開發(fā)滿足特定需求、擁有自主版權(quán)的嵌入式操作系統(tǒng)的必要性。作者通過對Linux內(nèi)核源代碼和嵌入式系統(tǒng)特點的分析,對嵌入式Linux的設計與開發(fā)做了深入的探討,并對嵌入式環(huán)境下文件系統(tǒng)的選擇與開發(fā)、實時性能的提高、內(nèi)存管理

16、的改造提出了一些看法,對嵌入式系統(tǒng)GUI和驅(qū)動程序的開發(fā)進行了介紹和歸納。由于時間的限制,加之本人的水平有限,不足之處在所難免,希望老師和同學不吝指正?;贚inux的嵌入式操作系統(tǒng)的研究與設計 PAGE 63第1章 緒 論隨著多媒體技術、通訊技術相結(jié)合的信息時代的快速發(fā)展和互聯(lián)網(wǎng)的廣泛應用。計算機、通信、消費電子一體化趨勢日益明顯,我們也從時代過渡到了后時代。在當前的數(shù)字信息技術和網(wǎng)絡技術高速發(fā)展的后時代,嵌入式技術越來越和人們的生活緊密結(jié)合。嵌入式系統(tǒng)可存在于生活的各方面,從家里的電視機、洗衣機等家電,到汽車等交通工具,到辦公室里的遠程會議系統(tǒng)等等,都屬于可以使用嵌入式技術開發(fā)和改造的產(chǎn)品

17、。因此,研究與嵌入式系統(tǒng)有關的關鍵技術嵌入式操作系統(tǒng)有著相當重要的實際意義。1.1 嵌入式系統(tǒng)概況嵌入式系統(tǒng)(Embedded System)被定義為:以應用為中心,以計算機技術為基礎,軟件硬件可裁剪,適應對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統(tǒng)。嵌入式系統(tǒng)是將應用程序和操作系統(tǒng)與計算機硬件集成在一起的系統(tǒng)。簡單的說就是系統(tǒng)的應用軟件與系統(tǒng)的硬件一體化,類似于BIOS的工作方式。這種系統(tǒng)具有軟件代碼小,高度自動化,響應速度快等特點,特別適應于要求實時的和多任務的體系。嵌入式系統(tǒng)早在20世紀60年代就出現(xiàn)了。在通信領域中,嵌入式系統(tǒng)被用來控制電話的電子式機械交換,并被稱為 “存儲

18、程控控制系統(tǒng)”。嵌入式系統(tǒng)的真正發(fā)展是在微處理器問世之后。微處理器的廣泛應用形成了一個廣闊的嵌入式應用市場,計算機廠家開始大量的以插件方式向用戶提供OEM產(chǎn)品,在由用戶根據(jù)自己的需要選擇一套適合的CPU板、存儲器板以及各式I/O插件板,從而構(gòu)成專用的嵌入式計算機系統(tǒng),并將其嵌入到自己的系統(tǒng)設備中。隨著微電子工藝水平的提高,單片機出現(xiàn)了并成為嵌入式計算機系統(tǒng)異軍突起的一支新秀。其后發(fā)展的DSP產(chǎn)品進一步提升了嵌入式計算機系統(tǒng)的技術水平。20世紀90年代,在分布控制、柔性制造、數(shù)字化通信和信息家電等巨大需求的牽引力下,嵌入式系統(tǒng)進一步加速發(fā)展,并迅速地滲入到消費電子、醫(yī)用電子、智能控制、通信電子、

19、儀器儀表、交通運輸?shù)雀鞣N領域。嵌入式系統(tǒng)的特征可分為以下幾個部分:1. 硬件特征嵌入式系統(tǒng)是面向用戶、面向產(chǎn)品、面向應用的,如果獨立于應用自行發(fā)展,則會失去市場。嵌入式處理器的功耗、體積、成本、可靠性、速度、處理能力、電磁兼容性等方面均受到應用要求的制約,這些也是各個半導體廠商之間競爭的熱點。和通用計算機不同,嵌入式系統(tǒng)的硬件和軟件都必須高效率地設計,量體裁衣、去處冗余,力爭在同樣的硅片面積上實現(xiàn)更高的性能,這樣才能在具體應用對處理器的選擇面前更具有競爭力。嵌入式系統(tǒng)中的軟件,一般都固化在只讀存儲器中,而不是以磁盤為載體,可以隨意更換,所以嵌入式系統(tǒng)的應用軟件生命周期也和嵌入式產(chǎn)品一樣長,而且

20、更強調(diào)可繼承性和技術銜接性。2. 系統(tǒng)軟件和應用軟件嵌入式處理器的應用軟件是實現(xiàn)嵌入式系統(tǒng)功能的關鍵,對嵌入式處理器系統(tǒng)軟件和應用軟件的要求也和通用計算機不同。(1) 軟件要求固態(tài)化存儲(2) 軟件代碼高質(zhì)量、高可靠性(3) 系統(tǒng)軟件的高實時性是基本要求(4) 多任務操作系統(tǒng)是知識集成的平臺和走向工業(yè)標準化道路的基礎3. 開發(fā)工具和環(huán)境嵌入式系統(tǒng)本身不具備自舉開發(fā)能力,必須有一套開發(fā)工具和環(huán)境才能進行開發(fā)。4. EOS(嵌入式操作系統(tǒng))開發(fā)平臺對于嵌入式系統(tǒng),應用程序可以沒有操作系統(tǒng)直接在芯片上運行,但是為了合理地調(diào)度多任務,利用系統(tǒng)資源、系統(tǒng)函數(shù)、以及和專家?guī)旌瘮?shù)接口,用戶必須自行選配EOS

21、開發(fā)平臺,這樣才能保證程序執(zhí)行的實時性、可靠性,并減少開發(fā)時間,保障軟件質(zhì)量。一個優(yōu)秀的EOS是嵌入式系統(tǒng)成功的關鍵。1.2 嵌入式操作系統(tǒng)的特點和發(fā)展嵌入式操作系統(tǒng)主要分為以下三種類型:1. 非實時嵌入式操作系統(tǒng)這類操作系統(tǒng)不提供硬實時功能。如果必須嚴格滿足時間的限制,這類操作系統(tǒng)就不適合。其中的系統(tǒng)調(diào)用為不需要實時相應的任務提供進程管理、內(nèi)存管理以及I/O管理。2. 實時操作系統(tǒng)這類操作系統(tǒng)為獲得實時的時間期限提供必要的系統(tǒng)調(diào)用。3. 移動/手持式操作系統(tǒng)調(diào)整到適于移動環(huán)境的操作系統(tǒng)稱為移動/手持式操作系統(tǒng)。但是,很多實時操作系統(tǒng)也可以用作移動/手持式操作系統(tǒng)。嵌入式操作系統(tǒng)并不是簡單嵌入

22、的操作系統(tǒng),它與通常意義上的操作系統(tǒng)有一定的區(qū)別。嵌入式操作系統(tǒng)負責嵌入式系統(tǒng)的全部軟、硬資源的分配、調(diào)度工作,控制協(xié)調(diào)并發(fā)活動,它必須體現(xiàn)所在系統(tǒng)的特征,能夠通過裝卸某些模塊來達到系統(tǒng)所要求的功能。嵌入式操作系統(tǒng)具有如下一些特征:小巧、實時性、可裝卸、固化代碼、弱交互性、強穩(wěn)定性和統(tǒng)一的接口。簡單的嵌入式系統(tǒng)一般并不使用操作系統(tǒng),只包含一些控制流程,但是當嵌入式系統(tǒng)所提供的功能復雜化之后(如:圖形用戶界面和網(wǎng)絡支持等),簡單的流程控制就不能滿足系統(tǒng)的要求,這時就必須考慮使用操作系統(tǒng)做系統(tǒng)軟件。這時,嵌入式操作系統(tǒng)(Embedded Operating System ,EOS)就應運而生。一個

23、最小的嵌入式系統(tǒng)僅需如下基本組成部分:1. 一個用作引導的可用設施(工具)2. 一個具備內(nèi)存管理,進程管理,和定時器服務的Linux微內(nèi)核3. 一個初始進程為了讓上面的最小嵌入式系統(tǒng)變得有一定實用性,尚需加上一些東西:1. 硬件的驅(qū)動程序2. 一個或幾個應用進程以提供必要的應用功效隨著對系統(tǒng)要求的增加,也許還要用到下面這些組件1. 一個文件系統(tǒng)(或許放在ROM或RAM中)2. TCP/IP 網(wǎng)絡協(xié)議棧3. 一個磁盤用來存放半易失性數(shù)據(jù)和提供交換能力隨著EOS的廣泛應用,業(yè)界已推出一些應用比較成功的EOS產(chǎn)品。隨著各種應用的出現(xiàn),EOS也從單一的弱功能向高專業(yè)化的強功能方向發(fā)展,歸納起來EOS應

24、該有以下幾個特點:小的系統(tǒng)內(nèi)核、較強的實時性、多任務功能、能夠提供各種設備驅(qū)動程序、提供圖形界面、提供TCP/IP、PPP等協(xié)議支持。嵌入式OS 比PC的OS相對簡單,但由于各種嵌入式系統(tǒng)產(chǎn)品中包含不相同的特殊需求,致使這類系統(tǒng)中使用的OS不下幾百種,如Windows CE、Palm OS、VxWork、PSOS、UNX、PowerTV、JavaOS、LynxOS和Nucleus等。至今仍有50%的開發(fā)者使用自行開發(fā)的OS。目前,市面上這些商業(yè)性嵌入式系統(tǒng)都在努力地為自己爭取著嵌入式市場的份額。但是,這些專用操作系統(tǒng)均屬于商業(yè)化產(chǎn)品,價格昂貴;而且,由于它們各自的源代碼不公開,使得每個系統(tǒng)上的

25、應用軟件與其它系統(tǒng)都無法兼容。并且,由于這種封閉性還導致了商業(yè)嵌入式系統(tǒng)在對各種設備的支持方面存在很大的問題,使得對它們的軟件移植變得很困難。在嵌入式這個IT產(chǎn)業(yè)的新的關鍵領域,Linux操作系統(tǒng)適時地出現(xiàn)在了國際和國內(nèi)各嵌入式廠商面前,由于Linux自身諸多優(yōu)勢,吸引了許多開發(fā)商的目光,成為嵌入式操作系統(tǒng)的新寵。它的出現(xiàn)無疑為國家發(fā)展嵌入式操作系統(tǒng)事業(yè)提供了一個極有吸引力的機會。1.3 嵌入式Linux的優(yōu)勢和發(fā)展現(xiàn)狀Linux是一種UNIX類操作系統(tǒng)。它兼容POSIX 1003.1標準,并包含了UNIX System V與BSD 4.3的大部分特征,如多任務支持、多用戶支持、多處理器支持、

26、跨平臺支持、按需調(diào)入執(zhí)行、分頁機制、動態(tài)外存緩存、共享庫支持、POSIX 1003.1支持、多種不同格式可執(zhí)行文件支持、內(nèi)存保護模式、支持不同種類的文件系統(tǒng)、TCP/IP,SLIP和PPP支持等。Linux內(nèi)核的功能以及它和GPL(通用公共許可證)的結(jié)合,也是許多軟件開發(fā)人員相信這是一個有前途的項目,并開始加入到內(nèi)核的開發(fā)工作中。他們將GUN項目的C庫、gcc、Emacs、bash等很快移植到Linux內(nèi)核中,并于BSD UNIX以及MIT的XII結(jié)合,使整個Linux操作系統(tǒng)得以很快形成,而且建立在穩(wěn)固的基礎之上。由于Linux系統(tǒng)本身采用徹底開放、注重特性的方法進行設計,Linux內(nèi)核的新

27、版本推出速度非常得快?,F(xiàn)在正在廣泛使用的穩(wěn)定的Linux內(nèi)核2.2.X版本以及最近推出的2.4版本,就充分顯示了Linux開發(fā)隊伍的非凡的創(chuàng)造力和協(xié)作開發(fā)模式的價值。Linux是遵循GPL規(guī)則的多任務操作系統(tǒng),源碼公開、價格低廉、功能強大、應用豐富。嵌入式Linux是指在標準Linux基礎上經(jīng)過裁剪、修改,適用于嵌入式系統(tǒng)的專用Linux系統(tǒng)。Linux作為嵌入式操作系統(tǒng)的優(yōu)勢表現(xiàn)在以下幾個方面:1. 免許可證費用2. 有很高的穩(wěn)定性3. 強大的網(wǎng)絡功能4. 豐富的開發(fā)工具5. 大量的文擋Linux自身的特點完全能夠滿足嵌入式操作系統(tǒng)的基本要求。嵌入式系統(tǒng)要求操作系統(tǒng)滿足它的實時性和多任務性。

28、勿庸置疑,Linux是一個優(yōu)秀的多任務操作系統(tǒng);另外從Linux的進程調(diào)度來看,它包含三個策略,即非實時,實時先進先出和實時基于優(yōu)先權(quán)輪轉(zhuǎn)法。在這兩點上,Linux是滿足嵌入式系統(tǒng)的要求的。嵌入式系統(tǒng)要求操作系統(tǒng)具有高效性和健壯性。Linux的內(nèi)核功能可以被劃分為若干個獨立的功能模塊,這些模塊可以按需求來加載,所以內(nèi)核是可以裁剪的。Linux內(nèi)核的組織結(jié)構(gòu)是整體式結(jié)構(gòu),由很多過程組成,每個過程可以獨立編譯,然后用連接程序?qū)⑵溥B接在一起成為一個單獨的目標程序,沒有任何程度的信息隱藏,這種結(jié)構(gòu)的內(nèi)部結(jié)構(gòu)簡單,子系統(tǒng)間易于訪問,因此內(nèi)核的工作效率較高而且很穩(wěn)定。內(nèi)核的各個模塊通過一些獨特的機制使整個

29、系統(tǒng)高效運行。Linux支持將某些模塊常駐內(nèi)存。通過將應用程序和內(nèi)核同時儲留在內(nèi)存中就可以解決嵌入式系統(tǒng)沒有磁盤的問題。Linux強大的功能還可以為嵌入式系統(tǒng)提供TCP/IP等網(wǎng)絡協(xié)議和Internet客戶和服務器軟件、圖形用戶界面、良好的移植性、靈活而強大的設備驅(qū)動和完善的開發(fā)調(diào)試工具。這些都說明了Linux用于嵌入式系統(tǒng)是完全可行的,并具有廣泛的應用前景。目前,國外不少大學、研究機構(gòu)和知名公司都加入了嵌入式Linux的開發(fā)工作,較成熟的嵌入式Linux產(chǎn)品不斷涌現(xiàn),如RT-Linux、Embedix、uClinux等。RT-Linux是由美國新墨西哥理工學院開發(fā)的基于標準Linux的嵌入式

30、操作系統(tǒng)。它提供了一個精巧的實時內(nèi)核,并把標準的Linux核心作為實時核心的一個進程同用戶的實時進程一起調(diào)度,這樣做使得對Linux的改動量最小,充分利用了Linux下現(xiàn)有的豐富軟件資源。Embedix是由嵌入式Linux行業(yè)主要廠商之一Lineo推出的,它提供了超過25種的Linux系統(tǒng)服務并可以免費獲得。Lineo還將計劃推出Embedix的開發(fā)調(diào)試工具包,基于圖形界面的瀏覽器等。可以說,Embedix是一種較完整的嵌入式Linux解決方案。UClinux是專門用于微型控制領域的嵌入式Linux操作系統(tǒng),它已經(jīng)被成功的移植到了很多平臺上。值得一提的是,在國內(nèi)嵌入式Linux也得到的很大的重

31、視,并在迅速發(fā)展。廣州博利思軟件公司推出的Pocketix和中科院自行開發(fā)的紅旗嵌入式Linux等就是最好的證明。曾被媒體炒的火熱的維納斯與女媧之爭,是用戶認識到了嵌入式操作系統(tǒng)領域的巨大商機。據(jù)預測,我國信息家電產(chǎn)品市場規(guī)模2003年將達到2000億至2500億元規(guī)模。由于Linux開放源碼的特點,全世界的開發(fā)廠商都站在同一起跑線上。國內(nèi)的研究機構(gòu)和企業(yè)也正在投入人力物力,力爭在嵌入式操作系統(tǒng)市場上有所作為。但應清醒地看到,絕大部分地嵌入式系統(tǒng)的硬件平臺還掌握在外國公司的手中。國產(chǎn)的嵌入式操作系統(tǒng)在技術含量、兼容性、市場運作模式等方面還有很多工作要做,但是嵌入式操作系統(tǒng)的巨大商業(yè)價值和Lin

32、ux的開放性,為民族軟件產(chǎn)業(yè)的發(fā)展提供了難得的機會。應該在跟蹤國外嵌入式操作系統(tǒng)最新技術的同時,堅持自主產(chǎn)權(quán),力爭找到自己的突破點,探索出一條適合中國國情的嵌入式操作系統(tǒng)的發(fā)展道路。1.4 嵌入式Linux系統(tǒng)研究中的問題就像世上沒有萬能鑰匙一樣,嵌入式Linux當然也有它的不足。1. 嵌入式Linux仍然占用了很大內(nèi)存,雖然可以通過消減一些不必要的功能來改善,但這很有可能得不償失,因為對Linux源代碼大規(guī)模的修改很可能會帶來其他的問題。2. 大多數(shù)Linux應用程序都會使用虛擬內(nèi)存交換,但這在很多嵌入式系統(tǒng)中會帶來很多麻煩。一方面,嵌入式系統(tǒng)大多沒有外存,或者只有很少容量的Flash(閃存

33、),這導致虛擬內(nèi)存交換根本沒有空間去完成;另一方面,這種虛擬內(nèi)存交換會帶來大量的缺頁中斷和系統(tǒng)調(diào)度以及進程運行的不確定因素提高等,這在很大程度上影響了嵌入式系統(tǒng)的性能,特別是對實時性要求很強的嵌入式系統(tǒng)更是如此。3. Linux的內(nèi)核的調(diào)試工具的使用仍然不是很方便。4. 盡管可以改善,但Linux的實時性能仍然不夠理想。Unix的進程調(diào)度是以追求最大吞吐量為目標而不是追求高實時性。由于Linux繼承了Unix這一特點,所以要達到很好的實時性能必須大規(guī)模的修改Linux的內(nèi)核代碼。但這種代價是很高的。5. 缺乏強大的圖形用戶接口的支持。6. 對設備驅(qū)動的支持仍然不夠。很多外部設備不被Linux支

34、持,只能自行開發(fā)驅(qū)動程序。7. Linux是一種極具適用性的操作系統(tǒng)??墒牵度胧较到y(tǒng)在通常情況下是不具備這種性質(zhì)的;它們是對于特定的用途,進行過仔細優(yōu)化了。但Linux的這種適用性傾向,保持了系統(tǒng)的通用性和多變性,同時也是一個奢侈的目標,付出的代價很高,需要增添許多額外的工作,會有許多附加的程序產(chǎn)生,從而增加了軟件包的體積,有時還會以降低性能為代價。隨著技術的不斷發(fā)展,以上的很多問題在一定程度上得到了改進和增強。但隨著這些問題的解決,不同系統(tǒng)對Linux的改造也增強了,這使得各系統(tǒng)之間的兼容性無法避免的降低了,同時還存在系統(tǒng)穩(wěn)定性降低、支持文檔有限、持續(xù)開發(fā)難度加大等問題。這種情況使得開發(fā)自

35、主版權(quán)的嵌入式Linux系統(tǒng)變得非常必要了,同時深入研究嵌入式Linux系統(tǒng)也是非常必要的。本文也是一次為出發(fā)點,對如何構(gòu)造嵌入式Linux系統(tǒng)進行了探討,并在分析Linux內(nèi)核源代碼(Linux內(nèi)核2.4.0版)和嵌入式Linux已有研究成果的基礎上,對嵌入式Linux系統(tǒng)的進程調(diào)度的實時性改進、虛擬內(nèi)存機制的取舍、嵌入式文件系統(tǒng)的建立、圖形用戶接口的支持和設備驅(qū)動程序的開發(fā)等方面進行了深入分析,并提出了一些改進方案。基于Linux的嵌入式操作系統(tǒng)的研究與設計PAGE VI第2章 嵌入式Linux系統(tǒng)的構(gòu)建2.1 嵌入式Linux的開發(fā)流程Linux 正在嵌入式開發(fā)領域穩(wěn)步發(fā)展。因為 Lin

36、ux 使用 GPL,所以任何對將 Linux 定制于嵌入式設備感興趣的人都可以從Internet免費下載其內(nèi)核和應用程序,并開始移植或開發(fā)。為了方便嵌入式系統(tǒng)的開發(fā),目前一般采用的方式實現(xiàn)使用評估板做開發(fā),當在測試板上開發(fā)、運行、調(diào)試成功后,再根據(jù)測試板使用的硬件,裁剪掉在開發(fā)過程中需要而一般應用中不需要的硬件,最后做成產(chǎn)品板大量生產(chǎn)。有很多廠商提供這種評估板應用于嵌入式系統(tǒng)開發(fā),如ARM公司的ARM Evaluator-7T,Lineo公司的Csimm等。一般的開發(fā)平臺都需要在評估板上提供微處理器、存儲芯片以及其他的外圍硬件等設備。硬件平臺的結(jié)構(gòu)如圖2-1。在軟件方面提供系統(tǒng)的開發(fā)平臺和下載

37、工具,還有駐留在硬件上的BootLoader工具。對于由嵌入式操作系統(tǒng)的開發(fā)平臺,還需要提供操作系統(tǒng)開發(fā)工具。 圖2-1 硬件平臺結(jié)構(gòu)一個小型的嵌入式Linux系統(tǒng)需要下面三個基本元素:1. 引導實用程序 2. Linux 微內(nèi)核,由內(nèi)存管理、進程管理和定時服務構(gòu)成 3. 初始化過程 要實現(xiàn)最低限度的工作能力,還需要添加:1. 硬件驅(qū)動程序 2.一個或多個應用進程,以提供所需功能 隨著要求的增加,可能還需要:1. 一個文件系統(tǒng)(可能是在 ROM 或者是 RAM 里) 2. 一個圖形用戶接口(GUI)3. TCP/IP 網(wǎng)絡棧 嵌入式Linux的實現(xiàn)步驟為:1. 重新編譯Linux內(nèi)核,去掉內(nèi)核

38、中不需要的模塊。2. 編寫B(tài)ootLoader,制作Boot ROM用于加載嵌入式Linux內(nèi)核到內(nèi)存中。3. 重新設計網(wǎng)絡設備驅(qū)動程序和I/O設備驅(qū)動程序。4. 嵌入式Linux系統(tǒng)執(zhí)行流程(如圖2-2)。圖2-2 嵌入式Linux系統(tǒng)執(zhí)行流程2.2 構(gòu)建嵌入式Linux的關鍵問題2.2.1嵌入式Linux的引導當一個微處理器第一次啟動的時候,它開始在預先設置的地址上執(zhí)行指令。通常在那里有一些只讀內(nèi)存,包括初始化或引導代碼。在PC上,這是BIOS。它執(zhí)行了一些低水平的CPU初始化和其它硬件的配置。BIOS繼續(xù)辨認哪個磁盤里有操作系統(tǒng),把操作系統(tǒng)復制到RAM并且轉(zhuǎn)向它。在PC上運行的Linux

39、依靠PC的BIOS來提供這些配置和OS加載功能。在一個嵌入式系統(tǒng)里經(jīng)常沒有這種BIOS。嵌入式系統(tǒng)通常只需要處理一個硬件的配置。這個代碼很簡單,只是一個指令清單,將固定的數(shù)字填充到硬件寄存器中去。這個代碼也很重要,因為這些數(shù)值要與你的硬件相符并且要按照特定的順序進行。這些啟動代碼完全根據(jù)硬件決定,不可隨意移動。許多系統(tǒng)都有為核心微處理器和內(nèi)存所定制的菜單式硬件設計。典型的是,芯片制造商有一個樣本主板,可以用來作為設計的參考。通常這些菜單式設計的啟動代碼是可以獲得的,它可以根據(jù)你的需要輕易的修改。在少數(shù)情況下,啟動代碼需要重新編寫。這個代碼最終要在較為穩(wěn)定的內(nèi)存上運行,通常是Flash或EPRO

40、M芯片。需要使用一些方法將代碼放在芯片上。一種流行的方法是把Flash或EPROM芯片插入EPROM或Flash燒制器。這將把你的程序“燒”入芯片。2.2.2 虛擬內(nèi)存的取舍標準Linux具備虛擬內(nèi)存的能力。正是這種特征使應用程序員可以編寫代碼而不需考慮程序有多大,當程序比分配給它的內(nèi)存空間大時,多余部分會溢出到了磁盤交換區(qū)。但在沒有磁盤的嵌入式系統(tǒng)里,通常不能這么做。在嵌入式系統(tǒng)里不需要這種強大的功能,特別是在實時系統(tǒng)中,因為它會帶來無法控制的時間因素。2.2.3 選用合適的文件系統(tǒng)許多嵌入式系統(tǒng)沒有磁盤或者文件系統(tǒng),Linux不需要它們也能運行。在這種情況下,應用程序任務可以和內(nèi)核一起編寫

41、,并且在引導時作為一個影像加載。對于簡單的系統(tǒng)來說,這就足夠了。但是,它缺乏靈活性。許多商業(yè)性嵌入式系統(tǒng)提供了文件系統(tǒng)作為選項。許多是專用的文件系統(tǒng)或者是MS DOS Compatible文件系統(tǒng)。Linux 提供MS DOS Compatible文件系統(tǒng),同時還有其它多種選擇、之所以提供其它選擇是因為它們更加強大而且具有容錯功能。文件系統(tǒng)可以被放在傳統(tǒng)的磁盤驅(qū)動器、FlashMemory或其它這類的介質(zhì)上。而且,用于暫時保存文件,一個小RAM盤就足夠了。FlashMemories被分割成塊。這些塊中也許包括一個含有當CPU啟動時運行的最初的軟件的引導塊。這可能包括Linux引導代碼,剩余的F

42、lash可以用作文件系統(tǒng)。Linux的內(nèi)核可以通過引導代碼從Flash復制到RAM,或者,內(nèi)核可以被存儲在Flash的一個獨立部分并直接從那里執(zhí)行。另外,對于一些系統(tǒng)來說還有一個選擇。那就是將一個便宜的CDROM包含在內(nèi)。這比FlashMemory便宜,而且通過交換CDROM支持簡單的升級。Linux只要從CDROM上引導,就像從硬盤上一樣從CDROM獲得所有的程序。2.2.4 選擇合適的實時性實時的含義是指在規(guī)定的時限內(nèi)能夠傳遞正確的結(jié)果,遲到的結(jié)果就是錯誤。實時系統(tǒng)并非是指“快速”的系統(tǒng),實時系統(tǒng)有限定的響應時間,從而使系統(tǒng)具有可預測性。實時系統(tǒng)又可以分為“硬實時系統(tǒng)”和“軟實時系統(tǒng)”。二

43、者的區(qū)別在于:前者如果在不滿足響應時限、響應不及時或反應過早的情況下都會導致災難性的后果(如航空航天系統(tǒng));而后者則在不滿足響應時限時,系統(tǒng)性能退化,但并不會導致災難性的后果(如交換系統(tǒng))。在嵌入式領域中,實時并非是最重要的。嵌入式系統(tǒng)常常被錯誤地分為實時系統(tǒng),盡管多數(shù)系統(tǒng)一般并不要求實時功能。如上文所述實時是一個相對的詞,常常被嚴格地定義實時為對一事件以預定的方式在極短的時間如微秒作出響應。因此,需要怎樣的實時性能決定于嵌入式Linux應用于一個什么樣的實際情況。2.3 嵌入式Linux開發(fā)的步驟2.3.1 精簡Linux內(nèi)核由于嵌入式系統(tǒng)的功能和存儲空間的限制,安裝一個完整的Linux系統(tǒng)

44、是不可能的,也是不必要的。因此,必須對Linux內(nèi)核進行精簡和配置。通過修改內(nèi)核代碼來達到定制的目的是比較危險的,很容易造成代碼的不穩(wěn)定或者喪失代碼的靈活性。比較安全的辦法是選擇合適版本的內(nèi)核,然后通過內(nèi)核選項的配置獲得既滿足應用功能要求同時體積又小的內(nèi)核??梢允褂胢ake xconfig把所有不需要的選項都去掉,例如只留下i586 CPU、IDE設備驅(qū)動、TCP/IP協(xié)議棧、網(wǎng)卡驅(qū)動、文件系統(tǒng)、GUI等。當然,內(nèi)核的精簡與配置也不是越小越好,要根據(jù)特定的應用領域和存儲空間的實際大小和系統(tǒng)整體性能來全面考慮,最終的目的是達到性能最優(yōu)化。2.3.2 系統(tǒng)啟動裝有Linux的x86 PC機啟動時,

45、BIOS讀取MBR內(nèi)的內(nèi)核引導程序(bootloader),如LILO,并將其裝入內(nèi)存運行。之后LILO裝載內(nèi)核到內(nèi)存并跳轉(zhuǎn)到Linux內(nèi)核,將控制權(quán)移交給內(nèi)核。而在嵌入式平臺上沒有設計專用的BIOS芯片,其中的內(nèi)核引導程序直接固化在Flash(或E2PROM等其它存儲介質(zhì))上。嵌入式Linux bootloader的載入,通??梢酝ㄟ^在宿主機上運行專門的Flash燒寫工具軟件來實現(xiàn)。bootloader程序能夠完成以下功能:初始化CPU速度、初始化存儲器(包括激活存儲器)、初始化存儲器配置寄存器等、初始化串口、USB口和以太網(wǎng)口、激活指令 / 數(shù)據(jù)cache、建立堆棧指針、建立啟動參數(shù)區(qū),構(gòu)

46、造參數(shù)結(jié)構(gòu)和標識列表,因為內(nèi)核需要利用啟動參數(shù)來識別根設備、頁面大小、存儲器大小等;通過上電自檢來識別存在哪些設備,并報告異常、提供對電源管理中休眠恢復的支持、跳轉(zhuǎn)到內(nèi)核起始處。bootloader的參數(shù)結(jié)構(gòu)、內(nèi)核和文件系統(tǒng)在嵌入式系統(tǒng)中的典型布局如下: /* 存儲器起始地址 */ bootloader 啟動參數(shù)區(qū) 內(nèi)核駐留區(qū) 文件系統(tǒng) /* 存儲器結(jié)束地址 */內(nèi)核啟動之后需要執(zhí)行的第一個函數(shù)是start_kernel()(linux/init/main.c)。它完成一系列初始化的工作。start_kernel()首先調(diào)用setup_arch()來完成與體系結(jié)構(gòu)有關的初始化,包括初始化硬件寄

47、存器、識別根設備并加載系統(tǒng)中的DRAM和Flash、指明系統(tǒng)中有多少頁、文件系統(tǒng)的大小等。所有這些信息的缺省值均通過參數(shù)形式從bootloader傳遞給內(nèi)核。大多數(shù)2.4.x的內(nèi)核通過標識列表傳遞參數(shù)。在標識列表中,每個標識包含一個tag_header,標明所傳遞的參數(shù),其后是參數(shù)值。標識列表中tag的一般格式如下:#define struct u32 ;u32 ;下面是一個傳遞存儲信息標識示例:#define ATAG_MEM 0 x54410002 /* 幻數(shù) */struct tag_mem32 u32 size; /* 存儲器的大小 */u32 start; /* 存儲器的物理起始地址

48、 */ setup_arch()還要完成Flash存儲器、系統(tǒng)寄存器和其它具體器件的存儲映射。與系統(tǒng)有關的設置完成后,setup_arch()函數(shù)返回,控制權(quán)交還給start_kernel()函數(shù),它接下來將要完成的工作還有:解釋系統(tǒng)參數(shù)、初始化系統(tǒng)終端服務、系統(tǒng)調(diào)度器的初始化、時鐘、定時器的初始化、系統(tǒng)軟中斷的初始化、控制臺初始化、內(nèi)核cache的初始化、校準時鐘、內(nèi)存初始化、創(chuàng)建及設置通用cache、建立uid_cache,并且根據(jù)系統(tǒng)內(nèi)存大小來確定最大進程數(shù)目、快設備緩沖區(qū)的初始化(初始化一系列cache)、檢查體系結(jié)構(gòu)漏洞、創(chuàng)建第一個核心進程并啟動init進程、運行idle進程。接下去

49、做的工作由init()函數(shù)來完成。init()首先要鎖定內(nèi)核,然后調(diào)用do_basic_setup()來完成外部設備以及驅(qū)動程序的初始化。外設的初始化要根據(jù)內(nèi)核的配置來決定,一般需要作下面的初始化工作:1. PCI總線初始化2. 網(wǎng)絡初始化3. 一系列其他設備的初始化4. Start_context_thread()創(chuàng)建事件管理核心進程keventd5. 通過do_initcalls()函數(shù)來啟動任何使用_initcall標識的函數(shù)6. 文件系統(tǒng)初始化7. 加在文件系統(tǒng)在do_basic_setup()調(diào)用完成之后,init()會釋放初始化函數(shù)所用的內(nèi)存,并且打開/dev/console設備重

50、新定向控制臺,讓系統(tǒng)調(diào)用execve來執(zhí)行程序init。到此為止,Linux內(nèi)核的初始化工作已經(jīng)完成。接下來是用戶態(tài)進程的初始化,用戶態(tài)進程初始化完成后,整個Linux的啟動就完成了。2.3.3 設備驅(qū)動程序Linux 的設備管理是操作系統(tǒng)的重要組成部分。與進程管理、內(nèi)存管理、和文件系統(tǒng)相比,設備管理相對來說要雜亂一些。這主要是因為存在多種多樣的輸入輸出設備,導致難以形成一個通用的解決方案。盡管如此,設備管理的基本功能就是要提供一個統(tǒng)一而簡單的輸入輸出系統(tǒng)調(diào)用接口。輸入輸出子系統(tǒng)可分為上下兩部分:一部分是下層的、設備相關的,即所謂的設備驅(qū)動程序,它直接與相應設備打交道,并向上提供一組訪問接口。

51、另一部分是上層的、設備無關的,這部分根據(jù)輸入輸出請求,通過特定設備驅(qū)動提供的接口,與設備進行通信。雖然設備種類繁多,但是為了便于使用,輸入輸出子系統(tǒng)必須提供一個簡單統(tǒng)一的設備使用接口。與其它Unix 一樣,Linux 將各種設備都作為特殊文件來處理。也就是說,對設備可以進行read 和write 等操作。這些都是由輸入輸出子系統(tǒng)的設備無關部分來完成的。為Linux內(nèi)核編寫驅(qū)動程序時,所要做的只是為相應的設備編寫幾個基本函數(shù)并向VFS 注冊。當上層應用要使用該設備時,VFS 就會調(diào)用相應的設備函數(shù)。Linux下設備驅(qū)動程序的編制的一般工作方式是在一個現(xiàn)成的驅(qū)動程序的基礎上針對特殊的硬件設備做相應

52、的改動,并不是要求從頭編起。設備驅(qū)動多數(shù)是基于中斷的(安裝中斷處理函數(shù),即注冊對應置中斷向量表,使用Linux提供的注冊函數(shù)request_irq);但也有基于輪詢方式的;有的甚至是在運行時動態(tài)切換,如并口驅(qū)動。設備驅(qū)動程序通??蓺w類為以下三種類型:字符設備(char):以字節(jié)為單位;只能按順序訪問;不用緩存。塊設備(block):以塊為單位;允許隨機訪問;多用緩存技術。網(wǎng)絡接口(net)Linux的文件系統(tǒng):實際上就是一種軟件設備驅(qū)動程序(如ROMFS 文件系統(tǒng)使用的blkmem.c 和JFFS 文件系統(tǒng)使用的flash.c)。所有的字符和塊設備的驅(qū)動程序都支持文件操作的接口,因此用戶對任何

53、一個設備的存取都如同對文件操作一樣,即把每一個設備都當作一個特殊文件對待。因為內(nèi)核對設備的操作是通過文件接口的,因此只要特定設備的驅(qū)動程序支持這一抽象的文件接口即可。在內(nèi)核中增加一種新的設備驅(qū)動程序是相對容易的。設備驅(qū)動編程實際就是對Linux內(nèi)核編程,設備驅(qū)動都是以內(nèi)核態(tài)在內(nèi)核空間運行。若驅(qū)動代碼編制不良,就會導致整個系統(tǒng)死掉。Linux把每一個設備都當作一個特殊文件對待,存放在/dev/目錄下。輸入輸出子系統(tǒng)向內(nèi)核其它部分提供了一個統(tǒng)一的標準設備接口。這是通過數(shù)據(jù)結(jié)構(gòu)file_operation來實現(xiàn)的。這一部分的詳細內(nèi)容將會在后面的章節(jié)中進一步闡述。2.3.4 圖形用戶接口所謂圖形用戶接

54、口,就是GUI(Graphics User Interface)。圖形用戶接口的廣泛流行是當今計算機技術的重大成就之一,它極大的方便了非專業(yè)用戶的使用,人們不再需要死記硬背大量的命令,而可以通過窗口、菜單方便地操作。通常所見的GUI都是位于PC機上的,但它并不適合嵌入式系統(tǒng)。嵌入式設備有嚴格的資源要求和一些特殊要求,普通的PC上的GUI不能滿足這些要求。因此嵌入式系統(tǒng)必須要有自己的GUI。雖然Linux有標準的GUI系統(tǒng)XWindow,但是由于XWindow過于龐大和臃腫,不適于嵌入式系統(tǒng),所以GUI仍然是嵌入式Linux中一個亟待解決的問題。人們不希望將價格昂貴的嵌入式設備建立在龐大的、非常

55、消耗系統(tǒng)資源的操作系統(tǒng)和GUI之上。因此,在嵌入式Linux中越來越需要一個高性能、輕量級的GUI系統(tǒng)。于是,一批基于Linux的GUI系統(tǒng)便應運而生,主要包括:緊縮的XWindow、MiniGUI、MicroWindows、OpenGUI、QtEmbedded等。下面簡要的介紹一下這幾個GUI系統(tǒng):1. 緊縮的 X Window 系統(tǒng)眾所周知,X Window 是 Linux 以及其他類 UNIX 系統(tǒng)的標準 GUI。X Window 系統(tǒng)采用標準的客戶/服務器體系結(jié)構(gòu),具有可擴展性好、可移植性好等優(yōu)點。但該系統(tǒng)的龐大、累贅和低效率也是大家所共知的。為了獲得應用程序的可移植性,許多廠家都試圖

56、通過對 X Window 系統(tǒng)的緊縮開發(fā),使之能夠在嵌入式系統(tǒng)上運行。國外已經(jīng)開發(fā)出了大小約為 800K 的 X 服務器。這對西方國家來說基本能夠滿足嵌入式系統(tǒng)的需求了。但該系統(tǒng)的源代碼尚不開放,從而很難進行本地化開發(fā)。 2. MicroWindows MicroWindows 是一個開放源碼的項目,目前由美國一家公司在主持開發(fā)。該項目的開發(fā)非常活躍,國內(nèi)也有人參與了其中的開發(fā),并編寫了 GB2312 等字符集的支持。該項目的主要特色在于提供了比較完善的圖形功能,包括一些高級的功能,比如 Alpha 混合,三維支持,TrueType 字體支持等。但作為一個窗口系統(tǒng),該項目提供的窗口處理功能還需

57、要進一步完善,比如控件或構(gòu)件的實現(xiàn)還很不完備,鍵盤和鼠標等的驅(qū)動還很不完善。 3. OpenGUI OpenGUI 在 Linux 系統(tǒng)上存在已經(jīng)很長時間了。最初的名字叫 FastGL,只支持 256 的線性顯存模式。但目前也支持其他顯示模式。這個庫是用 C+ 編寫的,只提供 C+ 接口。 4. Qt/ Embedded QT/Embedded 是著名的 QT 庫開放商正在進行的面向嵌入式系統(tǒng)的 QT 版本。這個版本的主要特點是可移植性較好,許多基于 QT 的 X Window 程序可以非常方便地移植到嵌入式版本。但是該系統(tǒng)不是開放源碼的,如果你要使用這個庫,可能需要支付昂貴的授權(quán)費用。目前,

58、已經(jīng)有了 QT/Embedded 的演示版,預計明年初將出現(xiàn) QT/Embedded 的正式發(fā)行版。 5. MiniGUI 簡介 MiniGUI 是一種面向嵌入式系統(tǒng)或者實時系統(tǒng)的圖形用戶界面支持系統(tǒng)。它主要運行于 Linux 控制臺,實際可以運行在任何一種具有 POSIX 線程支持的 POSIX 兼容系統(tǒng)上。MiniGUI 同時也是國內(nèi)最早出現(xiàn)的幾個自由軟件項目之一。 嵌入式GUI的詳細討論將在后面的章節(jié)進行。比較上述幾個面向嵌入式系統(tǒng)的 GUI,目前比較成熟,同時得到最多開發(fā)人員認可的有緊縮的 X Window 系統(tǒng)、MiniGUI、MicroWindows 等系統(tǒng)。盡管緊縮的 X Win

59、dow 系統(tǒng)其 X 服務器可以降低到 800K 的大小,但因為 X Window 系統(tǒng)的運行還需要其他程序和庫的支持,包括 X 窗口管理器、XLib、建立在 XLib 之上的 GTK 和 QT 等函數(shù)庫,因此,緊縮的X Window 系統(tǒng)在運行期間所占用的系統(tǒng)資源很多,加上中文顯示和中文輸入等本地化代碼之后,系統(tǒng)的整體尺寸和運行時的資源消耗將進一步變大。因此,嵌入式系統(tǒng)的開發(fā)商往往將緊縮的 X Window 系統(tǒng)定位在機頂盒等對資源要求并不苛刻的嵌入式系統(tǒng)上。 MiniGUI 和 MicroWindows 均為自由軟件,只是前者遵循 LGPL 條款,后者遵循 MPL 條款。這兩個系統(tǒng)的技術路線

60、也有所不同。MiniGUI 的策略是首先建立在比較成熟的圖形引擎之上,比如 SVGALib 和 LibGGI,開發(fā)的重點在于窗口系統(tǒng)、圖形接口之上;MicroWindows 目前的開發(fā)重點則在底層的圖形引擎之上,窗口系統(tǒng)和圖形接口方面的功能還比較欠缺。例如,MiniGUI 有一套用來支持多字符集和多編碼的函數(shù)接口,可以支持各種常見的字符集,包括 GB、BIG5、UNICODE 等,而 MicroWindows 在多字符集的支持上尚沒有統(tǒng)一接口。 第3章 嵌入式Linux實時性能的改造在一個較為完善的嵌入式系統(tǒng)環(huán)境中,需要一個支持實時多任務的操作系統(tǒng)(RTOS)內(nèi)核,因為廣泛應用于現(xiàn)實世界中的嵌

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論