专栏首页IT大咖说Ruff OS让智能硬件开发变简单

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),作者:郑晔

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在OpenStack中轻松部署MySQL应用

    IT大咖说
  • VMware vSphere 6.7 新功能介绍

    内容来源:2018 年 06 月 19 日,VMware大中华区原厂高级技术讲师姚泉在“VMware在线技术专题分享·第二期”进行《VMware vSphere...

    IT大咖说
  • 国产开源文档管理系统——Wizard

    Wizard是一款开源文档管理系统,支持三种格式类型的文档管理,分别是Markdown、Swagger和Table,以便于满足不同场景和不同需求下的文档管理,M...

    IT大咖说
  • 「镁客·请讲」Ruff荆天为:以解决痛点为基点,用实践推动物联网的发展

    镁客网
  • JavaScript匿名函数与闭包

    匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数。 一.匿名函数 //普通函数 function box() {//函数名是box retur...

    汤高
  • ​2018深度学习引用数最高的十大论文

    用户1737318
  • Dlib 库 - 人脸检测及人脸关键点检测

    Dlib 是一个十分优秀好用的机器学习库,其源码均由 C++ 实现,并提供了 Python 接口,可广泛适用于很多场景.

    AIHGF
  • Apple Swift编程语言入门教程

    今天凌晨Apple刚刚发布了Swift编程语言,本文从其发布的书籍《The Swift Programming Language》中摘录和提取而成。希望对各位的...

    sanmutongzi
  • Linux开机执行指定shell

    1.需要在/etc/init.d/目录下建立对应的shell脚本,示例如下: 开机启动docker-compose中的所有容器

    肖哥哥
  • 一篇文章把你带入到JavaScript中的闭包与高级函数

    在JavaScript中,函数是一等公民。JavaScript是一门面向对象的编程语言,但是同时也有很多函数式编程的特性,如Lambda表达式,闭包,高阶函数等...

    达达前端

扫码关注云+社区

领取腾讯云代金券