自 Dennis Allison 在 1975 年發佈它的 Tiny BASIC 以來,他倡導的開放、共享的思想得到了多數開發者的認同,這些年,軟件開源取得了令人矚目的成績。同時,他那句 “讓我們站在彼此的肩膀,而不是彼此的腳趾上。”也變成了開源軟件運動的名言。
如今,基於開放、共享理念的開源軟件運動正掀起一場硬件開源運動。開源硬件,指與自由和開放源碼軟件相同方式設計的計算機和電子硬件。開源硬件開始考慮對軟件以外的領域開源。
這個詞主要是用來反映自由釋放詳細信息的硬件設計,如電路圖、材料清單和電路板佈局數據,通常使用開源軟件來驅動硬件。
共享邏輯設計連同可編程邏輯器件之重構,也是一種形式的開源硬件。
自 20 世紀 90 年代末,工程師們就已經想到了一些方法來將開源的概念應用於計算機和電子硬件。而主要的障礙當然是軟件很容易複製並且可以被免費複製,而硬件則由實實在在的物體構成的 — 用 Chris Anderson 的話來說就是 “原子的而非比特的”。另外,硬件基本上都是受專利保護,而不是受版權保護的,而專利的獲得和捍衛是很昂貴的。
與軟件開源相比,硬件開源做起來要困難得多,那麼,“開源硬件”將來會進入大衆的視線嗎?
開源軟件流行的祕密
在談開源硬件之前,讓我們先來看一下開源軟件爲什麼會流行。普通的用戶絕對不會在乎一款軟件是否開放源代碼,使用什麼許可協議。他們唯一關注的是能不能花最少的錢用上最好的軟件。那麼,開源軟件又是怎麼做到便宜和好用的呢?
1、免費
開源軟件最吸引人的地方毫無疑問是它的免費。相比於 Windows 幾百上千的價格,可以自由傳播,自由使用的 Ubuntu 早已向前邁了一大步。對於嵌入式系統而言,開源的系統可以降低設備製造成本,實惠消費者也是不爭的事實。
2、高質
優秀的開源項目往往能吸引大量的技術天才來協助開發。於是最終發行的軟件在質量上也不會低於收費軟件。就質量上 PK,開源的 Virtualbox 也沒有比收費的 VMWare 遜色多少。
3、跨平臺
作爲一個Mac用戶,我常常爲找不到那些優秀的 Windows 平臺軟件的 Mac 版而苦惱。但是對於開源軟件則沒有這個問題。一個優秀的開源軟件即使沒有“小衆操作系統”的版本,也會有愛好者自己編譯。最終,優秀的開源軟件常常是完美支持多平臺的。例如大名鼎鼎的 AutoCAD 不原生支持 Mac,但是同樣是 CAD 軟件,開源的 Archimedes 卻同時支持 Windows 和 Mac。所以如果我常常要在兩種系統間來回切換,我顯然會選擇 Archimedes 來減少麻煩。
4、定製性強
一個優秀的開源軟件周圍常常會有數不勝數的插件。於是軟件也就會可以通過安裝插件來迎合每個人的需求——如果不理解,去看看 Firefox 那恐怖的插件庫吧。
5、問題修復及時
是軟件就會出問題,這是已經被無數次證實的真理。而開源軟件總是可以依靠羣衆的智慧,在第一時間修復問題。根據Ed bott的博客文章,Ubuntu 和 Fedora 的更新發布頻率都遠高於 Windows。
目前,已經有很多成功的開放硬件項目。
1、Power.org
2004 年,IBM 創建了 Power.org 作爲其 Power Everywhere 創意的一部分, 將 Power Architecture® 建成了一個開放硬件項目,具有免費許可的標準、設計和規範。IBM 在 2006 年宣佈了向研究和學術機構免費開放 PowerPC® 405 core 的計劃,到目前爲止,有 40 多家大學參加了這個項目。
2、OpenSPARC T1
Sun Microsystems 也緊跟着在 2006 推出了 OpenSPARC T1,這是其成功的 SPARC 處理器的一次全開放實現。目前,有三個基於 Reduced Instruction Set Computer (RISC) 的 SPARC 架構的全開放實現,源代碼用 Verilog HDL 編寫,在 GNU Public License (GPL) 許可下發布。
3、BeagleBoard
BeagleBoard 是一個基於 Texas Instruments 的 Open Multimedia Application Platform 3 (OMAP3) system on chip (SoC) 的單板計算機,它包括一個基於 ARM 的微處理器和一個數字信號處理器。BeagleBoard 使用了與很多智能手機和上網本相同的處理引擎,使它足夠強大,完全能夠運行一個完整的 Linux 發行版和提供高分辨率視頻。BeagleBoard 受一個規模很大的社區支持,而它的設計文檔,包括生產用的印刷電路板 (PCB) 的架構草圖,均可免費下載得到。而且它還孵化了幾個相關的項目。
4、Arduino
Arduino 是一個面向終端用戶設計的微處理器,具有易學易懂的編程模型、一個可供任何人使用的全開放設計,以及一個由文檔、擴展板、派生產品和社區組成的大型生態系統。根據 O'Reilly Publishing 的 Make 雜誌及每年的 Maker Faire — 喜歡向項目中添加靈活的電子特性(從閃光發光二極管到複雜的飛機導航系統)的硬件發燒友,它已經被 DIY 愛好者和玩家推崇的、發展得如火如荼的 “Maker” 運動廣泛採用。
5、OpenCores.org
OpenCores.org 是一個始於 1999 年的開放硬件機構的先驅,它是開放處理器核的門戶,提供了在各種開放許可下提供的諸多處理器核的設計文檔,包括一個免費的 RISC 計算平臺、幾個微控制器、兩個 SoC 以及一些算法、通信和其他的核,其中大多都是用 Verilog HDL 描述的。
開源硬件流行的基礎:可編程邏輯器件(PLD)
不像硬件,軟件的的開發,傳播和部署幾乎可以做到零成本。 但是如果使用“一次性”的電路,開源硬件別說投入大規模使用,連開發都成問題——開發者必須忍受極其緩慢的模擬器。但是,可編程邏輯器件的存在給開源硬件帶來了希望。
簡單的說來,可編程邏輯器件就是一個存儲器加上一個邏輯門陣列。存儲器上的數據可以控制邏輯門之間線路的通斷。有的可編程邏輯器件甚至可以反覆刷寫,多次改變內部的電路排列。
如此,開源硬件也變得如軟件一般可以“零成本開發,零成本部署”了。
開源軟件的優點可以移植到硬件上嗎
畢竟軟件和硬件是不同的。開源軟件的優勢在硬件上仍然存在嗎?
1、價格
一眼看來,似乎開源硬件會有價格上的優勢,因爲產品價格不包含可觀的研發成本。但是硬件早已不是可以“動手製作”了。然而,訂做小批量的產品是非常昂貴的。讓愛好自由的極客統一起來訂上大批量的開源硬件又是幾乎不可能的事。因此唯一可行的把開源硬件設計“落實”的方法就是把電路置於可編程邏輯器件當中。
2、品質
開源軟件往往是由一個龐大的開發者社區“催熟”的。但是開源硬件的開發者還不夠多。但這不是個問題,畢竟開發者是可以培養的。最終,優秀的開源硬件設計是完全有可能出現的。
3、跨平臺
很遺憾,硬件是無法“跨平臺”的。舉個大家熟悉的例子:即使是同爲 x86 架構,Intel, AMD 和 VIA 的處理器還是差異巨大的。因爲整個平臺的不同,所謂的移植實施起來難度也大到幾乎不可能實現。有人可能會提到全美達的 Efficeon ,但是這樣的架構在可編程邏輯器件當中即使能實現也不會有滿意的性能,而且還有各平臺針腳定義不同的問題。
4、定製性
開源硬件可以通過制訂內部總線標準去實現擴展性。但是接下來的問題是可編程邏輯器件的容量往往會極大的限制硬件的擴展性。
5、更新
可編程邏輯器件的使用讓零成本更新硬件成爲現實。於是更新的問題並不會過多阻礙開源硬件的發展。
可編程邏輯器件使硬件性能和功能失去競爭力
前面提到,可編程邏輯器件讓開源硬件的傳播成爲可能。但立於可編程邏輯器件之上的硬件還可以依靠性能和功能去打動用戶嗎?
可編程邏輯器件的原理是由存儲器內的數據決定邏輯門之間線路的通斷。所以可編程邏輯器件的結構決定了它不能承載太複雜的設計,而且功耗高,速度慢。所以,可編程邏輯器件的使用不僅限制開發者的思維空間,而且拖慢速度。對於移動設備而言,可編程邏輯器件還會降低續航能力。
硬件開源流行?極客們的偉大理想
但我們知道,按照現有的科技和組織方式,開源硬件只會在極客當中傳播。如果想要“開源硬件” 在大衆中得以普及,除非開源硬件設計足夠成熟,產品能夠滿足大衆的個性化需求,而且DIY足夠簡單,這樣開源硬件纔有可能大衆化。
讓開源硬件達到跟開源軟件一樣的程度,現階段還只是極客們的一個偉大夢想。但我深深得爲這種極客精神所折服。