mbed祭り 2017@春の新横浜 20170225 竹之下

24
Copyright © 2016 Uhuru Corporation, All Right Reserved. 1 mbed で javarcript (JerryScript) 2017/02/25 mbed でで 2017@ ででででで ででででででで IoT ででででででででででで IoT でででででで ででででででででででででででで でで ででで でで

Upload: koyo-takenoshita

Post on 20-Mar-2017

369 views

Category:

Devices & Hardware


3 download

TRANSCRIPT

Page 1: Mbed祭り 2017@春の新横浜 20170225 竹之下

Copyright © 2016 Uhuru Corporation, All Right Reserved. 1

mbed で javarcript (JerryScript)

2017/02/25

mbed 祭り 2017@ 春の新横浜

株式会社ウフルIoT イノベーションセンター IoT アーキテクト

デバイスプラットフォーム開発部 部長竹之下 航洋

Page 2: Mbed祭り 2017@春の新横浜 20170225 竹之下

Copyright © 2016 Uhuru Corporation, All Right Reserved. 2

自己紹介

Page 3: Mbed祭り 2017@春の新横浜 20170225 竹之下

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 」を受賞

ウフルとはスワヒリ語で「自由」を意味する言葉です。自由な発想と確かな技術で社会の役に立つサービスを届けていきたいという思いを込めた社名です。

テクノロジーと自由な発想で未来を創る

ウフルという社名の由来とめざすビジョン

Page 4: Mbed祭り 2017@春の新横浜 20170225 竹之下

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 活用研究会講師

Page 5: Mbed祭り 2017@春の新横浜 20170225 竹之下

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セキュリティセッション

ファシリテータ

Page 6: Mbed祭り 2017@春の新横浜 20170225 竹之下

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

Page 7: Mbed祭り 2017@春の新横浜 20170225 竹之下

Copyright © 2016 Uhuru Corporation, All Right Reserved. 7

mbed について

すごーい!あなたはマイコンで動く OSSでプロトコルスタックもあるフレンズ (OS) なんだね!

Page 8: Mbed祭り 2017@春の新横浜 20170225 竹之下

Copyright © 2016 Uhuru Corporation, All Right Reserved. 8

本題

Page 9: Mbed祭り 2017@春の新横浜 20170225 竹之下

Copyright © 2016 Uhuru Corporation, All Right Reserved.

javascript on mbed

Page 10: Mbed祭り 2017@春の新横浜 20170225 竹之下

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

Page 11: Mbed祭り 2017@春の新横浜 20170225 竹之下

Copyright © 2016 Uhuru Corporation, All Right Reserved. 11

• 世は IoT の時代

• しかし、 Web 系、クラウド系の人は C/C++ を扱えない

• Python, Ruby, PHP, Perl, javascript などスクリプト言語が主流

• それらをマイコン上でコイン電池で数年間持つぐらいの消費電力で動かすことができないか?

Challenge

Page 12: Mbed祭り 2017@春の新横浜 20170225 竹之下

Copyright © 2016 Uhuru Corporation, All Right Reserved. 12

• 元々 javascript には 2 種類ある– クライアントサイド javascript(Web ブラウザで動いているもの )– サーバーサイド javascript( ほぼイコール Node.js)

• javascript はイベント駆動型の処理が得意• Node.js はシングルスレッドでノンブロッキング I/O を活用して複数のイベン

トを見かけ上同時に処理する

• 組み込み向けでも、イベント駆動型のプログラミングならできるのでは?– リアルタイム制御への適用は期待できないけど。。。

組み込みで javascript ?

Page 13: Mbed祭り 2017@春の新横浜 20170225 竹之下

Copyright © 2016 Uhuru Corporation, All Right Reserved. 13

色々な組み込み向け javascript 実装

Page 14: Mbed祭り 2017@春の新横浜 20170225 竹之下

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 の仕様に準拠?– インタープリターではなくプリ

コンパイル型– 今日はこっちの話

Page 15: Mbed祭り 2017@春の新横浜 20170225 竹之下

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

Page 16: Mbed祭り 2017@春の新横浜 20170225 竹之下

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

すごーい!簡単だね!

Page 17: Mbed祭り 2017@春の新横浜 20170225 竹之下

Copyright © 2016 Uhuru Corporation, All Right Reserved. 17

• スレッドの管理• 割り込みの扱い• コンテキストスイッチ• 電源管理など、

しかし抽象度が高いと・・・

ローレベルの管理ができなくなるのでは?

Page 18: Mbed祭り 2017@春の新横浜 20170225 竹之下

Copyright © 2016 Uhuru Corporation, All Right Reserved. 18

• イベントループで自動的にスリープするようにすることで• JS on mbed Beacon では 7 年間動作できる計算

– nRF52-DK– 1sec interval– lowest power mode

Jan 曰く

これは試してみなければ

Page 19: Mbed祭り 2017@春の新横浜 20170225 竹之下

Copyright © 2016 Uhuru Corporation, All Right Reserved. 19

手順

mbed Developper サイトの Noteboot で公開

Page 20: Mbed祭り 2017@春の新横浜 20170225 竹之下

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

Page 21: Mbed祭り 2017@春の新横浜 20170225 竹之下

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

Page 22: Mbed祭り 2017@春の新横浜 20170225 竹之下

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 程度

Page 23: Mbed祭り 2017@春の新横浜 20170225 竹之下

Copyright © 2016 Uhuru Corporation, All Right Reserved. 23

• インタープリタ化• スリープ性能の評価• Node-RED の移植

今後やってみたいこと

一緒にやってくれるフレンズ募集中!

Page 24: Mbed祭り 2017@春の新横浜 20170225 竹之下

Copyright © 2016 Uhuru Corporation, All Right Reserved.

[email protected]