mbed祭り 2017@春の新横浜 20170225 竹之下
TRANSCRIPT
Copyright © 2016 Uhuru Corporation, All Right Reserved. 1
mbed で javarcript (JerryScript)
2017/02/25
mbed 祭り 2017@ 春の新横浜
株式会社ウフルIoT イノベーションセンター IoT アーキテクト
デバイスプラットフォーム開発部 部長竹之下 航洋
Copyright © 2016 Uhuru Corporation, All Right Reserved. 2
自己紹介
Copyright © 2016 Uhuru Corporation, All Right Reserved. 3
ウフルってこんな会社です
出展・関連リンク:日経コンピュータ 2014.10.16 号 http://itpro.nikkeibp.co.jp/atclact/active/14/102800110/102800007/
日経 BP 社「第 9 回クラウドランキング」ベストサービスに選出
デロイトが発表した TMT 業界の売上高成長率のランキングにて、直近 4 年間の収益(売上高)成長率 200.16% を記録。
第 14 回 「アジア太平洋地域テクノロジー Fast 500 」を受賞
ウフルとはスワヒリ語で「自由」を意味する言葉です。自由な発想と確かな技術で社会の役に立つサービスを届けていきたいという思いを込めた社名です。
テクノロジーと自由な発想で未来を創る
ウフルという社名の由来とめざすビジョン
Copyright © 2016 Uhuru Corporation, All Right Reserved. 4
自己紹介
立命館大学理工学研究科にてロボティクス及び生体工学を専攻 在学中にドワンゴ研究開発センターにて Web システムの開発に従事 その後、ハードウェア系スタートアップに参画、執行役員 COO を歴任 2009 年からは組込み機器ベンダー「アットマークテクノ」にて製品開発・企画に従事
IoT ゲートウェイを中心とした新規ビジネスを立上げ 2016 年 4 月より ( 株 ) ウフルにて IoT イノベーションセンターに所属、 8 月より IoT アーキテクト着任 ウフルにおける IoT ソリューションの組込機器側開発の責任者
IoT の普及促進とそのセキュリティリスクについての啓蒙活動を行う IoT あるじゃん札幌立ち上げメンバー、ソラコムユーザーグループ発起人
AWS Summit2016登壇
JAIPA(日本インターネットサービスプロバイダ協会)カンファレンス 2016 ファシリテータ
SORACOM Discovery 2016セキュリティセッション
ファシリテータ
第 1 回徳島 IoT 活用研究会講師
Copyright © 2016 Uhuru Corporation, All Right Reserved. 5
自己紹介
立命館大学理工学研究科にてロボティクス及び生体工学を専攻 在学中にドワンゴ研究開発センターにて Web システムの開発に従事 その後、ハードウェア系スタートアップに参画、執行役員 COO を歴任 2009 年からは組込み機器ベンダー「アットマークテクノ」にて製品開発・企画に従事
IoT ゲートウェイを中心とした新規ビジネをス立上げ 2016 年 4 月より ( 株 ) ウフルにて IoT イノベーションセンターに所属、 8 月より IoT アーキテクト着任 ウフルにおける IoT ソリューションの組込機器側開発の責任者
IoT の普及促進とそのセキュリティリスクについての啓蒙活動を行う IoT あるじゃん札幌立ち上げメンバー、ソラコムユーザーグループ発起人
AWS Summit2016登壇
第 1 回徳島 IoT 活用研究会講師
JAIPA(日本インターネットサービスプロバイダ協会)カンファレンス 2016 ファシリテータ
SORACOM Discovery 2016セキュリティセッション
ファシリテータ
Copyright © 2016 Uhuru Corporation, All Right Reserved. 6
マイコンピュータ
PC9821 CX3Pentium/
Windows 95
Z80Non-OS
PIC18Non-OS
MSP430Non-OS
H8Non-OS
Armadillo-IoT G3Freescale i.MX7
(Corte-A7)/Linux 3.14
Armadillo-4x0Freescale i.MX257
(ARM926EJ-S)/Linux 2.6.26
Armadillo-2x0Cirrus Logic
EP9307(ARM920T)/Linux 2.6.12
GUI から入ったゆとり世代
マイコンは OS なしでアセンブラごりごりから
好きな ARM コアはARM9
Copyright © 2016 Uhuru Corporation, All Right Reserved. 7
mbed について
すごーい!あなたはマイコンで動く OSSでプロトコルスタックもあるフレンズ (OS) なんだね!
Copyright © 2016 Uhuru Corporation, All Right Reserved. 8
本題
Copyright © 2016 Uhuru Corporation, All Right Reserved.
javascript on mbed
Copyright © 2016 Uhuru Corporation, All Right Reserved. 10
Jan Jongboom: Run Your JS App For Years On A Single Coin Cell - JSConf.Asia 2016
https://youtu.be/3HLRwcVqgFE
Copyright © 2016 Uhuru Corporation, All Right Reserved. 11
• 世は IoT の時代
• しかし、 Web 系、クラウド系の人は C/C++ を扱えない
• Python, Ruby, PHP, Perl, javascript などスクリプト言語が主流
• それらをマイコン上でコイン電池で数年間持つぐらいの消費電力で動かすことができないか?
Challenge
Copyright © 2016 Uhuru Corporation, All Right Reserved. 12
• 元々 javascript には 2 種類ある– クライアントサイド javascript(Web ブラウザで動いているもの )– サーバーサイド javascript( ほぼイコール Node.js)
• javascript はイベント駆動型の処理が得意• Node.js はシングルスレッドでノンブロッキング I/O を活用して複数のイベン
トを見かけ上同時に処理する
• 組み込み向けでも、イベント駆動型のプログラミングならできるのでは?– リアルタイム制御への適用は期待できないけど。。。
組み込みで javascript ?
Copyright © 2016 Uhuru Corporation, All Right Reserved. 13
色々な組み込み向け javascript 実装
Copyright © 2016 Uhuru Corporation, All Right Reserved. 14
• Espruino– イギリスの開発者が ( 一人で? )
開発• https://www.espruino.com/
– 開発が活発– Node.js に準拠したインタープ
リターになっている
OSS で公開されていて注目しているもの
• JerryScript– 元々、 SAMSUNG が開発– 公式 (?) の mbed 対応がある
• https://github.com/ARMmbed/mbed-js-example
– ECMAScript の仕様に準拠?– インタープリターではなくプリ
コンパイル型– 今日はこっちの話
Copyright © 2016 Uhuru Corporation, All Right Reserved. 15
• Runs on > 40 boards already• Drivers, OS, critical paths in C++• Deep sleep build-in• Big library ecosystem, and many connectivity methods
• Application code can run in JS, and interop with C++
JS on mbed – Best of both worlds
Copyright © 2016 Uhuru Corporation, All Right Reserved. 16
Sample Application Code
var blink = require('./blink_leds');
setInterval(function() { blink();}, 2000);
main.js
var led = DigitalOut(LED1);
var blink = function() { led.write(led.read() ? 0 : 1); print("blink! LED is now " + led.read());};
module.exports = blink;
blink_led.js
すごーい!簡単だね!
Copyright © 2016 Uhuru Corporation, All Right Reserved. 17
• スレッドの管理• 割り込みの扱い• コンテキストスイッチ• 電源管理など、
しかし抽象度が高いと・・・
ローレベルの管理ができなくなるのでは?
Copyright © 2016 Uhuru Corporation, All Right Reserved. 18
• イベントループで自動的にスリープするようにすることで• JS on mbed Beacon では 7 年間動作できる計算
– nRF52-DK– 1sec interval– lowest power mode
Jan 曰く
これは試してみなければ
Copyright © 2016 Uhuru Corporation, All Right Reserved. 19
手順
mbed Developper サイトの Noteboot で公開
Copyright © 2016 Uhuru Corporation, All Right Reserved. 20
• ベース環境: Bash on Ubuntu on Windows (BoW)– ほぼ Ubuntu 14.04
開発環境の整備 : mbed-CLI
$ sudo apt-get install build-essentialInstall native toolchain
$ sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa$ sudo apt-get update$ sudo apt-get install gcc-arm-embedded
Install native toolchain
$ sudo apt-get install python$ sudo apt-get install python-pip$ sudo apt-get install git$ sudo apt-get install mercurial
Install dependencies
$ git clone https://github.com/ARMmbed/mbed-cli$ cd mbed-cli$ sudo python setup.py install$ mbed config --global GCC_ARM_PATH /usr/bin
Install mbed-cli
Copyright © 2016 Uhuru Corporation, All Right Reserved. 21
Jerryscript for mbed のビルド手順
$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -$ sudo apt-get install -y nodejs$ node --versionv6.9.5
Install Node.js
$ sudo npm install gulp-cli -gInstall Gulp
$ git clone https://github.com/ARMmbed/mbed-js-example$ cd mbed-js-example$ npm install$ gulp --target=NUCLEO_F401RE
build jerryscript
Copyright © 2016 Uhuru Corporation, All Right Reserved. 22
• ターゲットボード: NUCLEO_F401RE• コンパイラ: arm-none-eabi-gcc 6.2.1 20161205 [ARM/embedded-6-branch revision 243739]• OS: mbed OS 5.1
L チカの結果
+--------------------+--------+-------+-------+| Module | .text | .data | .bss |+--------------------+--------+-------+-------+| Fill | 390 | 0 | 12 || Misc | 299322 | 3644 | 18992 || drivers | 3390 | 4 | 192 || events | 52 | 0 | 0 || events/equeue | 1404 | 0 | 61 || hal | 802 | 0 | 8 || platform | 1771 | 4 | 297 || rtos | 757 | 4 | 4 || rtos/rtx | 6717 | 20 | 6870 || targets/TARGET_STM | 15497 | 4 | 1452 || Subtotals | 330102 | 3680 | 27888 |+--------------------+--------+-------+-------+Allocated Heap: unknownAllocated Stack: unknownTotal Static RAM memory (data + bss): 31568 bytesTotal RAM memory (data + bss + heap + stack): 31568 bytesTotal Flash memory (text + data + misc): 333782 bytes
L チカだけなら、 RAM 32kB, ROM 350kB 程度
Copyright © 2016 Uhuru Corporation, All Right Reserved. 23
• インタープリタ化• スリープ性能の評価• Node-RED の移植
今後やってみたいこと
一緒にやってくれるフレンズ募集中!
Copyright © 2016 Uhuru Corporation, All Right Reserved.