首页>会议文档 >

联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅

page:
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅
联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅

联发科 陳柏儒——MCU 与 lightweight javascript engine 的邂逅

所属会议:WOT2016互联网运维与开发者大会会议地点:北京


下载

手机看
活动家APP客户端

扫二维码下载
或点击下载
Android iOS

4582次
浏览次数

文档介绍

多年看过众多茫茫开发板大海之中,身为 JavaScript / Node.js 工程师都难免会有一些遗憾。因为 MCU 物联网裝置在 CPU 效能和记忆体空间上都有着严重的制约,几乎无法提供 Node.js 所需之环境。这阵子在 IoT / embeded system Community 当中,MCU 系列的晶片已出现越来越多高阶语言引擎的支持,这次主题来分享当前几名著名 IoT javascript engine 专案 (JerryScript, Espruino, v7, and Duklove) ,有助于帮助各位有用 javascript 來實現更多物聯網應用開發。同时。,本次讲座会分享讲者如何以 MTK 晶片 MT7687 來打造全世界第一款完全支持 javascript 的 CM4 + wifi MCU 产品。

演讲实录

在大会上,联发科资深工程师陈柏儒进行了主题为“MCU 與 lightweight javascript engine 的邂逅”的主题演讲,以下是演讲整理。
物联网提出新挑战
最常见的互联网相关的应用场景,像智能家居中的智慧冷气、智慧台灯、智慧音箱,智慧浇花器等。物联网最重要的是具有联网能力,远端是云,从终端的物到云之间,家里只有一条光纤,中间有一个类似于路由器的角色,帮把终端的产品装置到人的指令通过gateway上传到云端。以上是很常见的举例,以家庭市场来看物联网是这样。

联发科去年年底有针对gateway部分推出Linux base,叫做7688。这样等级的晶片,常见的类别因为是Linux base,属于MPU,可能有比较好的运算资源,比如580MHB,有可能配合256MB以上的,或者是32MB以上的空间。Linux base有一个先天的问题,一开始开机需要比较长的时间,以7688来看差不多1-2分钟左右。因为属于比较高度的运算,通常需要长时间插电状态,晶片也相对比较贵。

终端的市场,今天买一个智慧台灯,当使用者回到家很高兴地插在电源上,每一次插要等2分钟,智慧台灯才开始工作,这个情境对于很多使用者的体验非常不好。最近几年,甚至终端的产品会建议使用MCU,大陆的用法是单晶片,其实需要资源比较少,目前常常看到100多KB RAM或者256KB RAM,储存空间也非常少,可能1-2MB的储存空间,好处是开机时间短,省电,甚至是晶片更便宜。

这样的应用场景跟晶片的选择,今天主题是介绍怎么让JavaScript跑在更多的应用,以刚才的场景来看,云端是一个Server,用Node.js跑,右下角是MPU,通常有Linux base,因为Node.js本身有对于Linux base这层以上做很多丰富资源,像7688以Node.js为主。现实市面上,因为大家都很习惯Node.js,本身所需要的资源,最基本的资源要安装、下载,资源就使用miga.js本身需要执行的内容需要120MB以上,对于单晶片非常有挑战。

js挖掘芯片潜能
联发科今年年终推出一款晶片,ARM Cortex-M系列的晶片,本身环境是256KB RAM,2MB flash左右的空间。陈柏儒曾经尝试先用公司的晶片完成想要在js带给大家更多玩法,真的困难重重,但是不用担心,因为在过去五年来,国外很多社群,Lightweight JavaScript engine,都相当红。

在中国可能会有一个常听到的名字,Tiny.js engine,如果没有听过没有关系,想必一定听过Espruino,其实是基于Tiny.js engine做出来的产品。Tiny.js engine是最早盛行在单晶片的js engine,原来是由一个高中生自己做,想把js跑在上面,自己写一个很简单的interpreter。现在来看参考价值不高,在五年前的时代,在js engine强调边parse边解析,这样的做法也相当与给后期很多js engine很棒的参考。

因为Espruino带出了一些喜欢js的爱好者,本身有一些项目在大公司,像高通、Samsung,有一些大公司本身也有一些资源,高通背后有Allseen联盟,相当于js的潜力,自己研发出duktape engine,他们提供alljoyn.js部分。Samsung有一个CTO组织,自己研发出Jerryscript,集成其他API包成IoT.js。

让Jerryscript engine更加完善
Jerryscript的架构,左边Parser产生bytecode,中间是针对bytecode做优化,虚拟优化或者某一些演算法前进的优化,然后再带入。这些是目前在市面上比较常见,而且比较稳定的Level js engine架构。

把engine全部放在7687开发上,做一个简单的比较,为什么光有Jerryscript engine还不够,发现这个原因,想要另外开一个专案,来改善现有Jerryscript engine的盲点。一开始针对LICENSE,以V7来看,在LICENSE部分属于GPL,不管是商业使用一定要开源,可能有些客户不是很喜欢,当初在V7 engine因为这个原因把它化掉。还有一些其他原因,比如有ECMA 5一些规范V7没有做完,V7是强调让大家可以改进,让Jerryscript engine符合ECMA 5的标准。

开始比较Jerry和Duktape部分,Duktape有一个很大的部分,在RAM的资源消耗是一个很大的关键因素,Jerry其实每一次可能js那一层到底层所谓js binding层,通常有一个RAM,可以消耗30-70KB,Duktape接近96KB,开始把Duktape先化掉。最后选用engine基于Jerryscript发展所有leverage node.js。

×

打开微信扫一扫,分享到朋友圈