Ruff OS让智能硬件开发变简单

摘要

Ruff 是为那些懂 JS 而不懂嵌入式开发,又希望可以最快速实现自己创意设计的创客们服务的。

视频内容

Ruff 介绍

Ruff 是一个支持 JavaScript 开发应用的物联网操作系统,它面向应用开发者,让 IoT 应用开发更简单。

完整演示 Demo 请戳短视频↓

视频内容

开发高效,而非执行高效

众所周知,从现在开发者角度来说,我们的时间比机器的时间更值钱。今天大家听了一天前端的讨论,就是为了不断优化开发效率。从硬件方面进行优化的时候,我们的关注点也是能够不断提高开发效率。所以在 Ruff 的设计中,开发高效是我们最核心的设计方向。

IoT 应用平台

在设计 IoT 应用平台的时候,我们的关注点是希望能用现代的设计语言去做开发,能够有一个面向应用的抽象,能提供生产的支持。

现代程序设计语言

我们选择的程序设计语言是 JavaScript 。

可能对于做 JS 的人来说,内存管理是稀松平常的事,但这却是 C 和 C++ 的程序员永远的痛点。

应用开发过程中需要提供一个很好的测试框架去完成相关工作。C 和 C++ 的程序员会觉得测试是一件非常痛苦的事,尤其是 C 和 C++ 的编译模型对测试的支持并不是特别好。

C 和 C++ 的程序员没有一个很好的包管理软件库,他们每拿到一个库都需要重新编译一遍。

以上就是我们选择现代程序设计语言所要考量的几个维度,而 JavaScript 在这些方面都有较为友好的表现。

JavaScript 还有一些特点,比如能支持多种范式的编程模型,支持函数式编程也支持面向对象的程序设计。

选择语言

从流行度来说,Java 是一个很好的选择。无论它的规模怎么下降,目前在全行业还是排名第一的,Android 也用 Java 作为它应用开发的语言。但是在硬件开发的领域里,Java 的虚拟机太大了,在内存上有所限制。

还有就是像 Lua、Ruby 这样的程序设计语言,喜爱它们的人会觉得很好用,但是放在全社区的角度,流行度还不够高。

C 语言在我之前的吐槽中,大家也能看出我对它有多么不看好。

相比之下只能选择了 JavaScript。

面向应用的抽象

$( ‘#light’ ).turnOn( );

传统方式

GPIO.output(11,GPIO.HIGH)

应用抽象

led.turnOn( );

抽象级别

一个 IoT 开发平台能做到的面向应用的抽象,可以把硬件驱动和软件接口隔离开来,应用开发者只要保证软件接口正确的调用,硬件驱动开发者来保证驱动编写的正确性。这样,应用开发者只要保证应用逻辑的正确性即可。

提供生产支持

设备宝 Ruff PI

我们做了一个应用 “ Ruff PI ”,中文名叫设备宝。它是由上海南潮信息科技有限公司利用其物联网操作系统开发的一款工厂的生产力助手应用产品。旨在通过信息化及物联网技术提高工厂生产效率及改善工厂生产管理,让传统工厂快速联网,实现数字化转型。Ruff PI 可以把工业领域里的一些设备监控起来,提供一些事件通知帮助我们对问题进行快速处理。

Ruff 工业领域

Ruff 在光伏领域帮助做一些电量数据的采集,工厂设备数字化,以及对电力进行监控。

Ruff 低功耗领域

我刚才提到了不用 Java 做 Ruff,是因为它占的内存太大了,而我们需要跑在256K 甚至更低的内存上,这才是 IoT 开发的常态。Ruff 在朝着更低的资源占用的方向发展。

Ruff 还兼容 API,并已经支持 TI TM4C1294、ESP32 这几个芯片。从整个体系设计来说,Ruff 是一个开放的体系,我们会根据不同项目的需求往不同芯片上去移植。在 Ruff 上写完的代码也可以平滑地移植到芯片上。

生产视角

站在生产视角上,我们进行了区分。

对于每个不同的硬件可能会有不同的 layout,这样实现了代码在不同的开发板上无缝移植。在 Ruff 的整个体系设计上,代码是可移植的。

基于 Ruff 的硬件应用发布

如果有了 Ruff 这样的平台,未来的开发会变成图上右边的结构。意味着硬件是硬件的发布周期,平台是平台的发布周期,应用是应用的发布周期。但是这个模式目前在 IoT 这个领域中并没有很好地做到,原因就是没有一个平台把它们很好地区分开来。而 Ruff 做得就是通过一个平台把应用和底层硬件隔离开,来实现一种全新的发布模式。这样就不会出现很多应用开发实际上是被硬件开发绑架了的可能性。

Ruff 2.0

我们会把对工业领域做的探索变成未来对社区发布的能力。

我们会提供更多的系统对象,提供系统访问的能力。提供能力描述,应用依赖于能力,不依赖于硬件。未来还会有板卡,可以自己扩展板卡能力,把不同能力暴露出来。

这是我们 Ruff 2.0 未来要做的事情。

我今天的分享就到这里,感谢聆听!

原文发布于微信公众号 - IT大咖说(itdakashuo)

原文发表时间:2017-09-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏靠谱PM

调研现场

上两篇文章中写到为什么要做用户调研以及用户调研的流程,今天来说下调研现场应该怎么做。

1536
来自专栏ThoughtWorks

服务蓝图再思考 | 洞见

服务蓝图(Service Blueprint)是服务设计中重要的实践之一,本文将回到这一实践的本源,重新思考其核心逻辑在新的消费环境中是否需要演进。 溯源 服务...

4765
来自专栏灯塔大数据

IBM高级工程师谈数据湖管理

“在我看来,数据湖是一种参考架构,在保证信息管理秩序和信息安全的条件下,提供了获取数据的有效途径。” ? 何为数据湖 数据湖参考架构实际是指分析系统必备的技术...

3719
来自专栏云计算D1net

基于私有云优势的迁移靠谱吗?

可以肯定地说,几乎每家企业是虚拟化用户,而其中一大部分企业也会同时使用公共云的服务。云计算的普及促进了人们对数据中心虚拟化到私有云迁移兴趣的增加,但许多人仍不清...

2803
来自专栏前沿技墅

从ITOM到AIOps:IT运维管理向智能运维的进化

5995
来自专栏Keegan小钢

小钢的架构思考:架构规划

上一篇简单聊了下什么是架构,还将架构划分为三个阶段:规划阶段、设计阶段和构建阶段,构建阶段其实也是架构实现的阶段。其实,三个阶段的界限并不明显,而占比最多的是设...

1166
来自专栏程序人生 阅读快乐

Python和Pygame游戏开发指南

Python语言和Pygame都是开发图形化的计算机游戏的得力工具。Pygame使得开发2D图形程序变得很容易,而且它可以免费下载和安装使用。

1172
来自专栏DevOps时代的专栏

DevOps实施:项目群管理(PPM)中的需求和计划管理

本文面向的是企业IT用户(尤其是每年要投入数以百计的人力,开发维护十几个甚至几十个上百个上不同系统的企业),在组织范围内的计划和需求消耗太多的问题。而对于只有十...

2009
来自专栏ThoughtWorks

项目实施DevOps时,我们是如何做测试的 | 洞见

正如我们所知,DevOps最近几年很风靡,很多企业正在如火如荼的推行它。然而,你可曾想过,从传统到敏捷、再到DevOps,开发模式的不断革新对测试提出了怎样的挑...

2995
来自专栏SDNLAB

David Lenrow:ONOS社区及平台介绍

大家下午好!我是为华为工作的,但是今天,我是作为ONOS推广大师来为大家谈一下ONOS的社区以及它的平台。ONOS是一个开放的网络操作系统,我想,它可能就是像一...

3337

扫码关注云+社区

领取腾讯云代金券