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