在嵌入式系統(tǒng)開發(fā)中人們總會提及一個問題:“開源軟件與商用軟件,哪個更符合我們的應(yīng)用呢?”
關(guān)于開源代碼和商用代碼的討論總是能激起極客們的熱情。這個討論就等同于在硬件方面人們討論哪種電容是音頻電路的理想選擇。大多數(shù)人都不希望使用的東西需要軟件許可,所以開源和商用的區(qū)別在很多技術(shù)領(lǐng)域引起了哲學(xué)性的討論。
當(dāng)把一個嵌入式系統(tǒng)領(lǐng)入市場時,開源與商用哪種模式更好呢?有時候你別無選擇。
1源代碼101
企業(yè)出于掌握自己命運(yùn)及未來潛在成本的考慮,會在源代碼上下很多功夫。那么,什么是源代碼呢?源代碼是指揮處理器進(jìn)行工作的人類可讀指令。只有源代碼,計算機(jī)什么都做不了。它必須編譯為計算機(jī)可識別的二進(jìn)制代碼。如果你有源代碼,你就可以對它進(jìn)行修改和再編譯,并創(chuàng)造一個符合你的獨(dú)特需求的應(yīng)用程序。你也可以通過查看源代碼來保證程序沒有漏洞或后門程序。操作系統(tǒng)也可以開源從而透明化,在更深層次上控制處理器以提供中斷處理、周邊管理等等。
2操作系統(tǒng)和編譯器
使用開源軟件,你可以不受他方限制的應(yīng)用你的產(chǎn)品(無論是開源操作系統(tǒng),程序或者軟件開發(fā)工具)。如果有必要,你可以自己進(jìn)行開發(fā)。基于專利的商用系統(tǒng),如果沒有經(jīng)過你個人改進(jìn),那只會在被淘汰后才有可能開放使用。例如,一個操作系統(tǒng)(OS)需要在其他的公司購買和維護(hù)才能在你的中斷設(shè)備上使用,但是那個公司如果被你的競爭對手收購呢?他們會放棄對于新技術(shù)的更新和漏洞修復(fù)。更嚴(yán)重地,如果沒有合同保護(hù),你可能會被要求立即停止使用軟件。
另一方面,如果你使用開源的編譯器和操作系統(tǒng),你需要知道你正在做什么;在嵌入式系統(tǒng)中開源的很少有成套工具。你還需要對開源維護(hù)社區(qū)能對你的產(chǎn)品進(jìn)入市場的急切需求所能做的事情有一個合理的預(yù)估,因為開源軟件使用新技術(shù)的進(jìn)程相對比較緩慢。你可以自己解決自己的需求,同時也為開源社區(qū)做出貢獻(xiàn),即使這樣,接受為正式庫的進(jìn)程也不一定如你期望。當(dāng)然,你也可以不把你的改進(jìn)貢獻(xiàn)給社區(qū),這完全合法,不過無論你認(rèn)為它有多好,除了你自己,沒有人會幫助你維護(hù)它。
這里提一下開源硬件(OSHW)。開源硬件是“類開源”,它會提供原理圖的源文件。但這種開放性無法延伸到片上系統(tǒng)(SoC),處理器或電路板上的支持新片。開源硬件也可以使用商用開發(fā)工具,這取決于處理器。然而,“開源”的概念已經(jīng)擴(kuò)展?jié)B入到各個設(shè)計領(lǐng)域,并不局限于電子產(chǎn)品。“開放”通常指公開分享信息,以便其他人對設(shè)計(無論是實(shí)體產(chǎn)品,軟件,教育或想法)進(jìn)行重現(xiàn)。事實(shí)上,一場開源的運(yùn)動正在進(jìn)行之中,很多人認(rèn)為它受與1991年底出現(xiàn)的Linux系統(tǒng)的啟發(fā)。
3優(yōu)點(diǎn)、缺點(diǎn)及誤解
凡事都有兩面性,開源與商用軟件受到了同樣的誤解。開源的最復(fù)雜問題是大量的許可證,即使最精明的技術(shù)員也可能被搞暈。為了達(dá)到本文的目的,我們使用開源代碼促進(jìn)會對開源的定義——開源軟件是可以被任何人隨意使用、修改和分享的軟件。開源軟件由很多人開發(fā),并在擁有遵守開源定義(原網(wǎng)頁鏈接)的許可證的條件下發(fā)布。
應(yīng)用最多的開源許可證包括Creative Commons(知識共享組織)許可、Apache許可,BSD(加州大學(xué)伯克利分校軟件)許可,GNU通用公共許可,麻省理工許可和Mozilla公共許可。想要得到完整清單,可以點(diǎn)擊這里(原網(wǎng)頁鏈接)。開源許可多種多樣,但是一個典型的許可證可以保證你在一個開源項目中建立和擴(kuò)展,那些在你工作基礎(chǔ)上繼續(xù)開發(fā)的人必須在同一個許可下寫入他們的代碼。這樣可以避免別人在你的辛苦工作上獲利,至少很難做到。
根本上來講,開源軟件是對云端集體智慧的獲取和分享。很多大的不兼容開源項目由一小幫志愿者進(jìn)行開發(fā)、調(diào)試及整理源代碼。而有些項目會聚集數(shù)量龐大的社區(qū),使得開發(fā)者可以向終端使用者索取適當(dāng)?shù)馁Y金。開源項目中用戶與開發(fā)人員相互協(xié)作的屬性使其可以吸引新用戶和程序員。對于獨(dú)立開發(fā)者來說,參與開源項目是一項很重要的能力體現(xiàn)。有些人參與其中是為了從他人那里學(xué)到知識,不管通過何種學(xué)習(xí)模式你都需要有謙卑的態(tài)度和心里承受能力,畢竟開源是開放的(別人都可以看到你的不足)。你的代碼可能會被別人挑出來,批評或表揚(yáng)(有時來自同一個人)。社區(qū)中所有被貢獻(xiàn)的代碼里只有最好的會被加入到維護(hù)版本中,以讓大家對程序員的技術(shù)進(jìn)行查看及評論。
相反地,如果使用商用軟件,經(jīng)營者通過對他們的代碼實(shí)施版權(quán)限制以給保留更多的合法權(quán)益。商用軟件就是典型的“閉源”,即使你購買了應(yīng)用程序,也無法訪問源代碼。通常在“用戶許可協(xié)議”(EULA)或其他法律性文件中列出了完整的限制條例。這些協(xié)議規(guī)定了用戶使用程序時可以及不能做的事情。這是為了限制對程序進(jìn)行修改、分享、再分布以及反向工程操作的行為。總而言之,商用軟件是一種知識產(chǎn)權(quán)。比如說,你發(fā)明了一種獨(dú)特的算法,該算法成為了你的產(chǎn)品中的“秘方”,對它進(jìn)行商用許可限制則是一種明智的行為。反過來講,如果你的軟件是眾多解決辦法之一,那么對你的代碼進(jìn)行開源會使你的想法被更多人承認(rèn),至少是贊譽(yù)。
有一點(diǎn)必須要澄清的是開源并不意味著免費(fèi),商用也不意味著必須花錢才能使用。另外,認(rèn)為開源是業(yè)余人員的項目,專業(yè)開發(fā)人員只做商用軟件的想法也是錯誤的。然而,然而,當(dāng)你選擇了一個商用軟件平臺,必須先搞清楚它許可證中的費(fèi)用收取架構(gòu),以免當(dāng)你使用軟件時被它的使用費(fèi)用嚇到。另外還要交付“版稅”,以供開發(fā)人員對他們的程序代碼進(jìn)行優(yōu)化及調(diào)試。從開發(fā)人員的角度來看,這意味著商用軟件開發(fā)商可以給他們提供準(zhǔn)時而長久的資金支持(有些情況下,維護(hù)和支持費(fèi)用的協(xié)議是以年費(fèi)來記得)。
因為商用和工業(yè)嵌入式系統(tǒng)需要使用幾年到幾十年,所以來自開發(fā)商長久的支持至關(guān)重要。從這方面來說,開源軟件不如商用軟件那么可靠。如果一個關(guān)鍵開發(fā)人員決定退出一個項目而沒有人能夠頂替他的工作,則這個應(yīng)用會很快失去競爭力,就像現(xiàn)在沒有那個基礎(chǔ)技術(shù)能像USB 3.1一樣更新。但是至少你已經(jīng)獲得了源代碼,如果你有足夠的專業(yè)知識、時間或金錢雇人替你做,你就可以對代碼進(jìn)行改進(jìn)。對于商業(yè)軟件的代碼,在沒有原創(chuàng)人員同意的情況下獲取源代碼或進(jìn)行改進(jìn)的行為是違法的。
還有更復(fù)雜的情況,有的軟件中同時包含開源和商用代碼。例如,蘋果的操作系統(tǒng)OS X就是在開源的UNIX操作系統(tǒng)上建立。然而,窗口化的系統(tǒng)使得OS X人機(jī)交互界面是非開源的。Google的安卓操作系統(tǒng)源代碼被別人模仿改造,并安裝在他們經(jīng)過授權(quán)的手機(jī)中,這種行為是合法的,但他們的代碼不受Google支持和維護(hù)。(這種改造通常造成手機(jī)中軟件臃腫——一些不必要的軟件會消耗電量和內(nèi)存,也無法刪除。)
圖1:德州儀器最新的開啟面板(開源硬件),使用MSP32處理器,面向筆記本、便攜設(shè)備、智能電網(wǎng)、醫(yī)藥自動化與控制市場
4當(dāng)二進(jìn)制遇到金屬:嵌入式系統(tǒng)中的開源和商用軟件
嵌入式電子設(shè)備的世界一直被商用軟件統(tǒng)治,包括像集成開發(fā)環(huán)境(IDE),即時操作系統(tǒng)(RTOS)以及固件庫等。像Arduino的一些平臺想要改變現(xiàn)狀,但是很多“專業(yè)”平臺仍然在專有許可協(xié)議之下處于封閉狀態(tài)。不僅是開源社區(qū)想要推進(jìn)這種改變,美國國防部以及國家航天局也想促進(jìn)建立開源架構(gòu)使得協(xié)作、數(shù)據(jù)共享以及避免“廠商鎖定”——項目的推進(jìn)被限制在一個供應(yīng)商中而造成低壽命高成本。
一些已成立的嵌入式平臺開發(fā)公司正在響應(yīng)開發(fā)者們對更多開源解決方案的需求。隨著開源慢慢地滲入到嵌入式系統(tǒng),其它的公司也開始反思許可費(fèi)用以期望吸引更多的開發(fā)人員。從集成開發(fā)環(huán)境的角度來看,開源的Arduino集成開發(fā)環(huán)境與其它平臺相比非常的簡樸,商用平臺像德州儀器的代碼調(diào)試器,包含很多重要的專業(yè)特性,比如功耗監(jiān)測。德州儀器也支持一個叫做Energia的開源產(chǎn)品作為其它微處理器的替代品。意法半導(dǎo)體的開放式開發(fā)環(huán)境(STM32OE)中有他們的開源硬件Nucleo 開發(fā)板。德州儀器和意法半導(dǎo)體這樣專注于提供集成電路芯片的芯片制造商,也清楚的認(rèn)識到硅片并不是嵌入式系統(tǒng)的全部。而軟件已經(jīng)觸及到電子設(shè)備的方方面面;即使是集成電路的設(shè)計者也必須使用向Synopsis、Mentor Graphics以及Cadence等工具軟件開設(shè)計集成電路版圖。
圖1:開源硬件Nucleo開發(fā)板大約10美元,包括免費(fèi)的mbed.org工具軟件,也可以支持KEIL工具。STM32與大多數(shù)Arduino兼容。
5開源:不再單指軟件
硬件也在進(jìn)行開源化改革。可想而知,關(guān)于硬件開源的討論會更復(fù)雜。軟件的軟代碼一但寫出來很快就可以得到版權(quán)保護(hù)。另外,源代碼中不存在有形資產(chǎn)呢。在硬件的世界中便是另一幅景象。CAD設(shè)計文件和3D打印機(jī)的STL文件最終可以轉(zhuǎn)化為實(shí)物產(chǎn)品。那么版權(quán)是僅對設(shè)計文件有效,還是對最終生產(chǎn)的有形產(chǎn)品都有效呢?雖然傳統(tǒng)觀點(diǎn)認(rèn)為版權(quán)對實(shí)物不產(chǎn)生作用,這種未知領(lǐng)域還沒有經(jīng)過測試。現(xiàn)在已經(jīng)有了開源硬件專用的許可,使用最廣泛的是CERN開源硬件許可和TAPR開源硬件許可。
6概要
出于對嵌入式開發(fā)領(lǐng)域的尊重,使用開源或商用軟件通常取決于所選用的硬件。如果微控制器或現(xiàn)場可編程門陣列所在的項目說明書只來自一家供應(yīng)商,而且供應(yīng)商把他們的代碼封鎖起來,那么你就沒有機(jī)會獲得它們。你或許可以爭取獲得更多數(shù)據(jù),但也要付出額外的開銷。也就是說,隨著硬件越來越商品化,多個廠家可以提供類似的解決方案,需要更多的軟件許可的廠家可能會影響到整體的市場供給平衡并產(chǎn)生分化。因此可以推測,隨著產(chǎn)品的商業(yè)化,更多的供應(yīng)商會在軟件方面提供更多的選擇。集成開發(fā)環(huán)境、(即時)操作系統(tǒng)和固件庫的許可架構(gòu)或許會影響到開發(fā)人員的選擇。無疑,在越來越多的社區(qū)、貢獻(xiàn)者的推動下,在法律的完善和秩序的確立下,開源許可的商業(yè)模式和商品正在漸漸成為主流。
-
處理器
+關(guān)注
關(guān)注
68文章
19833瀏覽量
233916 -
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3670瀏覽量
131029 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3115瀏覽量
75061
發(fā)布評論請先 登錄
SPC5 studio選擇了30days嵌入式許可證選項無法正常工作
15.2的評估許可證的許可證錯誤
ISE 14.7許可證未通過購買的有效Vivado許可證啟用
未找到Vivado系統(tǒng)版許可證的許可證
軟件報告許可證服務(wù)器沒有報告任何許可證
嵌入式系統(tǒng)的開源軟件發(fā)展如何?
嵌入式軟件設(shè)計筆記相關(guān)資料分享
開源軟件許可證的分類及比較
詳解開源軟件的許可信息
電子許可證激活MegaRAID高級軟件選項

評論