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