Ruff 是什么?

Ruff 是一个支持 JavaScript 开发应用的物联网操作系统。在这个平台上,你可以用 Javascript 语言做物联网应用开发,从而降低硬件开发的门槛和难度,可以快速开发出硬件产品原型。Ruff 好比物理网界的 Android,让所有开发者都可以方便快捷的开发物联网应用

Ruff 为什么选择 Javascrit 语言?

  1. Javascript 是脚本语言,不需要编译,所以修改部署起来比较方便
  2. Ruff 之所以选择 Javascript 脚本语言,因为 Javascript 的用户数量多

Ruff 有哪些适用场景

物联网开发、工业控制、自动化系统等等。

Ruff 和树莓派有什么区别?

Ruff 是操作系统软件,树莓派是开发板硬件,Ruff 同样可以运行在树莓派上,具体可以参考 树莓派移植指南

Ruff 就是把 Node.js 跑在硬件上么?

不是,Node.js的 JS 引擎(JS解释器,解释执行JS代码)是 V8,比较大,对内存资源要求高,必须达到64M才可以,而我们 Ruff 对硬件内存的要求比较低,达到256K就可以。

Ruff 现在支持哪些外设驱动?

  1. 常见的传感器,比如温湿度/光照/声音/陀螺仪/编码器等等;
  2. 红外接收发射模块;
  3. USB设备,如USB声卡,USB存储卡,USB摄像头等等。

Ruff 是用的什么 JS 引擎?

MPU 版是 duktape,MCU 版是 jerryscript。

Ruff 现在支持哪些硬件接口?

目前支持的接口有 GPIO,I2C,ADC,PWM,UART,QEI。

Ruff 现在支持哪些协议?

如物联网协议 MQTT,工业控制协议 Modbus 等。

Ruff MPU 板和 Ruff MCU 版有什么区别?

  1. 底层基于的系统不同,MPU 版底层系统基于 Linux,MCU 版底层系统基于 Nuttx RTOS
  2. 适用场景不同。MPU 适用于对内存要求比较高的应用,比如高强度的网络使用等等,MCU 版适用于对硬件控制的实时性要求比较高的场景,比如工业自动控制
  3. 所用的 JS 引擎不同。MPU 版使用 duktape,MCU版使用 jerryscript

Ruff 用 JS,和树莓派用 Python,同是脚本语言开发,有什么优势?

  1. 树莓派上固然有Python提供的库,但没有统一的管理环境和生态系统,比较分散,不便于搜索和查找。
  2. 开发树莓派有硬件门槛,硬件抽象做的没有Ruff好,比如Ruff开关灯,turnOn和turnOff,API简单易懂,对不懂硬件的软件开发者比较友好,树莓派还停留在硬件层次,如GPIO.write(HIGH_LEVEL)。
  3. Python开发硬件只停留在树莓派等极少数特定的硬件上,而Ruff天生跨硬件平台,可以运行在更多硬件板卡上,对移植条件很低。

Ruff 和 Arduino 有什么区别?

  1. Arduino 只提供开发机上的开发环境和平台,程序最终还是裸跑在硬件上,没有使用到操作系统,没有OS的话会有太多不便(裸跑还是在 OS 上跑已经是个老问题了,网上搜一大堆)。
  2. Arduino 使用 C 语言开发,需要对你的开发环境有很多限制,比如下载IDE/交叉编译器等,而且对操作系统有限制(只能 Windows ),而 Ruff 支持 Windows,Mac,Linux 所有主流的操作系统。

Ruff 向开发者提供哪些层次开发?

应用层和驱动层。可以直接利用Ruff的API和目前支持外设的API进行应用层开发,也可以利用Ruff提供的硬件接口API进行外设驱动模块的驱动开发。

如何理解 Ruff 软件定义硬件?

Ruff 为软件开发者提供非常便捷、人性化的 API 去控制硬件,获取硬件的状态,而屏蔽了底层的硬件细节,这样软件开发者利用 Ruff 的 API 和外设模块的 API,达到完全控制硬件的目的,所以这就叫 Ruff 可以用软件定义硬件。