datasheet

Ruff:一次破局 IoT 研发困境的尝试

2018-02-07 19:53:52来源: 电子产品世界 关键字:Ruff  IoT

  *本文源于“嵌入式系统联谊会主题讨论会(总第22次)——物联网操作系统现状与发展前景研讨会”上作者的报告。该会议主办方:嵌入式系统联谊会,时间:2017年11月12日,地点:北京航空航天大学。下面就随网络通信小编一起来了解一下相关内容吧。

  提及 IoT(物联网,Internet of Things),几乎整个 IT 行业的共识是未来一定会是一个 IoT 时代,继互联网时代将更多的人连接到一起之后,IoT 时代将会把更多的物(Thing)连接起来。但是,一说到 IoT 的研发,人们的第一反应通常是,物就是硬件,做硬件就要懂嵌入式,所以,IoT 开发就是嵌入式开发。于是,我们看到在 IoT 的指引下,各大硬件厂商和嵌入式操作系统厂商摇旗呐喊,纷纷畅想着 IoT 的未来,而现在的 IoT 行业状态却是,只问脚步声,未见人下来。为什么会这样?我们不妨简要分析一下。

  1 IoT 研发困境

  • 产品经理与硬件工程师难以协同

  在 IoT 时代,做一个硬件,已经不再是做一款独立的硬件,本质上,它就是一个产品,与这个时代的其它产品没有区别。无论是硬件厂商,还是操作系统厂商,他们拥有的都是研发实力,但在产品上却不是强项。而哪里拥有最多的产品经理呢?现在的答案是互联网公司。但为什么互联网的产品经理不来做物联网呢?

  不是没有,而是很难。

  曾经有一个互联网产品经理看到了 IoT 的未来,决心投身这个未来,做一款改变世界的硬件产品。根据互联网思维的做事方式,他说,我先要做一个东西先试错,因为我也不确定对这个产品是否是对的。他把这个想法给了硬件工程师,硬件工程师说,我要做六个月。当时这个互联网产品经理就崩溃了,说我从来都有想法大概两周试出来,你告诉我要六个月。双方很努力的协调之后,硬件工程师按照他把初步的想法做出一个东西。临近实现结束,产品经理出来说,我有一个新的想法,这回轮到硬件工程师崩溃了。

  • 瀑布式研发

  双方之所以会有如此大的差异,本质上,是因为双方在用不同的工作模式在工作。硬件研发属于瀑布式开发,而互联网产品研发则采用的是敏捷软件开发,双方对于开发节奏的理解截然不同。瀑布式要求一次性做好所有的事情,而敏捷开发则要不断地试错。在20年前,软件行业的主流开发方式也是瀑布式的,但对于这个需要快速响应变化的年代,瀑布式研发显得越加不合时宜了。

  • 重复造轮子

  在硬件行业里,有一个典型的现象,在一个项目做好的东西很难用到另外一个项目上,比如,TCP/IP 协议栈,即便你已经烂熟于胸,拿到一款新的硬件,往往要重来一次。对于这种现象,在软件行业里,有一个常用的说法:重复造轮子。这在某种程度上是一种浪费,放在行业的角度,这种浪费现象更加严重,你在一个硬件上做的一个工作,在其它公司,会有另外的工程师做着同样的事情,然而你不知道,没法用。在行业中,如此大规模的浪费导致整个行业进展缓慢。

  • 系统与应用一体

  IoT 时代需要的必然产品本质上就是一个应用,但在硬件行业里,大多数人并不能将应用与系统分开,做一款硬件产品,往往需要从硬件到系统,再到上层的应用一起做。这样的做法带来的后果往往是,系统与应用常常混淆在一起,做过开发的人都知道,这也通常意味着代码混杂在一起,维护的难度系数便直线上升。此外,这还有一个隐含的要求,做硬件的人要懂得从系统到应用的各种知识。

  今时今日,前端工程师已经 IT 行业里一个主流的职位。但你不妨同前端工程师交流一下,看有多少前端工程师知道,屏幕上显示的点到底是怎么显示出来的,总的来说,比例不会高,除非他自己非常有热情的去研究这些东西。而在嵌入式领域,要做一个应用必须知道各种细节,包括底层的寄存器。从某种程度上说,这是对人的要求非常非常高。

  这种高要求导致嵌入式行业人才培养也极其困难,即便是一个计算机专业的学生,真正理解操作系统,理解硬件底层是怎么运作都是一件有很高难度的事情。我们看到一个很无情的现实是,虽然我们以为嵌入式领域人才已经很多了,但是与做软件的人比起来做嵌入式的人,数量还是太少。

  2 软硬鸿沟

  换个角度,作为一个软件的人,如果他真的有热情,要去做硬件,他又会面临什么样的问题。

  他会看到一大堆的新名词:GPIO、I2C、C、时序、驱动等等,如果你是做硬件的,这些名词或许很熟悉。但我曾经在一些软件技术大会上做过一些调研,尝试用这些名词去问过不同的人,你知不知道这个词什么意思。这些软件工程师普遍的表情就是见了鬼一样。他们根本不知道我在说什么。

  软件工程师会关心的是什么呢?他们会关心:

  • 需求是什么

  • 用户体验是怎样的

  • 设计模式用什么

  • 系统怎么架构的

  • 怎样在高并发中保持系统的健壮

  我们不难发现,这两套语言几乎就是两个世界的语言,就像中国人说中文,英国人说英文,你没有一个翻译你根本不知道对方在说什么。虽然双方都号称自己从事的软件开发,但谈论的根本不是一回事。这里面存在一个巨大的鸿沟。

  3 IoT 应用研发,出路何在?

  我们回过头想想,问题到底出在哪?

  通过前面的分析,软硬双方,一方是人数不够多,另外一方想进又进不来,所以造成的现状就是,各种硬件厂商在编写各种各样的硬件,所以整个 IoT 的进展速度不会太快。

  亚当·斯密在《国富论》的开篇提到:劳动生产力上最大的改进,以及劳动时所表现的更多的娴熟程度、技巧和判断力,似乎都是分工的结果。

  我们不难从前面的讨论中看出,硬件厂商一个人扮演了三个角色:硬件制造、系统研发、应用开发。如果能够把三个角色分开,由不同的厂商扮演不同的角色:应用的人把应用写好,平台的人把平台做好,做硬件的人把硬件做好。事实上,现在行业里已经有人开始做这方面的尝试了,于是,行业里就出现了各种 IoT 平台。

  接下来,我就以 Ruff 这个 IoT 平台为例,介绍一下一个 IoT 平台背后的设计理念。

  4 IoT 平台衡量标准

  在讨论 IoT 平台之前,我们需要知道有哪些衡量标准来判断一个 IoT 平台的优劣。下面是我提出的三个衡量标准

  • 现代程序设计语言

  • 面向应用的抽象

  • 提供生产支持

  4.1 现代程序设计语言

  鉴于摩尔定律的存在,在现代软件开发中,开发的效率比代码执行的效率要重要。所以,一个好的 IoT 平台,需要有一门现代的程序设计语言。

  我们不妨先看看 C/C++ 这个传统的嵌入式开发语言在现代程序设计语言所需特性上的表现,如表1。

  表1 C/C++在现代程序设计语言所需特性上的表现

  再来看看 Ruff 选择的 JavaScript 在这些特性上的表现,如表2。

  表2 Ruff 选择的 JavaScript 在这些特性上的表现

  通过对比,不难发现,虽然 C/C++ 依然战斗力十足,但作为“现代程序设计语言”,它们显得不那么“现代”了。或许你会好奇,Ruff 为什么选择其它的“现代程序设计语言”,主要有下面几点考量。

  4.2 面向应用的抽象

  什么是面向应用的抽象?对比两段代码,我们便不难发现,这两段代码完成是同样的工作,点亮一盏灯。

  先是传统嵌入式风格,简单起见,我们用了 Python 代码做示例:

  GPIO.output(11, GPIO.HIGH)

  再是 Ruff 的代码,用的是 JavaScript 语言

  $('#led').turnOn();

  我们为什么需要硬件抽象呢?因为我们看到整个软件开发的趋势就是抽象度越来越高,从汇编到 C 语言,再到Java,今天还会有各种各样的 DSL (Domain Specific Language,领域特定语言)。早年间,编写代码,我们可能会质疑编译器是否正确,手写汇编效率会更高,但今天,我们肯定不会这么做,开发效率太低,因为有了抽象,底层的东西可以不断优化,越做越好。之所以抽象程度能不断提升,还要拜摩尔定律所赐,硬件能力越来越强,一些执行上的性能损失,我们是可以承受的。

  那我们需要怎样的抽象呢?从发展趋势可以看出,抽象的趋势一定是越来越接近问题领域。对于 IoT 平台而言,一定是越来越接近于应用开发。在 IoT 平台的尝试中,我们看到了几种不同的抽象。

  • 无抽象

  传统的嵌入式开发按照这个标准,就是无抽象的,其特点是面向硬件接口编程。

  GPIO.output(11, GPIO.HIGH)

  • 编程接口抽象

  诸如 Ruff、Tessel、Jonny-Five、Cylon.js 等一些 IoT 平台开始提供面向应用的编程接口抽象,让开发者无需关注底层的实现细节。

  board.on("ready", function() {

  var led = new five.Led(13);

  led.strobe();

  });

但在这里,我们

[1] [2]

关键字:Ruff  IoT

编辑:李强 引用地址:http://www.eeworld.com.cn/wltx/article_2018020719271.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:IIoT工具平台从实验走向商用规模
下一篇:最后一页

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利
推荐阅读
全部
Ruff
IoT

小广播

独家专题更多

东芝在线展会——芯科技智社会创未来
东芝在线展会——芯科技智社会创未来
2017东芝PCIM在线展会
2017东芝PCIM在线展会
TI车载信息娱乐系统的音视频解决方案
TI车载信息娱乐系统的音视频解决方案
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved