天天看點

嵌入式系統開發,不用Linux的理由 ! (轉,這個有點牛!)

原文:http://blog.csdn.net/raymondxu/archive/2005/01/31/275191.aspx

筆者應該可以算作國内第一批玩Linux的IT人,最早在Linux上做開發的時候,電腦市場的高端配置還是486。随着項目經驗的增加,我深深的感到,在國内,對Linux還有很多誤解,尤其是嵌入式開發上面,目前我現在還有很多項目進行在Linux平台上面,但是我認為,對于嵌入式裝置,Linux在大多數情況下并不是首選, 在很多時候甚至是下策。

除了Linux,你還有很多選擇:

現在流行的作業系統五花八門,下面我來分們别類的說說:

随着IC業的發展,出現了越來越多的價格低廉、結構小巧的CPU和外設。限制嵌入式系統發展的瓶頸就突出表現在了軟體方面。盡管從八十年代末開始,陸續出現了一些嵌入式作業系統,比較著名的有Vxwork、pSOS(已被收購)、QNX、Neculeus、Windows CE、PALM、SmartPhone等。但這些專用作業系統都是商業化産品,其高昂的價格使許多低端産品的小公司望而卻步;而且,源代碼封閉性也大大限制了開發者的積極性。

另一個方面,這些商用的作業系統往往有非常完善的技術支援和豐富的軟體包,以WinCE為例,他的PlatForm Bulider安裝CD光牒有7張,容納了大量的應用架構,使用者隻需要做很少的改動就能生成一個應用程式。工作強度和普通PC機上開發沒有太大的差別。

目前,以Linux為首的開源嵌入式系統發展勢頭強勁,比較有代表的有Linux(包括uClinux,RtLinux等),RTEMS,eCos,uCOSII等。國内的使用者大多使用Linux和uCOSII。但是我認為各種系統有自己存在的理由,我從事的大多數項目中,向客戶推薦的不是Linux和uCOSII,而是RTEMS和eCos。理由很簡單,Linux過為複雜,速度慢,實時性差;而uCOSII又過于簡單并且需要版稅。

Linux本來就不是為嵌入式系統設計的,現在Linux2.6的kernel source壓縮包大小更是有30多兆。Linux源代碼解析那種大部頭的書又有多少人從頭到尾看過。這導緻很多問題無法解決。以前,某客戶要求使用Linux給他們做底端路由器,我們使用了一套比較成熟的ARM+uClinux系統,結果,該系統會不定期的當機,調試了很久也沒有結果。過了幾個月,發現是uCLinux本身的一個bug。期間,該客戶由于系統不夠穩定,錯過了幾個大單。此後,另外一個Linux的系統,用于VoIP網關,結果,運作速度非常慢,資源消耗也很大。幾乎沒有辦法達到設計要求。後來,改用eCos,不但能達到編解碼速度要求,而且無論是對記憶體還是對Flash,占用都大為減少。這樣的項目舉不勝舉,後來總結出一條經驗,Linux用來做Demo版本,商業版本用其他RTOS。

實際上,這樣的例子還很多,現在,很多嵌入式系統設計服務提供商動不動就是Linux,好像将Linux和嵌入式系統劃上了等号。為什麼? 無非是因為下面的原因:

1 作業系統源代碼開放

2 網上資源豐富,很可能可以找到開放源碼的整套環境,可以大大縮短開發周期

3 程式設計接口友善,熟悉,跟台上機上開發幾乎沒有什麼差別

4 上層應用豐富,而且也開放源碼

5 低層接口統一

6 TCP/IP等協定自帶

但是我認為這是站不住腳的。我們一個一個來看Linux的所謂優勢:

1. “開放源碼”很多嵌入式系統都是開放源碼的如:eCos,RTEMS,NetBSD等等。這些系統都比Linux簡單易懂。此外值得提出的是。Linux是GPL協定的,也就是說,你對Linux的任何修改,都必須公開。而NetBSD等系統就不是,他們是遵循更為開放的BSD協定,你對系統的任何修改,都有權保密。這對于商用系統來說,是非常重要的。

2. “網上資源豐富” 這個……我隻能說其他系統應用資源也很豐富。但是總體上,Linux資源比其他系統豐富,主要展現在桌面系統上,在嵌入式領域的應用軟體,Linux并沒有明顯的優勢。

3. “程式設計接口友善,熟悉,跟台上機上開發幾乎沒有什麼差別”程式設計接口上來說eCos,RTEMS和NetBSD都提供POSIX的API,這意味這,在Linux上面的代碼,幾乎不用做修改就可以移植到上面的系統中。

4. “上層應用豐富,而且也開放源碼”嵌入式系統大多是用于專業用途的,很多上層應用比如GNOM,在嵌入式領域,并沒有太大用途

5. “低層接口統一。TCP/IP自帶” 一方面,Linux底層十分複雜,其接口也非常複雜,這導緻給Linux制作驅動需要大量的時間(當然,也有不少驅動是現成的),同時複雜的層次結構導緻驅動的效率底下。

6. “TCP/IP等協定自帶”幾乎所有的嵌入式系統都提供TCP/IP,這個不是Linux的專利。

此外,uCosII也存在不少問題,他很簡單,他不是想大多數人想的那樣是免費的,他的免費隻表現在他的教育版本。如果你用uCOSII作出了東西要出口到歐盟,很可能被kaka。而且uCOSII免費的地方也很少,需要TCP/IP?掏錢,需要檔案支援?掏錢......這導緻uCOSII的免費版本隻能算作一個玩具。

真正好的嵌入式系統應該滿足1-6,此外還應有下面幾點,注意,這些一直都是Linux的贽垢

1 實時性支援(不要認為RTLinux的實時性就很好,他隻不過有些改善罷了)

2 資源占用小

3 支援低功耗

……

此外使用Linux在降低軟體成本的同時,會大大提高硬體成本,就好像如果有些程式用386+DOS就能跑,現在非要換成了586+windows2000成本的提高不說,速度隻會變慢。現在市場競争激烈,很多硬體裝置利潤就隻有幾塊錢。如果用了Linux, 很有可能成本控制不了。

總之,Linux隻适合高端嵌入式系統中(如商用路由器等),如果CPU< 100MIPS, 最好還是不用Linux為妙。

繼續閱讀