嵌入式Linux系統的設計與應用

嵌入式Linux系統的設計與應用

嵌入式系統(Embedded Systems)是根據應用的要求,將操作系統和功能軟件集成於計算機硬件系統之中,從而實現軟件與硬件一體化的計算機系統。嵌入式系統出現於60年代晚期,它最初被用於控制機電電話交換機,如今已被廣泛的應用於工業製造、過程控制、通訊、儀器、儀表、汽車、船舶、航空、航天、軍事裝備、消費類產品等衆多領域。嵌入式系統在數量上遠遠超過了各種通用計算機系統:計算機系統核心CPU,每年在全球範圍內的產量大概在二十億顆左右,其中超過80%應用於各類專用性很強的嵌入式系統。

一般的說,凡是帶有微處理器的專用軟硬件系統都可以稱爲嵌入式系統。和通用的計算平臺相比,嵌入式系統往往具有功能單一、體積小、功耗低、可靠性高、剪裁性好、軟硬件集成度高、計算能力相對較低等特點。多年來,嵌入式設備中沒有操作系統,其主要原因有二:首先,諸如洗衣機、微波爐、電冰箱這樣的設備僅僅需要一道簡單的控制程序,以管理數量有限的按鈕和指示燈,沒有使用操作系統的必要;其次,它往往只具有有限的硬件資源,不足以支持一個操作系統。

然而,隨着硬件的發展,嵌入式系統變得越來越複雜,最初的控制程序中逐步的加入了許多功能,而這些功能中有很多可以由操作系統提供。於是,在70年代末期出現了嵌入式操作系統(Embedded Operating Systems),它的出現大大簡化了應用程序設計,並可以有效的保障軟件質量和縮短開發週期。簡單的ES一般並不使用操作系統,只包含一些控制流程,但是隨着嵌入式操作系統在複雜性上的增長,簡單的流程控制就不能滿足系統的要求,這是就必須考慮使用操作系統做系統軟件。因此,嵌入式操作系統就應運而生。

隨着EOS的廣泛應用,業界已推出一些應用比較成功的EOS產品。歸納起來EOS應該具有以下幾個特點:小巧、實時性、可裝卸、固化代碼、弱交互性、強穩定性和統一的接口。目前使用最多的EOS產品包括有:Vxwork、QNX、PalmOS、WindowsCE、pSOS、Hopen OS(國內凱思集團公司自主研製開發)等。其中,Vxwork使用最爲廣泛、市場佔有率最高,其突出特點是實時性強(採用優先級搶佔和輪轉調度等機制),除此之外,其可靠性和可剪裁性也相當不錯。QNX是一種伸縮性極佳的系統,其核心加上實時POSIX環境和一個完整的窗口系統還不到一兆。相比之下,Microsoft WinCE的核心體積龐大,實時性能也差強人意,但由於Windows系列友好的用戶界面和爲程序員所熟悉的API,並捆綁IE、Office等應用程序,正逐漸獲得更大的市場份額。而與這些商業化的操作系統相比,Linux已經越來越受到人們的注意。

二、嵌入式Linux概述

Linux是一個成熟而穩定的網絡操作系統。將Linux植入嵌入式設備具有衆多的優點。首先,Linux的源代碼是開放的,任何人都可以獲取並修改,用之開發自己的產品。其次,Lirmx是可以定製的,其系統內核最小隻有約134kB。一個帶有中文系統和圖形用戶界面的核心程序也可以做到不足1MB,並且同樣穩定。另外,它和多數Unix系統兼容,應用程序的開發和移植相當容易。同時,由於具有良好的可移植性,人們已成功使Linux運行於數百種硬件平臺之上。

然而,Linux並非專門爲實時性應用而設計,因此如果想在對實時性要求較高的嵌入式系統中運行Linux,就必須爲之添加實時軟件模塊。這些模塊運行的內核空間正是操作系統實現進程調度、中斷處理和程序執行的部分,因此錯誤的代碼可能會破壞操作系統,進而影響整個系統的可靠性和穩定性。Linux的衆多優點還是使它在嵌入式領域獲得了廣泛的應用,並出現了數量可觀的嵌入式Linux系統。其中有代表性的包括:uClinux、ETLinux、ThinLinux、LOAF等。ETLinux通常用於在小型工業計算機,尤其是PC/104模塊。ThinLinux面向專用的照相機服務器、X-10控制器、MP3播放器和其它類似的嵌入式應用。LOAF是Linux On A Floppy的縮略語,它運行在386平臺上。

三、Linux作爲嵌入式操作系統的優勢

Linux作爲嵌入式操作系統的優勢主要有以下幾點:

1、 可應用於多種硬件平臺。Linux已經被移植到多種硬件平臺,這對於經費,時間受限制的研究與開發項目是很有吸引力的。原型可以在標準平臺上開發後移植到具體的硬件上,加快了軟件與硬件的開發過程。Linux採用一個統一的框架對硬件進行管理,從一個硬件平臺到另一個硬件平臺的改動與上層應用無關。Linux可以隨意地配置,不需要任何的許可證或商家的合作關係,源代碼可以免費得到。這使得采用Linux作爲操作系統不會遇到任何關於版權的糾紛。毫無疑問,這會節省大量的開發費用。本身內置網絡支持,而目前嵌入式系統對網絡支持要求越來越高。Linux的高度模塊化使添加部件非常容易。

2、 Linux是一個和Unix相似、以內核爲基礎的、具有完全的內存訪問控制,支持大量硬件(包括X86,Alpha、ARM和Motorola等現有的大部分芯片)等特性的一種通用操作系統。其程序源碼全部公開,任何人可以修改並在GUN通用公共許可證(GNU General Public License)下發行。這樣,開發人員可以對操作系統進行定製,適應其特殊需要。

3、 Linux帶有Unix用戶熟悉的完善的開發工具,幾乎所有的Unix系統的應用軟件都已移植到了Linux上。Linux還提供了強大的網絡功能,有多種可選擇窗口管理器(X Windows)。其強大的語言編譯器GCC,C++等也可以很容易得到,不但成熟完善,而且使用方便。

四、嵌入式Linux的建立

完整的嵌入式Linux解決方案應包括嵌入式Linux操作系統內核、運行環境、圖形化界面和應用軟件等。由於嵌入式設備的特殊要求,嵌入式Linux解決方案中的內核、環境、GUI等都與標準Linux有很大不同,其主要挑戰是如何在狹小的FLASH、ROM和內存中實現高質量的任務實時調度、圖形化顯示、網絡通信等功能。

1、 精簡內核

Linux內核有自己的結構體系,其中進程管理、內存管理和文件系統是其最基本的3個子系統。圖1簡單表示了它的框架。用戶進程可直接通過系統調用或者函數庫來訪問內核資源。正因爲Linux內核具有這樣的結構,因此修改內核時必須注意各個子系統之間的協調。

嵌入式Linux內核一般由標準Linux內核裁剪而來。用戶可根據需求配置系統,剔除不需的服務功能、文件系統和設備驅動。經過裁剪、壓縮後的系統內核一般只有300k左右,十分適合嵌入式設備。同標準Linux不同的是嵌入式Linux必須要實現從FLASH或ROM的啓動。標準Linux啓動代碼實現了系統初始化和從軟盤、硬盤O盤區引導內核。嵌入式Linux一般保存在FLASH或ROM中,標準LILO無法引導。在支持直接從FLASH設備引導的系統中,如華恆公司的uClinux,引導程序主要完成對硬件系統的初始化工作和操作系統的解壓、移位工作。在不支持直接從FLASH引導的系統中,FLASH設備只能作爲非引導磁盤使用。此時,可採用先從硬盤或軟盤加載一個小操作系統,如嵌入式DOS,然後再執行Loadlin加載程序從FLASH引導嵌入式Linux。

對標準Linux的修改主要是虛擬內存和調度程序部分的改動。因爲標準Linux系統使用虛擬內存管理的目的是爲了能同時運行多個進程,但是這樣每個待運行的進程所能分配的CPU時間片就受限制,資源的使用效率就低。這樣對於實時性要求較高的嵌入式系統來說,實時任務往往要求CPU具有很高的突發處理能力,即在有些時候需要極高的處理效率,因此需要屏蔽內核的虛擬內存管理機制。對於無硬盤設備的嵌入式系統,不必採用虛存管理。強實時需求的嵌入式應用可以通過修改任務調度模塊實現,主要是在內核和設備驅動程序中加入了許多切換點。在該點處,系統檢測是否存在未處理的緊急中斷,有則剝奪內核的運行,及時處理中斷。實現實時性服務的一個較好的方法是在標準的Linux內核上增加一個實時內核,標準Linux內核作爲一個任務運行於實時內核上,強實時性任務也直接運行在實時內核上,如RT-Linux等。

文件系統是嵌入式Linux操作系統必不可少的。但標準Linux支持大量的文件系統,因此除了滿足系統的正常運行需要而保留一種外,其它的全部可以刪除,利用原有的設置選項可以移除。一般嵌入式設備文件系統主要使用RamDisk技術和網絡文件系統技術。RamDisk可駐留於Flash,運行時加載到內存中。

2、 精簡運行環境

Linux通常的運行環境指用戶運行任何應用的基礎設施,主要包括函數庫和基本命令集等。標準Linux系統同時向用戶提供了靜態和動態函數庫。靜態函數庫在生成應用時直接鏈接到用戶應用中。動態庫在應用運行時才鏈接。由於嵌入式系統應用一般都是在開發平臺上預先生成的,因此嵌入式系統只需嚮應用提供動態函數庫。Linux應用運行所需的函數庫主要有C庫、數學庫、線程庫、加密庫、網絡通信庫等。其中最基本的是C語言的運行庫glib。這個庫主要完成基本的輸入輸出,內存訪問,文件處理。一個標準的glib庫大約要1200kB存儲空間,考慮到嵌入式Linux內核往往很小,這種運行庫實在太大,我們做了一些精簡的工作,方法有兩種:(1)、使用靜態連接的方法,完全不使用運行庫動態連接;(2)、對這個庫的函數進行精簡。

在一個桌面系統上,使用動態連接可以帶來許多好處。使用動態連接庫,可以讓應用程序跟函數庫的更新、升級分離,便於維護,可以讓同時運行的多個程序共享一段代碼。但是,在嵌入式系統中,很少有多個程序並行的可能,程序的維護,尤其是庫函數的維護更新是不常見的。這時,使用靜態連接的優勢就極爲明顯。因爲靜態連接可以只將庫中用到的部分連接進程序。在應用程序較少(小於5)的情況下,靜態連接可以達到較好的結果。爲了便於將來擴充的需要,我們也採用第二種方法,針對我們的需要,對庫函數的內容進行精簡,只保留一些基本功能,還有一種方法是採用其它的C語言運行庫。但是這些庫對兼容性影響很大。

基本命令集同樣是運行用戶應用的基礎,主要包括初始化進程init,終端獲取getty、Shell和基本命令等。嵌入式系統的啓動過程可能與標準Linux不同,例如跳過登錄過程直接啓動GUI等。這就要求修改init,getty等。標準Linux命令集同樣由於體積問題無法直接應用於嵌入式環境。目前,小命令集的解決方法主要有集成方法和彙編方法兩種。集成方法採用集成公共部分減少命令集整體體積,用C實現,有較好的平臺移植性;彙編方法則採用彙編編程減少每個命令的體積.這樣可使體積很小但其平臺移植性較差。

3、 嵌入式Linux下的GUI

GUI在嵌入式系統或者實時系統中的地位越來越重要,比如PDA、DVD播放機、WAP手機等,都需要一個完整.漂亮的圖形用戶界面。這些系統對GUI的基本要求包括:(1)、輕型、佔用資源少;(2)、高性能;(3)、高可靠性;(4)、可配置。這些也成爲評價嵌入式系統的重要指標。目前,嵌入式Linux上的GUI主要有winCE、Micro Window、緊縮的X Window、MiniGUI(國內做得較好的自由軟件之一)。標準Linux的Xfree86由於體積龐大,運行環境要求高,無法運行於嵌入式環境。嵌入式GUI主要通過削減功能,降低性能來實現體積小和佔用資源少。目前嵌入式Linux上的GUI環境主要有兩類:X類和win32類。X類GUI分爲服務方和客戶方兩方。服務器方提供鼠標、鍵盤處理和顯示功能,客戶方是用戶應用,服務方和客戶方通過socket接口和X協議通信。採用該方式十分有利於遠程網絡圖形化服務,客戶方和服務方可通過網絡實現X協議和圖形顯示。典型的X類GUI有Micro Window、緊縮的X Window等。win32類的GUI不存在客戶方和服務方,每個任務都自成一體,任何任務間的切換、事件分發由專門的管理任務負責。如wiCE、MiniGUI就是類似於win32類的GUI。

五、當前流行的幾種嵌入式Linux系統

除了智能數字終端領域以外,Linux在移動計算平臺、智能工業控制、金融業終端系統,甚至軍事領域都有着廣泛的應用前景。這些Linux被統稱爲嵌入式Linux。

1、RT-Linux

這是由美國墨西哥理工學院開發的嵌入式Linux操作系統。到目前爲止,RT-Linux已經成功地應用於航天飛機的空間數據採集、科學儀器測控和電影特技圖像處理等廣泛領域。RT-Linux開發者並沒有針對實時操作系統的特性而重寫Linux的內核,因爲這樣做的工作量非常大,而且要保證兼容性也非常困難。爲此,RT-Linux提出了精巧的內核,並把標準的Linux核心作爲實時核心的一個進程,同用戶的實時進程一起調度。這樣對Linux內核的改動非常小,並且充分利用了Linux下現有的豐富的軟件資源。

2、uClinux

uCLinux是Lineo公司的主打產品,同時也是開放源碼的嵌入式Linux的典範之作。uCLinux主要是針對目標處理器沒有存儲管理單元MMU(Memory Management Unit) 的嵌入式系統而設計的。它已經被成功地移植到了很多平臺上。由於沒有MMU,其多任務的實現需要一定技巧。uCLinux是一種優秀的嵌入式Linux版本,是micro-Conrol-Linux的縮寫。它秉承了標準Linux的優良特性,經過各方面的小型化改造,形成了一個高度優化的、代碼緊湊的嵌入式Linux。雖然它的體積很小,卻仍然保留了Linux的大多數的優點:穩定、良好的移植性、優秀的網絡功能、對各種文件系統完備的支持和標準豐富的API。它專爲嵌入式系統做了許多小型化的工作,目前已支持多款CPU。其編譯後目標文件可控制在幾百KB數量級,並已經被成功地移植到很多平臺上。

3、Embedix

Embedix是由嵌入式Linux行業主要廠商之一Luneo推出的,是根據嵌入式應用系統的特點重新設計的Linux發行版本。Embedix提供了超過25種的Linux系統服務,包括Web服務器等。系統需要最小8MB內存,3MB ROM或快速閃存。Embedix基於Linux 2.2內核,並已經成功地移植到了Intel x86和PowerPC處理器系列上。像其它的Linux版本一樣,Embedix可以免費獲得。Luneo還發布了另一個重要的軟件產品,它可以讓在Windows CE上運行的程序能夠在Embedix上運行。Luneo還將計劃推出Embedix的開發調試工具包、基於圖形界面的瀏覽器等。可以說,Embedix是一種完整的嵌入式Linux解決方案。

4、Xlinux

XLinux是由美國網虎公司推出,主要開發者是陳盈豪。他在加盟網虎幾個月後便開發出了基於XLinux的、號稱是世界上最小的嵌入式Linux系統,內核只有143KB,而且還在不斷減小。XLinux核心採用了超字元集專利技術,讓Linux核心不僅可能與標準字符集相容,還含蓋了1 2個國家和地區的字符集。因此,XLinux在推廣Linux的國際應用方面有獨特的優勢。

5、PoketLinux

由Agenda公司採用、作爲其新產品VR3PDA的嵌入式Linux操作系統。它可以提供跨操作系統構造統一的、標準化的和開放的信息通信基礎結構,在此結構上實現端到端方案的完整平臺。PoketLinux資源框架開放,使普通的軟件結構可以爲所有用戶提供一致的服務。PoketLinux平臺使用戶的視線從設備、平臺和網絡上移開,由此引發了信息技術新時代的產生。在PoketLinux中,稱之爲用戶化信息交換(CIE),也就是提供和訪問爲每個用戶需求而定製的主題信息的能力,而不管正在使用的設備是什麼。

6、MidoriLinux

由Transmeta公司推出的MidoriLinux操作系統代碼開放,在GUN普通公共許可(GPL)下發布,可以在http://midori.transmeta.com上立即獲得。該公司有個名爲MidoriLinux計劃。MidoriLinux這個名字來源於日本的綠色---Midori,用來反映其Linux操作系統的環保外觀。

7、紅旗嵌入式Linux

由北京中科院紅旗軟件公司推出的嵌入式Linux是國內做得較好的一款嵌入式操作系統。目前,中科院計算所自行開發的開放源碼的嵌入式操作系統---Easy Embedded OS(EEOS)也已經開始進入實用階段了。該款嵌入式操作系統重點支持p-Java。系統目標一方面是小型化,另一方面能重用Linux的驅動和其它模塊。由於有中科院計算所的強大科研力量做後盾,EEOS有望發展成爲功能完善、穩定、可靠的國產嵌入式操作系統平臺。

六、結束語

由於Linux是一個內核源代碼開放、具備一整套工具鏈、有強大的網絡支持及成本低廉的操作系統,因此嵌入式Linux自誕生起就秉承了這衆多獨特優勢,這使它正在並越來越多地受到人們的關注。據Even Data數據顯示,期望使用嵌入式Linux的用戶從2001年的11%增到2002年27%,而同期Vxwork只是從16%到18%,Win CE從9%到14%。另外,在嵌入式Linux的各種應用市場中,通信(語音和數據)名列第一,2000年的銷售額是1300萬美元,而2005年預計將達到1.26億美元,可以預見,嵌入式Linux將在未來的通信用嵌入式操作系統中佔據強有力的地位。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章