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