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