网易首页 > 网易科技 > 正文

Zephyr项目引入JavaScript 让开发者事半功倍

0
分享至

据统计软件工程师的数量远远大于硬件工程师,而物联网设备需要软件和硬件的高度融合才能实现良好的用户体验。原来只针对硬件工程师的开发环境已经无法满足物联网产品快速开发的需求,因此将web开发环境与物联网操作系统逐步融合成为物联网操作系统提供商首要考虑的问题。为了兼顾物联网设备内存限制的问题和开发者的设计需要,Zephyr操作系统引入了JavaScript。

众所周知,JavaScript是一款非常流行的编程语言,目前它已经从最早的桌面web浏览器快速发展到Node.js服务器,它也可以应用于物联网这种小型设备,让设备装上带有JavaScript Runtime的Zephyr实时操作系统(以下称为ZJS开发环境)。ZJS开发环境是基于JerryScript(一个轻量级的JavaScript引擎)和Zephyr实时操作系统开发的。当用户使用该工具编写应用程序时,ZJS开发环境可以向工程师提供Node.js API和JavaScript API子集,其中包括传感器、执行器和通信器。对于那些已经掌握JavaScript技能的开发人员,ZJS开发环境简单易学,可以快速建立原型。

ZJS开发环境最初的目标是可以顺畅无阻地在Arduino 101开发板上运行。Arduino 101是基于英特尔X86架构的一款Arduino平台。与Arduino Uno功能相似,在原有的基础上增加了低功耗蓝牙、加速度计和陀螺仪。

图1:Arduino 101开发板

英特尔让Zephyr结缘JavaScript

Zephyr项目是Linux基金会推出的一款开源实时操作系统,它在一系列开发板上支持X86架构、ARM架构和ARC架构处理器,如:Arduino 101、Minnowboard Turbot, NXP FRDM-K64F和Arduino Due。JerryScript是开源的、轻量级的JavaScript引擎,它可以让内存受限的设备执行ECMAScript 5,它支持存储空间小于64KB RAM和200KB ROM的设备,它还在各种开发板上支持X86架构和ARM架构处理器。

2016年初,英特尔开始将两种技术结合,试图利用Zephyr操作系统推出一种可以应用于Arduino 101和未来物联网开发板的可替代开发环境,因此将JavaScript引入了Zephyr。目前,Zephyr操作系统可用C语言编程,但是编写程序需要大量的专业知识储备,而JavaScript接口可以让工程师免去大量复杂的编程工作。Zephyr目前也在探索JavaScript在各个层面上的优势,从小型嵌入式设备到大型服务器,从原型到无缝的端到端应用程序。

结合以后的开发环境最后定名为带有JavaScript的Zephyr实时操作系统(ZJS开发环境),并且向工程师提供JerryScript开发环境,用户只要添加应用接口就可以实现各种物联网硬件特性,通过工具可以简化开发工作。

各种应用可单独执行,占用空间最小化

当用户建立一个Zephyr操作系统工程时,用户会先创建一个完整的系统镜像,通过操作系统组件运行单一应用程序,这些组件就是用户在实际中使用的,它可以使系统镜像占用空间最小化。Zephyr操作系统支持执行线程服务、定时器服务、内存管理、同步和数据传输服务,其中每一项都可以选择独立执行,这取决于用户是否需要这项服务。它还为其支持的芯片和板卡提供硬件驱动,如GPIO、ADC、PWM、I2C、SPI总线、UART和低功耗蓝牙。同样,这些硬件驱动也可以独立执行,从而使系统镜像占用的ROM 和RAM 最小。

通过对来自JavaScript的代码做简单的数据分析,ZJS可以利用Zephyr操作系统的可配置性建立工程。例如:如果GPIO接口被采用,所需要的驱动程序和相关的ZJS应用代码将会包含到项目中,反之亦然;如果你的项目涉及到所有的驱动程序,那么得到的系统镜像会很大,因此不适用于小型设备,如:添加低功耗蓝牙目前会用到额外的7.2KB RAM和56KB ROM。如果你很在乎系统镜像的尺寸,但必要时也可以限制额外的应用,那么你就可以对尺寸和项目占用空间进行协调平衡。

目前,ZJS可以为GPIO,ADC,PWM,I2C,BLE提供应用程序接口,并且可以为带有RGB背光的LCD面板提供简化接口,也支持setInterval/setTimeout 简化的执行子集。另外,ZJS支持物联网开放连接基金会(OCF)规范互操作性,包含相同的JavaScript API,例如在Node.js中提供Iotivity-node模块。未来会支持SPI接口,W3C通用传感器API,以及其它Node.js API开发。

图2:Arduino 101 开发板上的基于Zephyr 项目的JavaScript实时架构

以Arduino 101 开发板为例,英特尔Quark  SE处理器在Arduino 101开发板上有两个MCU核:一个是X86架构,一个是ARC架构。要使这两个核的硬件得到充分利用,C语言程序员必须直接做处理。幸运的是,ZJS API可以利用来自JavaScript相同的内容使ARC硬件特性得以实现。在必要时,ZJS API可以无缝地与ARC核心上运行的支持ZJS的image通信。(见图2)

Arduino 101包含80KB RAM和384KB 闪存。默认情况下,闪存分配144KB给X86应用,分配152KB给ARC应用。ZJS需要在ARC中将代码最小化,这有利于重新分区,从而给X86应用预留更多存储空间。Zephyr工程师为Arduino固件开发了一个补丁,它可以使用户把程序从144KB的 X86区块迁移到256KB的ARC区块,处理完成然后再迁移回来。这种模式不仅为ZJS提供了足够的运行空间,而且它还提供二进制刷机包,让用户改变或恢复存储更简单。

权衡利弊,用户各取所需

将JavaScript应用于小型嵌入式设备的优势如下:

-- 很多工程师已经熟悉JavaScript,这意味着它们利用ZJS开发环境进行设计更简单;

-- JavaScript 使用户可以在不同的环境下编程,如PC、云端、移动端和物联网设备上,这些代码可以重用,从而提高工作效率;

-- 工程师在这些系统之间使用通用数据交换格式JSON的潜力,这将减少寄送各种开发板的成本;

-- JavaScript也可以在浏览器中打开,更容易进行器件仿真。

对于任何解释语言来说都一样,从做出改变到看到改变的周期很短,JavaScript也是如此。诚然,最初这一优势会因为我们的系统无法体现,因为工程师需要编译Zephyr操作系统,并将其更新到设备上。但我们可以使用 ashell 功能来回收一些这样的好处,这是一个不安全的开发者模式,允许您与设备交互并上传新的 JavaScript 而不重刷。

-- Zephyr计划向工程师提供基于浏览器的IDE,这样工程师就可以在浏览器上通过仿真器进行开发。

然而,在小型资源受限设备中使用JavaScript也有弊端:

-- 占用额外资源。通常本地代码会更快更小,因为JavaScript引擎会消耗一部分系统RAM和ROM,因此在资源严重受限的设备上就减少了留给应用程序的存储空间。例如,工程师熟悉的最小的helloworld.js示例需要大约133KB ROM。大一点的WebBluetooth示例需要199KB ROM和42KB RAM。对比发现,相同的WebBluetooth示例通过C语言完成只需要65KB ROM和18KB RAM(JavaScript包含一个大的头文件,但未必会全都用到)。

-- 处理中断程序复杂。C程序会处理一些简单的中断程序,在这种情况下两者性能差异也十分显著。JavaScript中执行这一逻辑时,待处理事件必须在队列中排队(相当于Zephyr操作系统的进程内容),内容交换后,再回调到JavaScript引擎,最后让本地API工作。

-- JavaScript实时性能不确定。例如,垃圾信息收集可以在正常的活动脉冲中引入停顿。因此,JavaScript可能不适合有严格的实时要求的应用程序,但它非常适用于普通的应用程序。然而,随着Zephyr项目的逐步成熟这类问题会减少。

总之,引入JavaScript的Zephyr操作系统系统有利有弊,用户可以根据自身设计需求选择使用,发挥其优势作用,加快项目开发。未来的ZJS会越来越完善,更大程度地满足用户需求。

相关推荐
热点推荐
NBA杯决赛对阵:马刺vs尼克斯将诞生新王 雷霆连续冲杯赛冠军失败

NBA杯决赛对阵:马刺vs尼克斯将诞生新王 雷霆连续冲杯赛冠军失败

醉卧浮生
2025-12-14 13:11:44
我的天呐!日本政府突然宣布了

我的天呐!日本政府突然宣布了

安安说
2025-12-12 10:08:55
河南天气大转折,新一轮雨雪过程酝酿中!河南未来三天天气详情

河南天气大转折,新一轮雨雪过程酝酿中!河南未来三天天气详情

夜深爱杂谈
2025-12-14 16:27:45
“等等党亏麻了”,12GB内存将在中端机上消失?

“等等党亏麻了”,12GB内存将在中端机上消失?

观察者网
2025-12-12 15:02:46
重磅?浓眉重回湖人,与詹姆斯东契奇组成三巨头,全力冲冠?

重磅?浓眉重回湖人,与詹姆斯东契奇组成三巨头,全力冲冠?

卜米同学的吉他弹唱
2025-12-14 17:34:22
毛主席曾留七大预言:当时没人信,如今6个已应验,第7个即将实现

毛主席曾留七大预言:当时没人信,如今6个已应验,第7个即将实现

秀心文雅
2025-09-13 10:25:44
评论炸了,网友却不敢看她坐下来

评论炸了,网友却不敢看她坐下来

章眽八卦
2025-12-07 11:32:57
曾经辉煌一时,如今出门却拿不出手的4种烟,常抽的基本年过50了

曾经辉煌一时,如今出门却拿不出手的4种烟,常抽的基本年过50了

神牛
2025-12-04 18:24:16
82年村支书扣下我的录取通知书,继父带刀去取,如今我已副厅退休

82年村支书扣下我的录取通知书,继父带刀去取,如今我已副厅退休

人间百态大全
2025-12-14 06:40:03
中年返贫三件套,一个都别碰。

中年返贫三件套,一个都别碰。

爱吃糖的猫cat
2025-12-14 18:19:34
有人吓坏了!郑丽文提特殊统一方式,美西方“驻台代表”排队求见

有人吓坏了!郑丽文提特殊统一方式,美西方“驻台代表”排队求见

话史官1
2025-11-19 11:18:08
洪晃靠什么支撑高消费和高曝光度?不查不知道,一查真是大开眼界

洪晃靠什么支撑高消费和高曝光度?不查不知道,一查真是大开眼界

小娱乐悠悠
2025-12-13 11:03:19
中方向以色列提出严正交涉

中方向以色列提出严正交涉

第一财经资讯
2025-12-13 09:46:49
“特朗普说漏嘴,拉夫罗夫挖出CIA间谍”

“特朗普说漏嘴,拉夫罗夫挖出CIA间谍”

观察者网
2025-12-14 16:10:04
9分钟11犯又如何!文班亚马复出,马刺终结雷霆!年轻球队的对决

9分钟11犯又如何!文班亚马复出,马刺终结雷霆!年轻球队的对决

Haviven聊球
2025-12-14 19:17:37
92:0!泰柬冲突输家诞生,特朗普将致电阿努廷,中方也终于发声

92:0!泰柬冲突输家诞生,特朗普将致电阿努廷,中方也终于发声

简读视觉
2025-12-14 18:39:35
高武,追记一等功!

高武,追记一等功!

极目新闻
2025-12-13 19:59:56
华为Pura90 曝光重磅升级:麒麟9030+双2亿主摄+3D人脸识别!

华为Pura90 曝光重磅升级:麒麟9030+双2亿主摄+3D人脸识别!

科技堡垒
2025-12-13 11:08:05
1938年,日本国内,高中生上课一丝不挂地接受军国主义的熏陶

1938年,日本国内,高中生上课一丝不挂地接受军国主义的熏陶

南权先生
2025-11-28 17:11:11
中国真正担心的是印度共产党上台,可能会见证另一个“中国崛起”

中国真正担心的是印度共产党上台,可能会见证另一个“中国崛起”

百态人间
2025-12-13 16:12:50
2025-12-14 20:28:49

科技要闻

当人形机器人有了App Store,宇树在赌什么

头条要闻

何晴唯一儿子已从中戏毕业 不久前和父亲合体亮相杂志

头条要闻

何晴唯一儿子已从中戏毕业 不久前和父亲合体亮相杂志

体育要闻

马刺终结雷霆:以勇猛,以文班亚马

娱乐要闻

何晴生前最大谣言!没有再婚嫁廖京生

财经要闻

重大违法强制退市!10人被判刑

汽车要闻

硬核敞篷巴士?掷弹兵Game Viewer 2026年初量产

态度原创

游戏
教育
健康
房产
军事航空

《如龙》系列20周年纪念 已有玩家与桐生一马“结婚”

教育要闻

必看!华南理工考点(4414)应试须知!

甲状腺结节到这个程度,该穿刺了!

房产要闻

车程5分钟价差300万 海棠湾的这个盘要火!

军事要闻

3名美方人员遇袭死亡 特朗普誓言报复

无障碍浏览 进入关怀版
×