在過去的十年中,嵌入式系統(tǒng)的開發(fā)發(fā)生了很大的變化。以前嵌入式設(shè)備往往是一個孤立的、資源有限的系統(tǒng),它們追求的是在有限的價格上滿足一定的功能性要求。通常它們采用那些功能并不強大的CPU,這也是開發(fā)者不得不盡可能地壓縮嵌入式系統(tǒng)性能的原因。而今天人們對嵌入式設(shè)備在智能化和互連性上提出了要求,這使得嵌入式設(shè)備不再是孤立的,他們要通過互聯(lián)網(wǎng)、無線或是其他的方式實現(xiàn)相互連接,同時它們也是軟件生態(tài)系統(tǒng)(software ecosystem)的一部分。初的嵌入式設(shè)備是單一用途的,它們擁有各自獨特的顯示方式和用戶界面;而今天它們變成了我稱之為“等同PC”的系統(tǒng)。它們必須運行很多相同的應(yīng)用程序,它們需要采用相同的方式實現(xiàn)互連或是在某些情況下增強互連性。因此你可以看到在傳統(tǒng)的實時操作系統(tǒng)(RTOS)之上建立應(yīng)用程序的必要性。作為內(nèi)部開發(fā)(in-house developed)操作系統(tǒng)的替代方式,RTOS的出現(xiàn)使得建立嵌入式應(yīng)用變得更加容易。
在2000年以前,大多數(shù)的嵌入式系統(tǒng)仍然建立在內(nèi)部開發(fā)的操作系統(tǒng)(OS)基礎(chǔ)之上,但在此之后,WindRiver和其他的商業(yè)化RTOS產(chǎn)品逐漸贏得了越來越大的市場份額。
如果開發(fā)者試圖通過內(nèi)部開發(fā)建立某些嵌入式系統(tǒng),就不得不建立從固件到應(yīng)用程序的完整的軟件棧(software stack)。垂直集成在給開發(fā)者帶來很大的控制能力的同時,也需要其在開發(fā)和維護上進行大量的投入。在過去的五年中,在經(jīng)歷了全球性的經(jīng)濟危機之后,面市時間(time-to-market)意味著一切,追求附加值成為電子業(yè)重要的追求。因此,如果你是一個工程經(jīng)理,考慮到你手中的資源,你是寧愿投資去創(chuàng)建一個自主產(chǎn)權(quán)的操作系統(tǒng)軟件平臺,還是去開發(fā)那些可以給你的應(yīng)用帶來差異化的技術(shù)呢?我相信你會選擇后者,因為開發(fā)者通常希望使他們的應(yīng)用變得與眾不同。這就使得內(nèi)部開發(fā)操作系統(tǒng)整合自主產(chǎn)權(quán)內(nèi)核的方法逐漸被淘汰。
如果你使用VxWorks或者是pSOS,仍然免不了要在建立應(yīng)用軟件和中間件上進行大量投入。這是因為圍繞在這些操作系統(tǒng)周邊的生態(tài)資源十分有限。例如對于VxWorks,只有一種Webserver可供使用,而如果采用Linux,會有八九種Webserver供你選擇;VxWorks只提供了一種網(wǎng)頁瀏覽器,而Linux有16種不同的網(wǎng)頁瀏覽器支持。通常情況下對于某種實時系統(tǒng)你只能選擇一種文件系統(tǒng)——通常情況下為與windows兼容而選用FAT文件系統(tǒng);而Linux包含八九種本地文件系統(tǒng),它們可以與十多種外部文件系統(tǒng)兼容。
傳統(tǒng)的RTOS與Linux相比還有一個很大的不同——傳統(tǒng)的RTOS是一系列“服務(wù)”的集合(libraries of services),開發(fā)者需要一個功能就加入一個功能,如果開發(fā)者不需要就將它們?nèi)サ簟5@就意味著建立在一個RTOS上的系統(tǒng)的每一個執(zhí)行程序都是不同的,因為開發(fā)者只是與那些需要的“服務(wù)”相聯(lián)系,你建立的是一組非常獨特的服務(wù)集合。這并不象是一個操作系統(tǒng)。而象Linux這樣的操作系統(tǒng)提供了一個統(tǒng)一的平臺,這使得那些智能設(shè)備不但可以獲得更好的互連性,增強它們彼此之間的差異性,同時也使它們獲得了不同的生命周期。
以手機的開發(fā)為例,一部智能手機在離開工廠時,它具有一系列確定的功能。但是在銷售渠道中,人們往往希望對它原有的功能進行修改,或是加入其他的功能。運營商希望在他們銷售的手機中體現(xiàn)出更多的差異化,他們希望加入諸如游戲等更多的服務(wù)。而終用戶也許還希望能夠從第三方購買到更豐富的游戲(和其他服務(wù))。如果開發(fā)者的手機是一個單一用途的設(shè)備,它只能提供有限的服務(wù),那么在它基礎(chǔ)上建立服務(wù)和其他增值功能將是非常困難的。但如果開發(fā)者面對的是一部采用嵌入式Linux的手機,并了解API和相關(guān)的標(biāo)準(zhǔn),他們就可以十分迅速地建立起豐富的軟件生態(tài)系統(tǒng)并迅速占領(lǐng)市場。產(chǎn)品長期的差異化與互連性息息相關(guān),這包括它的網(wǎng)絡(luò)互連性、與中間件的互連性,以及與外圍生態(tài)環(huán)境的互連性。Linux作為一個“在互聯(lián)網(wǎng)上成長起來的動物”,無論從哪方面講都應(yīng)該算是互連性的操作系統(tǒng)。
有人會將Linux與微軟的Windows相比較,確實Windows具有很好的互連性,且具有非常全面的軟件棧。但一旦開發(fā)者用Windows建立了產(chǎn)品,他也就喪失了實現(xiàn)差異化的機會。僅僅將Windows OS加到你的產(chǎn)品中并實現(xiàn)商用是十分迅速的。所以如果你想獲得面市時間上的優(yōu)勢,Windows會給你帶來很多功能性上的優(yōu)勢。但是你獲得功能性的同時,也就失去了差異化的機會。
當(dāng)然,Windows還有其他一些技術(shù)上的問題,這主要體現(xiàn)在可靠性和軟件規(guī)模方面。Windows的“體積”十分龐大。人們都在說Linux很大,確實與傳統(tǒng)RTOS的70~80k的代碼規(guī)模相比,Linux的大小通常在幾兆字節(jié),而小的Windows CE的代碼規(guī)模也有27MB(BIPLIP標(biāo)注:應(yīng)該是2~3MB)。出于政治和法律上的考慮,微軟是不能將Windows進行拆分的。
同時,Windows和其它RTOS還將遇到來自用戶不斷增加的使用成本(runtime costs)方面的挑戰(zhàn),因為他們收取高額的版稅。嵌入式Windows的版權(quán)費大約為每拷貝12~15美元。對于那些大批量的產(chǎn)品,其每件產(chǎn)品上可承受的分?jǐn)偝杀臼钟邢蓿绻騑indows支付這樣的版稅,很可能會造成虧本。其它商業(yè)化的RTOS采用的也是這樣一種收取版稅的商業(yè)模式。而Linux,其突出的一個優(yōu)點就是免版稅的。
Linux還具有很好的可靠性。傳統(tǒng)的RTOS通常不具備強大的內(nèi)存保護功能,這使應(yīng)用程序很容易被破壞。
另一個影響嵌入式系統(tǒng)對操作系統(tǒng)選擇的是商業(yè)因素。在這方面?zhèn)鹘y(tǒng)RTOS供應(yīng)商和微軟的境遇是相同的。傳統(tǒng)RTOS供應(yīng)商和微軟都會在不與客戶協(xié)商的情況下終止某一產(chǎn)品的供應(yīng),他們的商業(yè)決策是從他們公司自身的利益出發(fā)的,而不是站在客戶的角度考慮。Linux則能給予使用者更多的選擇。
如果采用一個開放源碼的操作系統(tǒng),開發(fā)者能夠主宰他們自己的命運,他們不必被一個供應(yīng)商的決策牽著鼻子走,他們總是有很多選擇。即使他們選擇了MontaVista這樣商業(yè)化的Linux供應(yīng)商,他們依然能夠保有對開放資源進行客戶化和利用的選擇性,他們可以選擇繼續(xù)和MontaVista合作或是走開。
我們還注意到,現(xiàn)實中,與MontaVista所提供的商業(yè)化版本的Linux形成競爭的除了Windows和其它RTOS,還有由用戶自主開發(fā)(roll-your-own)的Linux。但是建立和維護一個基于Linux的平臺是很艱巨的工作,而對于用戶來說,這是一種無法創(chuàng)造附加值的工作。我們?nèi)粘9芾碇鳰ontaVista的Linux環(huán)境中超過4200萬行的代碼。嵌入式應(yīng)用程序平均的代碼長度多是50萬行,很多組織是沒有能力去管理4200萬行代碼的。
如果你著眼于源代碼的開發(fā),即使是針對單一目的的應(yīng)用,其源代碼的規(guī)模也將以千萬行計。為了完成內(nèi)核的維護工作,你需要每年投入10個工程師的力量;同時你還要花費35~40人年去建立整個嵌入式Linux操作系統(tǒng)。很多公司試圖用兩個工程師去維護一個自主研發(fā)的Linux項目,這樣開發(fā)者很快就會發(fā)現(xiàn)他們已經(jīng)陷入困境。
自主開發(fā)Linux過程中會遭遇到的另一個問題是,你是在一個開放資源基礎(chǔ)上開始工作的,同時你需要投入大量的時間和精力在基礎(chǔ)性資源的周圍建立一個平臺。但是Linux是開放源碼的,其發(fā)展速度十分迅速。因此大多數(shù)自主開發(fā)的項目實際上是我們稱之為“某一時間點(point-in-time)”的版本,因為開發(fā)者只是選取了某一時段的源代碼并基于它進行開發(fā),而并不想繼續(xù)投資以保持與Linux同步的發(fā)展。而象MontaVista這樣的供應(yīng)商會保持大量基礎(chǔ)性的投入跟蹤Linux的版本,并將其加入到產(chǎn)品中來。
有人會說,也許是因為開發(fā)者的規(guī)模太小而沒有充足的預(yù)算去自主開發(fā)Linux,那么讓我們來看看那些大的嵌入式開發(fā)者的選擇又是如何的。規(guī)模較大系統(tǒng)OEM,他們擁有數(shù)以千計的開發(fā)工程師,這些大公司也許應(yīng)該有工程資源在內(nèi)部開發(fā)一個Linux平臺。但同樣,他們的預(yù)算也十分有限,他們也面臨著增加附加值的挑戰(zhàn),他們在Linux之外還有很多其他的問題需要解決。他們面臨著不同的項目,而每個項目建立在不同的微處理器的基礎(chǔ)上,同時還需要不同的中間件和應(yīng)用軟件棧與之相配。因此很難說他們是否能夠在統(tǒng)一公司內(nèi)部不同的Linux版本方面花力氣。
MontaVista建立了一個統(tǒng)一的基礎(chǔ)資源,可以為那些大OEM建立一個我們稱之為“策略平臺”的統(tǒng)一的Linux平臺。因此我們可以在相同的源代碼上建立針對MIPS、ARM、PowerPC或SH等不同處理器架構(gòu)的Linux。要想建立這樣的Linux系統(tǒng)需要大量的基礎(chǔ)性投入,而大多數(shù)嵌入式系統(tǒng)公司是不會在他們的產(chǎn)品之外投入一分錢的。
因此如果他們試圖使用自主開發(fā)的Linux時,他們將面臨很大的風(fēng)險,因為他們自主開發(fā)的Linux的品質(zhì)將受制于他們能夠投入的資源的多少,即使是一個大公司也不會象MontaVista這樣投入這么多。我們整個的業(yè)務(wù)都集中在這方面。
如果你使用一個有知識產(chǎn)權(quán)約束而非開放源碼的操作系統(tǒng),比如Nucleus,你是不能將其在你的組織內(nèi)部廣泛推行的。而如果你使用自主開發(fā)的Linux,你仍然將不得不對付那些針對不同應(yīng)用的變種Linux,這仍然會耗費大量的工程資源。但如果你與一個象MontaVista這樣的供應(yīng)商合作,你會得到一個單一的策略平臺。這就是要選擇一個商業(yè)化的Linux供應(yīng)商的重要原因。
嵌入式系統(tǒng)開發(fā),為什么選擇Linux?
更新時間: 2006-01-06 16:34:50來源: 粵嵌教育瀏覽量:3088