在物联网时代,开源该怎么玩?
2017-03-31本刊编辑部
本刊编辑部
在物联网时代,开源该怎么玩?
本刊编辑部
引 言
开源可谓一股洪流,凭借人人可用、人人可探、人人可改、人人可再分发,广受欢迎。如今,世界很多角落都活跃着大批的创客,他们在开源的道路上越走越远,将开源运动带到更多的角落,令更多的人受益。众所周知,开源软件发展迅速,早已具有很大的影响力。近些年,开源硬件也受到越来越多的关注。树莓派和Arduino的流行,正是对开源硬件快速发展的最好诠释!
开源运动发展至今,创客已经成为一种文化。在充满无限可能的物联网时代,未来的开源硬件和开源软件该怎么玩?一起来听听业内的专家和玩家是怎么说的吧!
业界声音
商业价值是影响开源硬件运动成功与否的关键因素
北京大学软件与微电子学院 林金龙教授
与开源软件相比,开源硬件在市场和终端用户中的影响力还很小。据IDC评述2016年4月报道,开源Web服务器市场占有率超过50%;移动领域2016年1季度的统计数据表明,开源操作系统Android的市场占有率达76.4%,而开源硬件产品鲜有成功的案例。专注开源硬件技术和项目的企业其规模较小,且产品主要用于教育和开发,年收入超过百万美元的公司非常少。
如果开源硬件运动不能在商业价值或市场价值上得到体现,不能创造出终端用户喜爱的产品,其发展前景将不容乐观。商业价值体现在两个方面:一方面是开源硬件社区中的开发者能够得到回报,并乐意继续贡献;另一方面,开源硬件产品对用户有更强的吸引力,使得用户愿意消费开源硬件产品。后者是开源硬件项目成功的基础。软件近乎零复制成本的特点使得开源软件具有很高的价格优势,而硬件产品不具备这样的特征。尽管采用开源硬件可以降低产品的开发成本,但产品的元器件、制造和运输成本依然存在,这些导致开源硬件产品的价格优势不明显,尤其对于大规模生产的产品。
因此,当前开源硬件社区的当务之急不是开发更多的开发平台、演示系统和原型,而是研究建立一个实现开源硬件商业价值的生态环境,充分利用开源硬件社区的特点,使终端产品具有鲜明的特点吸引用户的购买欲,同时使贡献者能够获利。
开源软硬件正在积极拥抱物联网应用
嵌入式系统联谊会秘书长 何小庆
Eclipse基金会IoT工作组近期发表了《物联网架构的三种软件协议需求》一文,文章的副标题是:如何使用开源技术实现物联网软件需要。三种软件协议是针对物联网系统的三类设备:第一资源受限的设备(Constrained device),这类设备主要是传感和执行单元部件;连接智能物件的物联网网关设备(Gateway)和物联网云平台(IoT Cloud platform),三种协议的物联网软件解决方案。
针对上面的软件协议,开源的操作系统有 RIOT、FreeRTOS、Zephyr和Linux,通信协议有Eclipse Paho和Wakaama, Paho和Wakaama支持MQTT 和LWM2M 协议。 针对物联网网关有Eclipse Kura 解决方案,Kura包括了Linux OS、运行库、协议和网关软件。针对应用市场的有Eclipse SmartHome ,针对工业4.0 和工业物联网的有Eclipse 4DIAC, 它支持IEC61499 标准。在物联网云平台方面,Eclipse 有 kupua和OM2M 架构,对于云端分析和虚拟化有Eclipse BIRT,它支持dashboard和多种云端数据仓库的数据报告接口。Eclipse Mosquitto是MQTT broker的一种实现, 此外还有提供连接物联网设备的Eclipse Hono API 协议标准,这是由BOSCH 和redhat主导的一个开源项目。
除了Eclipse IoT开源项目,近期本人还接触到几个实际开源软件和开源硬件,它们很专注在物联网应用上。比如ARM mbed OS和庆科Mico OS,除小部分代码,这两个物联网OS基本开源了。在新唐的NuMaker-FPM-NUC472开发板上运行mbed OS,在MicoKit 3165开发板上运行了Mico OS,这个系统都可以实现从MCU+RTOS 编程、传感器到云端服务器的通信和控制功能。
STM32Nucleo开发套件和STM32Cube软件在传统MCU编程基础上增加了物联网应用软硬件支持,比如Cube extension software,该应用软件支持BLE和WiFi与智能手机App 和AWS 云的通信。著名的开源硬件Arduino 也推出几种物联网的解决方案,包括最新的Arduino Uno的WiFi 联网系统。
开源软件和开源硬件正在积极拥抱物联网的应用,物联网通过开源技术正在逐步探索一条高效、简单、安全和廉价的联网之路,有关开源软件与物联网OS更详细的介绍,读者可以参考《嵌入式操作系统风云录:历史演变与物联网未来》。
开源需要培育完善的生态系统
易到用车首席架构师、FastDFS作者 余庆
本人2008年9月开始开发自己的第一款开源软件FastDFS,这款软件一直在进行更新和维护,至今已推出70多个版本。2010年开源了从FastDFS代码中抽取出来的C基础库libfastcommon,至今已经发布了35个版本。2013年开始在阿里参与Apache Traffic Server开源项目的研发工作,历时一年半。2016年12月开源了本地共享内存库libshmcache。
最近几年国内涌现了不少开源项目,国人对开源项目的参与热情和参与度与日俱增。目前国内参与开源项目的方式主要有两类:公司和个人。公司如阿里和网易这样的大公司;个人参与开源主要是基于兴趣和热情。目前国内靠开源软件发家致富的案例还比较少,这个现象的根源,我认为是国内缺乏像美国那样的生态,比如开源基金会(Apache、Linux、Eclipse等)和成功的开源软件商业运作模式(如红帽公司),希望在未来10年国内也会建立起完善的开源生态。基于像阿里云这样的云平台和互联网+浪潮,也许这一天会更快到来。
开源硬件3.0时代降临
酒泉卫星发射中心工程师 雷思磊
根据开源硬件这十几年的发展,本人认为可以划分为三个阶段,这三个阶段没有明确的时间分割,更多的是从技术上分割,首先是开源硬件1.0阶段,特点是松散、碎片式开源,没有形成规模效应,影响力不足,代表项目就是OpenRISC、OpenSpark、LEON,以及Opencores上的一系列IP,其走向两个极端,要么是非常优秀的公司设计发布,比如OpenSpark,但是非常复杂,难于理解,曲高和寡,要么是由自发的民间组织设计发布,比如OpenRISC,项目进度难以保证,代码更新速度缓慢,且缺少产品验证。第二阶段是开源硬件2.0阶段,特点是通过设计低廉的开发平台,并且将相关PCB设计资料开源,吸引大量人员在其上进行开发、应用,从而形成规模效应,也正是这一阶段,使得开源硬件的理念被广为接受,代表项目就是Arduino、树莓派等。第三个阶段就是开源硬件3.0阶段,特点是系统性、整体性开源,且有明确的组织、目标、路线图,代表项目就是开源指令集RISC-V,以及围绕RISC-V的一系列开源项目。
RISC-V是加州大学伯克利分校设计并发布的一种开源指令集架构,其目标是成为指令集架构领域的Linux,应用覆盖IoT设备、桌面计算机、高性能计算机等众多领域。RISC-V自2014年正式发布以来,受到了包括谷歌、IBM、Oracle等在内的众多企业以及包括剑桥大学、苏黎世联邦理工大学、印度理工学院、中国科学院在内的众多知名学府与研究机构的关注和参与,围绕RISC-V的生态环境逐渐完善,并涌现了众多开源处理器及SoC采用RISC-V架构,这些处理器既有标量处理器,也有超标量处理器,既有单核处理器,也有多核处理器。
2016年11月29日至30日,在美国加州召开了开源处理器架构RISC-V的第5次研讨会,会议明确了RISC-V基金会下的市场委员会、技术委员会,以及其中的工作组和工作计划。在会议报告中,RISC-V研究人员创立的SiFive公司介绍了其即将大规模生产的基于RISC-V的开源处理器SiFive E31以及基于该处理器的片上系统Freedom E310,后者的RTL代码完全开源,此外,SiFive还为该SoC设计了一款开源平台HiFive,HiFive具有与Arduino兼容的特性。
上述事件是RISC-V走向市场、让更多开发者了解的重要一步,也表明了RISC-V体系相关生态建设的初步完善。从这里也可以发现开源硬件3.0阶段既具有1.0阶段的处理器级的深度开源,也具有2.0阶段的规模优势。由此带来系统从处理器到操作系统的全面开源,这一点在物联网时代最大的优势就是有利于用户结合实际应用快速定制硬件平台以及系统深度调优,从而满足物联网环境的特殊要求。
开源硬件在教育和物联网应用方面很有潜力
电子发烧友 蔡石磊
说起开源软件、开源硬件,本人在大学二年级的时候接触过Arduino,老师让研究下Arduino,当时我认为其充其量也就是个玩具级别的,相信现在很多人也都这样认为,但是现在看来,这样的想法完全是错误的。
Arduino是十分强大的软件平台与标准板子的结合,现在有越来越多的芯片加入,不仅仅是AVR单片机了,所以像Arduino和树莓派这样的开源硬件,不仅仅能当玩具来玩,还能做很多事情。
结合我的经历,本人觉得可以在教育和物联网中有很好的应用,在教育应用中,我们经常会接触到各种协议,比如Modbus、CAN等,作为初学者,看Datasheet、在51单片机中写代码是很枯燥的,总也摸不着头脑,所以可以基于github上开源的库来学习,从宏观上有一个整体认识,先在Arduino中演示一下效果,体验到成就感,再去研究细节地方,一定能让初学者既感觉到有趣,又学习到知识,以后再用到这样的协议不论多么复杂都能很好地深入研究,不至于卡在入门这道关。
在另一方面,开源硬件由于具有操作简单,快速成型等特点,很适合物联网场景的应用,比如通过WiFi连接到云平台获取天气,在Arduino中使用相关的json库和WiFi相关的库很方便就可实现,有C语言基础的不到半天即可搞定。所以开源硬件将会在教育和物联网方面有更多的应用。