嵌入式Linux
嵌入式Linux系統的設計與套用
摘要:隨著嵌入式Linux系統的迅速發展,嵌入式Linux已發展成為嵌入式作業系統的一個重要分支。本文
介紹了嵌入式Linux的設計和幾種流行的嵌入式Linux系統。
關鍵字:嵌入式Linux
引言
嵌入式系統(EmbeddedSystems)是根據套用的要求,將作業系統和功能軟體集成於計算機硬體系統之中,
從而實現軟體與硬體一體化的計算機系統。嵌入式系統出現於60年代晚期,它最初被用於控制機電電話交
換機,如今已被廣泛的套用於工業製造、過程控制、通訊、儀器、儀表、汽車、船舶、航空、航天、軍事
裝備、消費類產品等眾多領域。嵌入式系統在數量上遠遠超過了各種通用計算機系統:計算機系統核心
CPU,每年在全球範圍內的產量大概在二十億顆左右,其中超過80%套用於各類專用性很強的嵌入式系統
。
一般的說,凡是帶有微處理器的專用軟硬體系統都可以稱為嵌入式系統。和通用的計算平台相比,嵌入式
系統往往具有功能單一、體積小、功耗低、可靠性高、剪裁性好、軟硬體集成度高、計算能力相對較低等
特點。多年來,嵌入式設備中沒有作業系統,其主要原因有二:首先,諸如洗衣機、微波爐、電冰櫃這樣
的設備僅僅需要一道簡單的控制程式,以管理數量有限的按鈕和指示燈,沒有使用作業系統的必要;其次
,它往往只具有有限的硬體資源,不足以支持一個作業系統。
然而,隨著硬體的發展,嵌入式系統變得越來越複雜,最初的控制程式中逐步的加入了許多功能,而這些
功能中有很多可以由作業系統提供。於是,在70年代末期出現了嵌入式作業系統(EmbeddedOperating
Systems),它的出現大大簡化了應用程式設計,並可以有效的保障軟體質量和縮短開發周期。簡單的ES一
般並不使用作業系統,只包含一些控制流程,但是隨著嵌入式作業系統在複雜性上的增長,簡單的流程控
制就不能滿足系統的要求,這是就必須考慮使用作業系統做系統軟體。因此,嵌入式作業系統就應運而生
。
隨著EOS的廣泛套用,業界已推出一些套用比較成功的EOS產品。歸納起來EOS應該具有以下幾個特點:小
巧、實時性、可裝卸、固化代碼、弱互動性、強穩定性和統一的接口。目前使用最多的EOS產品包括有:
VxWork、QNX、PalmOS、WindowsCE、pSOS、HopenOS(國內凱思集團公司自主研製開發)等。其中,Vxwork
使用最為廣泛、市場占有率最高,其突出特點是實時性強(採用優先權搶占和輪轉調度等機制),除此之外
,其可靠性和可剪裁性也相當不錯。QNX是一種伸縮性極佳的系統,其核心加上實時POSIX環境和一個完整
的視窗系統還不到一兆。相比之下,MicrosoftWinCE的核心體積龐大,實時性能也差強人意,但由於
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
OnAFloppy的縮略語,它運行在386平台上。
Linux作為嵌入式作業系統的優勢
Linux作為嵌入式作業系統的優勢主要有以下幾點:
1、可套用於多種硬體平台。Linux已經被移植到多種硬體平台,這對於經費,時間受限制的研究與開發
項目是很有吸引力的。原型可以在標準平台上開發後移植到具體的硬體上,加快了軟體與硬體的開發過程
。Linux採用一個統一的框架對硬體進行管理,從一個硬體平台到另一個硬體平台的改動與上層套用無關
。Linux可以隨意地配置,不需要任何的許可證或商家的合作關係,原始碼可以免費得到。這使得採用
Linux作為作業系統不會遇到任何關於著作權的糾紛。毫無疑問,這會節省大量的開發費用。本身內置網路
支持,而目前嵌入式系統對網路支持要求越來越高。Linux的高度模組化使添加部件非常容易。
2、Linux是一個和Unix相似、以核心為基礎的、具有完全的記憶體訪問控制,支持大量硬體(包括X86,
Alpha、ARM和Motorola等現有的大部分晶片)等特性的一種通用作業系統。其程式源碼全部公開,任何人
可以修改並在GUN通用公共許可證(GNUGeneralPublicLicense)下發行。這樣,開發人員可以對操作系
統進行定製,適應其特殊需要。
3、Linux帶有Unix用戶熟悉的完善的開發工具,幾乎所有的Unix系統的套用軟體都已移植到了Linux上。
Linux還提供了強大的網路功能,有多種可選擇視窗管理器(xwindows)。其強大的語言編譯器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、MicroWindow、緊縮的XWindow、MiniGUI(國內做得較好的自由軟體之一)。標準Linux的Xfree86
由於體積龐大,運行環境要求高,無法運行於嵌入式環境。嵌入式GUI主要通過削減功能,降低性能來實
現體積小和占用資源少。目前嵌入式Linux上的GUI環境主要有兩類:X類和win32類。X類GUI分為服務方和
客戶方兩方。伺服器方提供滑鼠、鍵盤處理和顯示功能,客戶方是用戶套用,服務方和客戶方通過socket
接口和X協定通信。採用該方式十分有利於遠程網路圖形化服務,客戶方和服務方可通過網路實現X協定和
圖形顯示。典型的X類GUI有MicroWindow、緊縮的XWindow等。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(MemoryManagementUnit)的嵌入式系統而設計的。它已經被成功地移植到
了很多平台上。由於沒有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基於Linux2.2核心,並已經成功地移植到了Intelx86和PowerPC處理器系列上
。像其它的Linux版本一樣,Embedix可以免費獲得。Luneo還發布了另一個重要的軟體產品,它可以讓在
WindowsCE上運行的程式能夠在Embedix上運行。Luneo還將計畫推出Embedix的開發調試工具包、基於圖
形界面的瀏覽器等。可以說,Embedix是一種完整的嵌入式Linux解決方案。
4、Xlinux
XLinux是由美國網虎公司推出,主要開發者是陳盈豪。他在加盟網虎幾個月後便開發出了基於XLinux的、
號稱是世界上最小的嵌入式Linux系統,核心只有143KB,而且還在不斷減小。XLinux核心採用了"超字元
集"專利技術,讓Linux核心不僅可能與標準字元集相容,還含蓋了12個國家和地區的字元集。因此,
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是國內做得較好的一款嵌入式作業系統。目前,中科院計
算所自行開發的開放源碼的嵌入式作業系統---EasyEmbeddedOS(EEOS)也已經開始進入實用階段了。該
款嵌入式作業系統重點支持p-Java。系統目標一方面是小型化,另一方面能重用Linux的驅動和其它模組
。由於有中科院計算所的強大科研力量做後盾,EEOS有望發展成為功能完善、穩定、可靠的國產嵌入式操
作系統平台。
六、結束語
由於Linux是一個核心原始碼開放、具備一整套工具鏈、有強大的網路支持及成本低廉的作業系統,因此
嵌入式Linux自誕生起就秉承了這眾多獨特優勢,這使它正在並越來越多地受到人們的關注。據EvenData
數據顯示,期望使用嵌入式Linux的用戶從2001年的11%增到2002年27%,而同期Vxwork只是從16%到18
%,WinCE從9%到14%。另外,在嵌入式Linux的各種套用市場中,通信(語音和數據)名列第一,2000年
的銷售額是1300萬美元,而2005年預計將達到1.26億美元,可以預見,嵌入式Linux將在未來的通信用嵌
入式作業系統中占據強有力的地位
Linux是目前十分火爆的作業系統。它是由芬蘭赫爾辛基大學的一個大學生LinusB.Torvolds在1991年首
次編寫的。標誌性圖示是一個可愛的小企鵝。
Linux是一種類UNIX系統,Linus當時編寫它的目的是為了替代一種名叫Minix的作業系統。Minix是由一個
名叫AndrewTannebaum的計算機教授編寫的,當時由於Unix是一個商業軟體,其原始碼是不能拿來進行教
學的,Andrew教授就自己編寫了一個系統用於教學。最初的Minix用一張軟碟就能裝下,麻雀雖小、五臟俱全,Minix具有一般作業系統的特徵,它同時兼容Unix
系統。
Linux是一個免費的作業系統,用戶可以免費獲得其原始碼,並能夠隨意修改。它是在共用許可證GPL
(GeneralPublicLicense)保護下的自由軟體,也有好幾種版本,如RedHatLinux、Slackware,以及國
內的XteamLinux等。
Linux具有許多Unix系統的功能和特點,能夠兼容Unix,但無需支付Unix高額的費用。比如一個Unix程式
員在單位可以在Unix系統上進行工作,回到家裡在Linux系統上也能完成同樣的工作,而不必重新購買
Unix。要知道Unix的價格比常見的Windows要高出若干倍,和Linux的低廉更是相距甚遠。
Linux的套用也十分廣泛。Sony最新的PS2遊戲機就採用了Linux作為系統軟體,使PS2搖身一變,成為了一
台Linux工作站。著名的電影《鐵達尼號》的數位技術合成工作就是利用100多台Linux伺服器來完成的
。
2001年8月17日,Linux發布了最新的Linux2.4.9版,它也已經十歲了。
特點
Linux的優點
Linux的流行是因為它具有許多誘人之處。
1、完全免費
Linux是一款免費的作業系統,用戶可以通過網路或其他途徑免費獲得,並可以任意修改其原始碼。這是
其他的作業系統所做不到的。正是由於這一點,來自全世界的無數程式設計師參與了Linux的修改、編寫工作
,程式設計師可以根據自己的興趣和靈感對其進行改變。這讓Linux吸收了無數程式設計師的精華,不斷壯大。
2、完全兼容POSIX1.0標準
這使得可以在Linux下通過相應的模擬器運行常見的DOS、Windows的程式。這為用戶從Windows轉到Linux
奠定了基礎。許多用戶在考慮使用Linux時,就想到以前在Windows下常見的程式是否能正常運行,這一點
就消除了他們的疑慮。
3、多用戶、多任務
Linux支持多用戶,各個用戶對於自己的檔案設備有自己特殊的權利,保證了各用戶之間互不影響。多任
務則是現在電腦最主要的一個特點,Linux可以使多個程式同時並獨立地運行。
4、良好的界面
Linux同時具有字元界面和圖形界面。在字元界面用戶可以通過鍵盤輸入相應的指令來進行操作。它同時
也提供了類似Windows圖形界面的X-Windows系統,用戶可以使用滑鼠對其進行操作。在X-Windows環境中
就和在Windows中相似,可以說是一個Linux版的Windows。
5、豐富的網路功能
網際網路是在Unix的基礎上繁榮起來的,Linux的網路功能當然不會遜色。它的網路功能和其核心緊密相連
,在這方面Linux要優於其他作業系統。在Linux中,用戶可以輕鬆實現網頁瀏覽、檔案傳輸、遠程登入等
網路工作。並且可以作為伺服器提供WWW、FTP、E-Mail等服務。
6、可靠的安全、穩定性能
Linux採取了許多安全技術措施,其中有對讀、寫進行許可權控制、審計跟蹤、核心授權等技術,這些都為
安全提供了保障。Linux由於需要套用到網路伺服器,這對穩定性也有比較高的要求,實際上Linux在這方
面也十分出色。
7、支持多種平台
Linux可以運行在多種硬體平台上,如具有x86、680x0、SPARC、Alpha等處理器的平台。此外Linux還是一
種嵌入式作業系統,可以運行在掌上電腦、機頂盒或遊戲機上。2001年1月份發布的Linux2.4版核心已經
能夠完全支持Intel64位晶片架構。同時Linux也支持多處理器技術。多個處理器同時工作,使系統性能
大大提高。
Linux的不足
由於在現在的個人電腦作業系統行業中,微軟的Windows系統仍然占有大部分的份額,絕大多數的軟體公
司都支持Windows。這使得Windows上的套用軟體應有盡有,而其他的作業系統就要少一些。許多用戶在換
作業系統的時候都會考慮以前的軟體能否繼續使用,換了作業系統後是否會不方便。雖然Linux具有DOS、
Windows模擬器,可以運行一些Windows程式,但Windows系統極其複雜,模擬器所模擬的運行環境不可能
完全與真實的Windows環境一模一樣,這就使得一些軟體無法正常運行。
許多硬體設備面對Linux的驅動程式也不足,不少硬體廠商是在推出Windows版本的驅動程式後才編寫
Linux版的。但一些大硬體廠商在這方面做得還不錯,他們的Linux版驅動程式一般都推出得比較及時。
軟體支持的不足是Linux最大的缺憾,但隨著Linux的發展,越來越多的軟體廠商會支持Linux,它套用的
範圍也越來越廣。這隻小企鵝的前景是十分光明的。