What is 开源硬件项目? |
opensource已经如此深入人心,以至于任何对它的说明都有点多余,但是在硬件工程师---尤其是板级的---中间,opensource还仅仅是一种概念。
硬件项目可以分为设计和实现两个部分,但是具体步骤的归属往往十分主观。我的划分是制板或者流片前的所有步骤都属于设计,这种分类使得我们可以提出开放设计的概念;而对于硬件,如果不加以说明,往往指的是硬件的实现或者实现的物理对象。将硬件设计与实现分开,特别是与实现的物理对象分开,这也是顺理成章的,因为硬件实现的物理对象--无论是PCB板还是IC--都是实现设计的平台(platform),就像计算机仅仅是运行/实现软件的平台,不能把计算机视为软件的衍生一样。这带来一个好处,就是我们可以规定硬件设计是符合GPL或者BSD协议,而不用担心是不是应该让任何人也能免费获得硬件了。
这也是不得以而为之,如果你在google上搜索“free hardware”的时候,恐怕80%的链接是关于如何获得免费(gratis)的PC或者显卡。因为人们提到free的时候,都不得不特意说明是“free beer”还是“free speech”的意思。为了避免这个被用滥的“free”,我们可以称一个开放设计的硬件项目为“open hardware”项目,可是由于OHCP(http://www.open-hardware.org)的努力,现在“open hardware”特指那些提供了全部接口信息使得可以在opensource操作系统上使用的硬件产品。当“hardware”特指硬件的实现时,作为物理对象存在的hardware是无法“开放”或者“自由”的(或许在商业的意义上可以“免费”),所以幸好无论“free hardware”或者“open hardware”都不足以描述采用opensource方式进行硬件设计的项目,如果不介意我滥用“opensource”这个名词的话,确切的名称应该是“opensource hardware design project”。
开源硬件开发和开源软件开发最大的一点不同是,软件的复制成本相对于开发成本来说是极小,使得开源软件更容易被人们接受和参与,从而促进开源软件的发展;但是硬件实现的复制成本很高,所以即使硬件设计可以自由复制和分发,开源硬件项目也很难得到广泛的关注。再深入分析,可以发现之所以复制成本有所不同,是因为平台的可重用性不同:软件实现(或运行)的平台是计算机,它的可重用性是很高的,所以计算机的成本分摊到计算机中所安装每一个软件上就非常微弱,很难想象如果一台计算机只能安装一种软件的话,开源软件项目还能够得到认同,那时候人们恐怕只会选用能够得到厂商保证的私有版权软件;相反的,一种硬件设计的实现往往只能在特定的平台---特定的元器件及其连接发式---下完成(这个对于可编程设备(programmable logic device)并不正确,这个我会在后面谈到),使得硬件平台的重用性很差,于是硬件实现的成本极高。在历史上也的确如此,70年代的美国,在home-brew
club和BBS中,人们互相交流自己在面包板上设计的计算机,改进设计,并且与其他人分享,因为爱好者使用的是廉价(或可重复使用)的元器件和面包板,系统工作频率最多几MHz,这时候平台自身成本比较低,而且因为一定的重用能力而进一步降低;但是随着80年代的到来,硬件系统的性能和复杂度进一步提高,当器件普遍采用BGA或者CS封装,工作频率高到不得不采用昂贵的EDA软件进行信号完整性分析的时候,平台成本急剧增加,个人设计和制造一台计算机变得几乎不可能,硬件设计逐渐被大公司所包揽。从此可以看出,平台的成本是决定开放设计的关键。
值得庆幸的是,现在我们又有了开源硬件开发的机会。可编程逻辑器件的出现,使得硬件实现平台的重用性大大提高,一种硬件设计可以很容易地在可编程逻辑器件(尤其是FPGA)构成的平台上进行测试和修改,从而使得硬件实现平台的成本可以分摊到多个硬件设计中,从而降低硬件设计复制的成本。而且由于FPGA的出现,使得多个硬件设计可以通过片内总线(如Wishbone、AMBA或者XSOC等)结合到一起,进一步扩展功能和降低成本;另外一个好处是,如同开源软件所做的那样,我们也可以通过建立自己的“操作系统内核”(CPU软核和片内总线)、“系统库”(功能单元的IP核)以及“应用程序”(各种外设的IP核),达到一种完全自由的理想世界;并且我们建设的这个自由世界并不会被平台供应商所束缚,就像开源软件不可能被Intel或者SUN挟持一样,开源硬件设计也将由于高度的移植性得到更大的自由和发展。
但是,我们也不得不看到,开源硬件的发展现在完全取决于开源的开发工具的成熟程度。在开源软件的历史中,我认为最重要的软件就是GCC,这是一切开源软件的脊梁。正是因为有了跨平台和高性能的GCC,才使得开源软件可以完全摆脱硬件和软件厂商的控制,达到今天的境界。反观开源的EDA工具,还远远没有一种可以成熟到可以可以和商用EDA工具相比拟,更不用提抗衡了。这样当我们豪情万丈地谈论完开源硬件的远大前程以后,还得面对屏幕上那些来路不正的EDA工具。一个勉强能用的开源的自动布线器,也许比10000个完美的OpenARM项目还要重要。
|
|