2011年5月10日上午,Google发布了一个最新的Ardroid开放配件标准—ADK(基于Arduino)。开源硬件真的能开源吗?
继Facebook于2011年4月8日,将其位于美国俄勒冈州的一座数据中心详细技术信息(包含服务器硬件设计)公开之后,5月10日上午,在一 年一度的Google开发者峰会Google I/O上,Google发布了一个最新的Ardroid开放配件标准——ADK(基于Arduino)。开源硬件真的能开源吗?
开源硬件的朔源
开源硬件的详细历史,我在这里就不纠结了。如果你有兴趣,可以看Kevin的的文章《开放源码硬件简史》。我其实想扒一扒两种不同平台的历史渊源。我说的两种不同的开源硬件平台,一种是模块化得开源硬件,即一个带有主控芯片的主控板,加上丰富的外围模块,再加上一个开源的IDE。另一种是FPGA,开源的实际上是由硬件描述语言写成的IP核。
先说说Arduino
每一个开源项目都源于一个要解决的问题。Linux的出现 是因为Torvalds不喜欢已有的所有操作系统。当时最流行的三个操作系统——微软的DOS,苹果的操作系统,和Unix——都很贵而且封闭。 Torvalds想要一个可以自己修修补补的系统。当这个想法出现时,许多其他极客(geek)也有着同样的需求。所以当Torvalds开始构建 Linux并共享代码时,其他黑客愿意加入并免费帮助改进Linux。这形成了一个虚拟的工作团队,无论从能力还是智力,它都远远强过Torvalds本 人。这就是开源项目的主要好处:就像一个取之不竭的谷仓,用的人越多,其中的粮食就越多。某人为了解决一个问题制造了一个工具。当这个工具被造出来后,嗨 ——为什么不共享一下呢?毕竟,最困难的工作已经被完成了,而其他人也能从中受益。
Arduino是以同样的方式开始的。Banzi之前在意大利Ivrea一家高科技设计学校里当老师。他的学生们经常抱怨找不到便宜好用的微控制器驱动他们的机器人项目。2005年冬天,Banzi跟David Cuartielles讨论了这个问题。Cuartielles是一个西班牙籍芯片工程师,当时在这所学校做访问学者。两人决定设计自己的电路板,并引入了Banzi的学生David Mellis为 电路板设计编程语言。两天以后,Mellis就写出了代码。又过了三天,电路板就完工了。这块电路板被命名为Arduino。名字来源于附近一个学生们经 常去的酒吧。几乎任何人,即使不懂计算机编程,也能用Arduino做出很酷的东西,比如对传感器作出响应,闪烁灯光,还能控制马达。随后 Banzi,Cuartielles,和Mellis把设计图放到了网上,然后花了3000欧元做了第一批电路板。Arduino由此火的一发不可收拾。
再说说Opencores。
Damjan Lampret是Opencores社区的创始人之一。他早在1999年就创建了Opencores,但这个网站直到2001年被CNET报道之后才进入公众视野。网站的存活基本靠广告和一些赞助维持,这些赞助商里也不乏大牌的代工企业,比如伟创力(做的事情和富士康差不多,在中国名头没有富士康大,如果有几个工人过劳死或者跳楼什么的,估计知名度会更大点)。
在2007年6月份,Opencores的创始人Damjan Lampret,也是Opencores的长期贡献者之一开始寻求出售Opencores的机会。一家来自瑞典的Design house申请使用Openrisc终于为Opencores带来了一个新的赞助者——ORSoC,ORSoC在这年的11月接手了Opencores, 从此Opencore衣食无忧了。
大企业为什么开始趟这个浑水?
之所以说是浑水,是因为开源硬件的前途就像趴在玻璃上的苍蝇,看起来前途光明,其实却一直找不到出路。但是,越来越多的软件巨头,开始介入开源硬 件,让这个事情变得越来越有意思。Sun和IBM一直都有开源的硬件项目在做,但不是很知名。Facebook更狠,直接把自己的数据中心开放,这里面开 放的同时还有一些服务硬件,甚至电源的技术资料,据说,Facebook还要开放更多。今年5月份的Google I/O上,Google为了进一步争夺开发者,把触角开始伸到了硬件层面。它推出了一个所谓的”Arduino开放配件标准“,也就是说,它的眼光已经开 始从Android手机转到配件上。按照中国传统的辩证哲学,天下事分久必合,合久必分。Android和iPhone OS让大多数手机用户开始集中在少有的几个平台上,那么如何扩展手机的功能?让手机从一个简单的通讯工具,变成一个移动控制中心,配件是重中之重。潘氏兄 弟的苹果皮,TK-421无线键盘,i-Got-Control iPhone通用远程控制器,Kiwi蓝牙汽车诊断设备(Android平台配件)都是这个市场潜力巨大的有力佐证。Google直接将Arduino纳入到自己的Android平台支持范畴, 有一家日本公司在Google I/O上战士了其Demo板。也就是说在Make for Android(iOS)平台这个事上,Google 想的要比苹果远一些,它希望未来这个配件市场资源要比苹果丰富,很有战略眼光。国外有个专栏作家分析Google选择Arduino的理由:显而易 见,Arduino有其他平台无可比拟的优势,庞大的用户基数,开源的电路设计、IDE, 无数的代码,社区力量,低成本。另一面,Android自身也有庞大的用户和开发者,当这两者联姻,前途无可限量!
一群不知道是不是微软支持的人也在打开源硬件的主意,弄了一个叫Netduino的平台。这个平台本身与Arduino的设计思路差不多。不同的地方在于,它采用Visual Studio作为开发环境,开发语言为C#。另外,它不能兼容Arduino的模块,因为输入电压不一样。有传言,微软在打Arduino的主意,但具体什么样的做法还不明朗。
美国国家仪器是最有理由打Arduino主意的公司。NI的产品在设计上就是模块化硬件+LabVIEW,只不过他的这两个东西都不开源而已。但是 如果LabVIEW支持Arduino的话,实际上能加速Arduino的普及。图形化的编程语言能够使非编程人员更容易上手。NI正在推一套开放教学套 件,如果这个套件能把Arduino纳入进去,前途那是大大的。
试想一下,加入把FPGA作为主控芯片,编程工具再大众一些,开源硬件该有多大的生命力?
开源硬件真的能开源吗?
模块化硬件平台最大的问题是编译器,你可以很容易设计一个主控板,并将其开源但是编译器是一个很大的问题。武汉理工大学的一个研究所正在做一个开源 的项目——Coocox,这是一个集成开发环境,现在已经能够支持基于Cortex-M0和M3的MCU,它支持一些开源的编译器,比如GCC。
你可能要说,这不是问题。OK,确实,如果有很多大的厂商,尤其是GOOGLE这样的公司推动开源硬件这个事情,我觉得这确实不是问题。凭借 google的实力,做一个开源的编译器应该不是什么问题。Android现在面临的问题是,对于手机厂商,或者电子设备制造商来讲,如果都采用 Android,他们和竞争对手将面临同质化严重的问题。硬件差不多(都用基于ARM内核的芯片),操作系统又都一样,他们彼此不得不面临PK。开放配件 也许是一条好路子,每个厂商可以选用不同的配件,做成不同的方案,增加自己智能手机的卖点。但这显然不是GOOGLE这样的软件厂商的强项,作为电子设备 提供商,他们愿意去做配件的生意么?
按照这个逻辑,把宝压在Android身上的手机厂商应该早早地准备做手机配件的生意。而不是把所有的精力都放在手机本身上。手机作为娱乐终端,看 电影,玩游戏,已经被苹果和google开发的差不多了,丰富的配件资源也许未来会成为用户选择手机的由头。但是,应该从哪里开始呢?Google指出了 一条路——开源硬件。但这会不会成为又一个出现严重竞争的地方?
我认为在开源硬件的这个事情上,现在FPGA还给不了力。FPGA现在的应用都太高端,而且技术门槛要高很多。尽管Xilinx和Altera在FPGA平民化的路做了很多工作,但这显然还不够。
所以,究竟开源硬件是否能真的开源,现在只能说有了一个好的苗头,前路依然扑朔迷离。