嵌入式Linux:嵌入式系統(tǒng)軟件的機(jī)遇和挑戰(zhàn)
嵌入式Linux正在并越來(lái)越多地受到人們的關(guān)注,嵌入式系統(tǒng)設(shè)計(jì)工程師正在嘗試從自己編寫的或?qū)S玫膶?shí)時(shí)操作系統(tǒng)(RTOS)轉(zhuǎn)移到嵌入式Linux。半導(dǎo)體廠商,系統(tǒng)機(jī)、單板機(jī)的廠商也紛紛向人們展示采用嵌入式Linux的方案,如機(jī)頂盒、家庭網(wǎng)關(guān)、移動(dòng)智能終端和以太網(wǎng)交換機(jī)等最新產(chǎn)品。同時(shí)各類市場(chǎng)分析報(bào)告也顯示,到2003年將有50%的嵌入式RTOS選擇Linux。嵌入式Linux對(duì)中國(guó)電子設(shè)計(jì)業(yè)來(lái)講是機(jī)遇,但是由于它一改傳統(tǒng)設(shè)計(jì)方式和商業(yè)模式,也同時(shí)面臨著巨大的挑戰(zhàn)。
嵌入式Linux的優(yōu)勢(shì)
Linux是Unix的一個(gè)變種,在過(guò)去的10多年中已經(jīng)成功地應(yīng)用于服務(wù)器和桌面系統(tǒng)。使用Linux可以大大發(fā)揮軟件工程師在Unix系統(tǒng)上的開發(fā)經(jīng)驗(yàn),國(guó)內(nèi)外大學(xué)的教學(xué)也逐漸從Unix轉(zhuǎn)到Linux,并且開設(shè)嵌入式Linux軟件課程。比起其它專用的RTOS開發(fā)系統(tǒng)來(lái)說(shuō),軟件工程師學(xué)習(xí)嵌入式Linux會(huì)相當(dāng)容易,資料、信息和交流的機(jī)會(huì)也豐富得多。
嵌入式Linux與Linux一樣,是開放源代碼軟件。與專用的RTOS或自行開發(fā)的RTOS比較起來(lái),還有以下的優(yōu)勢(shì):
使用嵌入式Linux與供應(yīng)商無(wú)關(guān)
當(dāng)然,有多家供應(yīng)商提供嵌入式Linux產(chǎn)品、服務(wù)、培訓(xùn)和應(yīng)用工程,但是可以說(shuō)開放的Linux技術(shù)來(lái)源是一致的,而且是標(biāo)準(zhǔn)的,這將會(huì)避免傳統(tǒng)的單一供應(yīng)商所帶來(lái)的產(chǎn)品不連續(xù)發(fā)展的風(fēng)險(xiǎn)。
新硬件的支持
目前Linux是硬件制造商首選支持的OS,一般硬件支持是從微處理器開始的,Linux是支持微處理器種類最多的OS,還有更多的I/O設(shè)備驅(qū)動(dòng)程序。嵌入式Linux與廠家無(wú)關(guān)性也保證了這種硬件系統(tǒng)支持的平滑過(guò)渡,從一個(gè)廠家嵌入式Linux移植到另外一家也是很容易的。
更早地獲取新技術(shù)
最新的技術(shù)的實(shí)現(xiàn)一般是在Linux軟件平臺(tái)上。如果你希望直接獲取這些資源并使用它,那么嵌入式Linux比傳統(tǒng)專用RTOS要容易的多。
更低的成本
嵌人式Linux是一種沒有版稅的RTOS,使用Linux開發(fā)系統(tǒng)可以減少雇用和培訓(xùn)工程師熟悉專用RTOS的費(fèi)用。
Linux社區(qū)的廣闊資源
在遼闊的開放源碼的世界和Linux社區(qū)有數(shù)萬(wàn)名自由軟件愛好者,數(shù)百家Linux發(fā)行版的公司和服務(wù)商以及幾乎所有硬件制造商都在一個(gè)開放的,標(biāo)準(zhǔn)的軟件平臺(tái)上工作,有百余種公開源碼的項(xiàng)目,如機(jī)頂盒、ATM和IPV6項(xiàng)目等。
應(yīng)用嵌入式Linux在技術(shù)
層面的幾個(gè)問(wèn)題
實(shí)時(shí)性問(wèn)題
Linux繼承了傳統(tǒng)Unix的公平調(diào)度機(jī)制即分時(shí)調(diào)度策略,它提供了一個(gè)穩(wěn)定的操作系統(tǒng)的管理系統(tǒng),但是它不能解決實(shí)時(shí)系統(tǒng)要求的納秒級(jí)的中斷延遲、任務(wù)切換時(shí)間。
同時(shí),傳統(tǒng)的Linux是不可以被搶占的。目前解決Linux實(shí)時(shí)性的方法有兩類。第一是改造內(nèi)核,寫一個(gè)專用的實(shí)時(shí)微內(nèi)核,讓傳統(tǒng)的Linux做為一個(gè)優(yōu)先級(jí)最低的進(jìn)程,這種方法的優(yōu)點(diǎn)是可以提供象專用RTOS一樣的硬實(shí)時(shí)性,缺點(diǎn)是不能保證Linux應(yīng)用和設(shè)備驅(qū)動(dòng)程序的完全兼容,代表產(chǎn)品是RTLINUX。第二是寫一個(gè)可搶占的Linux內(nèi)核,這種可搶占的Linux內(nèi)核是使用SMP(對(duì)稱多處理器)技術(shù)在單個(gè)X86、PPC、ARM等RISC CPU以補(bǔ)丁形式加在內(nèi)核上,這種方法的優(yōu)點(diǎn)是與任何Linux應(yīng)用和設(shè)備驅(qū)動(dòng)程序兼容。缺點(diǎn),不是嚴(yán)格意義的硬實(shí)時(shí),代表產(chǎn)品是MontaVista公司的Linux。
從另外一種意義上,所有的嵌入式應(yīng)用都有實(shí)時(shí)性的要求,但并非所有應(yīng)用都有實(shí)時(shí)性的要求,有關(guān)資料顯示:60%應(yīng)用是非實(shí)時(shí)的,30%是軟實(shí)時(shí)性,只有約10%是硬實(shí)時(shí),只有4.2%用戶認(rèn)為L(zhǎng)inux完全不能滿足它的應(yīng)用。
內(nèi)核代碼大小
在考慮選擇嵌入式Linux時(shí)的一個(gè)重要因素就是Linux內(nèi)核代碼尺寸, 一般來(lái)講它比傳統(tǒng)的RTOS要大,這就是說(shuō)需要用更多的程序存儲(chǔ)器(如Flash或電子硬盤)和數(shù)據(jù)存儲(chǔ)器(如SDRAM),目前Linux內(nèi)核的機(jī)制是把壓縮后的內(nèi)核(一般安放在Flash或電子硬盤上)解壓到SDRAM上然后執(zhí)行,肯定是需要更多的FLash和SDRAM。但是,經(jīng)過(guò)專用庫(kù)優(yōu)化器處理的內(nèi)核壓縮后最小只有0.5MB,解壓后包含文件和網(wǎng)絡(luò)系統(tǒng)也只有2~3MB。當(dāng)然這里只是基本的Linux內(nèi)核(含網(wǎng)絡(luò)和文件系統(tǒng)),不包含某些應(yīng)用比如路由協(xié)議和圖形系統(tǒng)。雖然比較起傳統(tǒng)的RTOS 50KB的內(nèi)核,Linux內(nèi)核是大了不少,但是今天市場(chǎng)上的各類信息家電,通信設(shè)備(除了很低端的產(chǎn)品)很多的系統(tǒng)都有超過(guò)2MB的Flash和4MB的SDRAM,而且內(nèi)存器件的價(jià)格也相當(dāng)?shù)谋阋恕?
設(shè)備驅(qū)動(dòng)程序和編程接口
我們知道Linux有比傳統(tǒng)的RTOS更多的、更新的設(shè)備驅(qū)動(dòng)程序。對(duì)于絕大多數(shù)的嵌入式系統(tǒng)應(yīng)用,只要不是專用接口部分,用戶是不需要自己寫設(shè)備驅(qū)動(dòng)程序的,例如以太網(wǎng)、LCD和USB,Linux都有現(xiàn)成的設(shè)備驅(qū)動(dòng)程序。設(shè)備驅(qū)動(dòng)程序和內(nèi)核在一起為應(yīng)用提供一個(gè)編程接口,但是如果用戶專用的外設(shè)是需要自己按Linux設(shè)備驅(qū)動(dòng)規(guī)范寫一個(gè)標(biāo)準(zhǔn)的驅(qū)動(dòng)程序,Linux應(yīng)用是無(wú)法直接控制外設(shè)(Linux內(nèi)核只提供給應(yīng)用程序一個(gè)簡(jiǎn)單直接訪問(wèn)內(nèi)存或I/O方式),可以說(shuō)所有外設(shè)、I/O、中斷一般都是在設(shè)備驅(qū)動(dòng)程序中處理,這與傳統(tǒng)RTOS完全不同,因?yàn)閭鹘y(tǒng)的RTOS沒有象Linux的進(jìn)程保護(hù)機(jī)制。
嵌入式Linux多任務(wù)的編程接口目前推薦的是Pthread(即POSIX線程),它在功能上與傳統(tǒng)的RTOS的任務(wù)很接近,比較簡(jiǎn)單的方法是在一個(gè)進(jìn)程下建立若干個(gè)線程,這樣就像使用任務(wù)一樣進(jìn)行系統(tǒng)調(diào)度,Pthread目前還在繼續(xù)發(fā)展,現(xiàn)在已經(jīng)可以支持高分辨率的定時(shí)器。
嵌入式Linux的可靠性
許多人簡(jiǎn)單地認(rèn)為開放源碼就是沒有人負(fù)責(zé)任只能用在可靠性要求比較低的設(shè)備和環(huán)境上。事實(shí)并不是這樣的:
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論