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