自 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足够简单,这样开源硬件才有可能大众化。
让开源硬件达到跟开源软件一样的程度,现阶段还只是极客们的一个伟大梦想。但我深深得为这种极客精神所折服。