嵌入式Linux操作系統(tǒng)的廣泛應(yīng)用分析
現(xiàn)在Linux廣泛用于各類計算應(yīng)用,不僅包括微型Linux腕表、手持設(shè)備(PDA和蜂窩電話)、因特網(wǎng)裝置、瘦客戶機、防火墻、工業(yè)機器人和電話基礎(chǔ)設(shè)施設(shè)備,甚至還包括了基于集群的超級計算機。讓我們看一下Linux用作嵌入式系統(tǒng)需要提供哪些功能,以及它在目前可用的選擇中最具吸引力的原因所在。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂) 嵌入式系統(tǒng)的出現(xiàn)
用于控制設(shè)備的計算機,也叫做嵌入式系統(tǒng),它的歷史幾乎和計算機自身的歷史一樣長。它們最初于六十年代晚期在通訊中被用于控制機電電話交換機。由于在過去的十多年里,計算機產(chǎn)業(yè)不斷朝著更小的系統(tǒng)方向發(fā)展,嵌入式系統(tǒng)也與之一起為這些小型機器提供了更多的功能。漸漸地,就需要把這些嵌入式系統(tǒng)連接到某種網(wǎng)絡(luò)上,因而也就產(chǎn)生了對網(wǎng)絡(luò)棧的要求,這提高了系統(tǒng)的復(fù)雜程度并要求更多的存儲器和接口,還有,您猜對了,操作系統(tǒng)的服務(wù)。
七十年代晚期出現(xiàn)了用作嵌入式系統(tǒng)的現(xiàn)成的操作系統(tǒng),現(xiàn)在有許多可行的選擇方案。其中,一些主要的競爭者開始嶄露頭角,比如,VxWorks、pSOS、Neculeus和WindowsCE。
在嵌入式系統(tǒng)中使用Linux的優(yōu)點和缺點
雖然大多數(shù)Linux系統(tǒng)運行在PC平臺上,但Linux也可以作為嵌入式系統(tǒng)的可靠主力。Linux流行的“back-to- basics”方法使得它的安裝和管理比UNIX更加簡單靈活,這對于那些UNIX專家們來說又是一個優(yōu)點,他們已經(jīng)因為Linux中有許多命令和編程接口同傳統(tǒng)的UNIX一樣而賞識了。
典型的壓縮包裝Linux系統(tǒng)經(jīng)過打包,在擁有硬盤和大容量內(nèi)存的PC機上運行,嵌入式系統(tǒng)可不要這么高的配置。一個功能完備的Linux內(nèi)核要求大約1MB內(nèi)存。而Linux微內(nèi)核只占用其中很小一部分內(nèi)存,包括虛擬內(nèi)存和所有核心的操作系統(tǒng)功能在內(nèi),只需占用PentiumCPU系統(tǒng)的100K內(nèi)存。只要有500K的內(nèi)存,一個有網(wǎng)絡(luò)棧和基本實用程序的完全的Linux系統(tǒng)就可以在一臺8位總線(SX)的Intel386微處理器上運行的很好了。由于內(nèi)存要求常常是需要的應(yīng)用所決定的,比如Web服務(wù)器或者SNMP代理,Linux系統(tǒng)甚至可以僅使用256KBROM和512KBRAM進行工作。因此它是一個瞄準嵌入式市場的輕量級操作系統(tǒng)。
與傳統(tǒng)的實時操作系統(tǒng)相比(RTOS),采用象嵌入式Linux這樣的開放源碼的操作系統(tǒng)的另外一個好處是Linux開發(fā)團體看來會比RTOS的供應(yīng)商更快地支持新的IP協(xié)議和其它協(xié)議。例如,用于Linux的設(shè)備驅(qū)動程序要比用于商業(yè)操作系統(tǒng)的設(shè)備驅(qū)動程序多,如網(wǎng)絡(luò)接口卡(NIC)驅(qū)動程序以及并口和串口驅(qū)動程序。
閃存
快閃 RAM 內(nèi)存是大多數(shù) Palm 設(shè)備用來存儲操作系統(tǒng)的專用的存儲器。它具有允許操作系統(tǒng)升級的優(yōu)點,還可以用于數(shù)字式蜂窩電話、數(shù)字式照相機、LAN 交換機、PC 卡、數(shù)字式機頂盒、嵌入式控制器和其它小型設(shè)備。嵌入式系統(tǒng),如嵌入式 Linux,不要求有磁盤驅(qū)動器,盡管可能使用其它的內(nèi)存組織方式。因此如果,打個比方,Linux 用完了閃存,它就可以將其中一部分作為只讀的文件系統(tǒng)來存儲額外的程序和靜態(tài)數(shù)據(jù)。
核心 Linux 操作系統(tǒng)本身的微內(nèi)核體系結(jié)構(gòu)相當簡單。網(wǎng)絡(luò)和文件系統(tǒng)以模塊形式置于微內(nèi)核的上層。驅(qū)動程序和其它部件可在運行時作為可加載模塊編譯到或者是添加到內(nèi)核。這為構(gòu)造定制的可嵌入系統(tǒng)提供了高度模塊化的構(gòu)件方法。而在典型情況下該系統(tǒng)需結(jié)合定制的驅(qū)動程序和應(yīng)用程序以提供附加功能。
嵌入式系統(tǒng)也常常要求通用的功能,為了避免重復(fù)勞動,這些功能的實現(xiàn)運用了許多現(xiàn)成的程序和驅(qū)動程序,它們可以用于公共外設(shè)和應(yīng)用。Linux 可以在外設(shè)范圍廣泛的多數(shù)微處理器上運行,并早已經(jīng)有了現(xiàn)成的應(yīng)用庫。
Linux 用于嵌入式的因特網(wǎng)設(shè)備也是很合適的,原因是它支持多處理器系統(tǒng),該特性使 Linux 具有了伸縮性。因而設(shè)計人員可以選擇在雙處理器系統(tǒng)上運行實時應(yīng)用,提高整體的處理能力。例如,您可以在一個處理器運行 GUI,同時在另一個處理器上運行 Linux 系統(tǒng)。
在嵌入式系統(tǒng)上運行 Linux 的一個缺點是 Linux 體系提供實時性能需要添加實時軟件模塊。而這些模塊運行的內(nèi)核空間正是操作系統(tǒng)實現(xiàn)調(diào)度策略、硬件中斷異常和執(zhí)行程序的部分。由于這些實時軟件模塊是在內(nèi)核空間運行的,因此代碼錯誤可能會破壞操作系統(tǒng)從而影響整個系統(tǒng)的可靠性,這對于實時應(yīng)用將是一個非常嚴重的弱點。
另一方面,現(xiàn)成的 RTOS 完全是為實時性能而設(shè)計的,它通過在由用戶而非系統(tǒng)級進程啟動時分配給某個進程以高于其它進程的優(yōu)先級的方式來實現(xiàn)可靠性。進程在操作系統(tǒng)看來就是在內(nèi)存里或硬盤驅(qū)動器上執(zhí)行的程序。給他們指定進程 ID 或者數(shù)字標識符為的是讓操作系統(tǒng)跟蹤正在執(zhí)行的程序和這些程序的相關(guān)聯(lián)的優(yōu)先等級。這樣的方式保證了 RTOS 時間能比 Linux 提供更高的可靠性(可預(yù)見性)。但最重要的,這還是一種更加經(jīng)濟的選擇。
不同類型的嵌入式 Linux 系統(tǒng)
已經(jīng)有許多嵌入式 Linux 系統(tǒng)的示例;可以有把握地說,某種形式的 Linux 能在幾乎任一臺執(zhí)行代碼的計算機上運行。例如,ELKS(可嵌入 Linux 內(nèi)核子集)方案計劃在 Palm Pilot 上使用 Linux。下面列出了一些更加廣為人知的小型嵌入式 Linux 版本:
ETLinux — 設(shè)計用于在小型工業(yè)計算機,尤其是 PC/104 模塊上運行的 Linux 的完全分發(fā)版。
LEM — 運行在 386 上的小型(8 MB)多用戶、網(wǎng)絡(luò) Linux 版本。
LOAF — “Linux On A Floppy”分發(fā)版,運行在 386 上。
uClinux — 在沒有 MMU 的系統(tǒng)上運行的 Linux。目前支持 Motorola 68K、MCF5206 和 MCF5207 ColdFire 微處理器。
uLinux — 在 386 上運行的 tiny Linux 分發(fā)版。
ThinLinux — 面向?qū)S玫恼障鄼C服務(wù)器、X-10 控制器、MP3 播放器和其它類似的嵌入式應(yīng)用的最小化的 Linux 分發(fā)版。
軟件和硬件要求
許多的用戶接口工具和程序增強了 Linux 基本內(nèi)核的多功能性。就此而論,可以把 Linux 看作是這樣一個連續(xù)范圍,從只有存儲器管理、任務(wù)轉(zhuǎn)換和定時器服務(wù)最小化的微內(nèi)核一直到完整的一系列文件系統(tǒng)和網(wǎng)絡(luò)服務(wù)的功能完善的服務(wù)器。
最小的嵌入式 Linux 系統(tǒng)僅需要三個基本元素:
引導(dǎo)實用程序
Linux 微內(nèi)核,由內(nèi)存管理、進程管理和定時服務(wù)構(gòu)成。
初始化過程
要實現(xiàn)最低限度的工作能力,您還需要添加。
硬件驅(qū)動程序
一個或多個應(yīng)用進程,以提供所需功能。
隨著要求的增加,您可能還需要:
一個文件系統(tǒng)(可能是在 ROM 或者是 RAM 里);
TCP/IP 網(wǎng)絡(luò)棧;
儲存半瞬態(tài)數(shù)據(jù)和提供交換空間的磁盤;
32 位內(nèi)置 CPU(所有完全的 Linux 系統(tǒng)都需要);
相關(guān)的硬件方案。
下面是一些現(xiàn)有的為 Linux 操作系統(tǒng)定制的嵌入式硬件方案。
PLEB:帶有 ARM SA-1100 / ArmLinux Ucsimm / Uclinux Flash EPROM 的袖珍 Linux 嵌入式機器Linux Lab: Linux Lab 方案旨在幫助人們開發(fā) Linux 數(shù)據(jù)采集和過程控制軟件。它計劃提供從硬件支持到應(yīng)用開發(fā)的廣闊范圍內(nèi)應(yīng)用的標準化開發(fā)環(huán)境。
控制器域網(wǎng):Linux GPIB 的控制器域網(wǎng)(CAN)總線驅(qū)動程序;Linux GPIB 包是一個對普通 GPIB(IEEE 488.1)硬件的支持包。驅(qū)動程序支持 National Instruments AT-GPIB、TNT488.2 以及 PCII 和 PCIIa 板。這個包里有完整的開發(fā)環(huán)境,包括測試和配置工具、庫以及對 tcl 和 python 語言的支持。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)linux相關(guān)文章:linux教程
評論