狠狠撸

狠狠撸Share a Scribd company logo
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 CX3
Pentium/
Windows 95
Z80
Non-OS
PIC18
Non-OS
MSP430
Non-OS
H8
Non-OS
Armadillo-IoT G3
Freescale i.MX7
(Corte-A7)/
Linux 3.14
Armadillo-4x0
Freescale
i.MX257
(ARM926EJ-S)/
Linux 2.6.26
Armadillo-2x0
Cirrus 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.
? 世はIoTの時代
? しかし、Web系、クラウド系の人はC/C++を扱えない
? Python, Ruby, PHP, Perl, javascriptなどスクリプト言語が主流
? それらをマイコン上でコイン電池で数年間持つぐらいの消費電力で動かすこと
ができないか?
11
Challenge
Copyright ? 2016 Uhuru Corporation, All Right Reserved.
? 元々javascriptには2種類ある
– クライアントサイドjavascript(Webブラウザで動いているもの)
– サーバーサイドjavascript(ほぼイコールNode.js)
? javascriptはイベント駆動型の処理が得意
? Node.jsはシングルスレッドでノンブロッキングI/Oを活用して複数のイベント
を見かけ上同時に処理する
? 組み込み向けでも、イベント駆動型のプログラミングならできるのでは?
– リアルタイム制御への適用は期待できないけど。。。
12
組み込みでjavascript?
Copyright ? 2016 Uhuru Corporation, All Right Reserved. 13
色々な組み込み向けjavascript実装
Copyright ? 2016 Uhuru Corporation, All Right Reserved.
? Espruino
– イギリスの開発者が(一人で?)
開発
? https://www.espruino.com/
– 開発が活発
– Node.jsに準拠したインタープリ
ターになっている
14
OSSで公開されていて注目しているもの
? JerryScript
– 元々、SAMSUNGが開発
– 公式(?)のmbed対応がある
? https://github.com/ARMmbe
d/mbed-js-example
– ECMAScriptの仕様に準拠?
– インタープリターではなくプリ
コンパイル型
– 今日はこっちの話
Copyright ? 2016 Uhuru Corporation, All Right Reserved.
? 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++
15
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.
? イベントループで自動的にスリープするようにすることで
? JS on mbed Beaconでは7年間動作できる計算
– nRF52-DK
– 1sec interval
– lowest power mode
18
Jan曰く
これは試してみなければ
Copyright ? 2016 Uhuru Corporation, All Right Reserved. 19
手順
mbed DevelopperサイトのNotebootで公開
Copyright ? 2016 Uhuru Corporation, All Right Reserved.
? ベース環境:Bash on Ubuntu on Windows (BoW)
– ほぼUbuntu 14.04
20
開発環境の整備: mbed-CLI
$ sudo apt-get install build-essential
Install 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 --version
v6.9.5
Install Node.js
$ sudo npm install gulp-cli -g
Install 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.
? ターゲットボード:NUCLEO_F401RE
? コンパイラ:arm-none-eabi-gcc 6.2.1 20161205 [ARM/embedded-6-branch revision 243739]
? OS: mbed OS 5.1
22
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: unknown
Allocated Stack: unknown
Total Static RAM memory (data + bss): 31568 bytes
Total RAM memory (data + bss + heap + stack): 31568 bytes
Total Flash memory (text + data + misc): 333782 bytes
Lチカだけなら、RAM 32kB, ROM 350kB程度
Copyright ? 2016 Uhuru Corporation, All Right Reserved.
? インタープリタ化
? スリープ性能の評価
? Node-REDの移植
23
今後やってみたいこと
一緒にやってくれるフレンズ募集中!
Copyright ? 2016 Uhuru Corporation, All Right Reserved.
iot@uhuru.jp

More Related Content

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

  • 1. Copyright ? 2016 Uhuru Corporation, All Right Reserved. 1 mbedでjavarcript (JerryScript) 2017/02/25 mbed祭り 2017@春の新横浜 株式会社ウフル IoTイノベーションセンター IoTアーキテクト デバイスプラットフォーム開発部 部長 竹之下 航洋
  • 2. Copyright ? 2016 Uhuru Corporation, All Right Reserved. 2 自己紹介
  • 3. 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」を受賞 ウフルとはスワヒリ語で「自由」を意味する言葉で す。自由な発想と確かな技術で社会の役に立つサー ビスを届けていきたいという思いを込めた社名です。 テクノロジーと 自由な発想で未来を創る ウフルという社名の由来と めざすビジョン
  • 4. 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活用研究会 講師
  • 5. 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 セキュリティセッション ファシリテータ
  • 6. Copyright ? 2016 Uhuru Corporation, All Right Reserved. 6 マイコンピュータ PC9821 CX3 Pentium/ Windows 95 Z80 Non-OS PIC18 Non-OS MSP430 Non-OS H8 Non-OS Armadillo-IoT G3 Freescale i.MX7 (Corte-A7)/ Linux 3.14 Armadillo-4x0 Freescale i.MX257 (ARM926EJ-S)/ Linux 2.6.26 Armadillo-2x0 Cirrus Logic EP9307 (ARM920T)/ Linux 2.6.12 GUIから入った ゆとり世代 マイコンはOSなしでアセンブラごりごりから 好きなARMコアはARM9
  • 7. Copyright ? 2016 Uhuru Corporation, All Right Reserved. 7 mbedについて すごーい! あなたはマイコンで動くOSSで プロトコルスタックもある フレンズ(OS)なんだね!
  • 8. Copyright ? 2016 Uhuru Corporation, All Right Reserved. 8 本題
  • 9. Copyright ? 2016 Uhuru Corporation, All Right Reserved. javascript on mbed
  • 10. 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
  • 11. Copyright ? 2016 Uhuru Corporation, All Right Reserved. ? 世はIoTの時代 ? しかし、Web系、クラウド系の人はC/C++を扱えない ? Python, Ruby, PHP, Perl, javascriptなどスクリプト言語が主流 ? それらをマイコン上でコイン電池で数年間持つぐらいの消費電力で動かすこと ができないか? 11 Challenge
  • 12. Copyright ? 2016 Uhuru Corporation, All Right Reserved. ? 元々javascriptには2種類ある – クライアントサイドjavascript(Webブラウザで動いているもの) – サーバーサイドjavascript(ほぼイコールNode.js) ? javascriptはイベント駆動型の処理が得意 ? Node.jsはシングルスレッドでノンブロッキングI/Oを活用して複数のイベント を見かけ上同時に処理する ? 組み込み向けでも、イベント駆動型のプログラミングならできるのでは? – リアルタイム制御への適用は期待できないけど。。。 12 組み込みでjavascript?
  • 13. Copyright ? 2016 Uhuru Corporation, All Right Reserved. 13 色々な組み込み向けjavascript実装
  • 14. Copyright ? 2016 Uhuru Corporation, All Right Reserved. ? Espruino – イギリスの開発者が(一人で?) 開発 ? https://www.espruino.com/ – 開発が活発 – Node.jsに準拠したインタープリ ターになっている 14 OSSで公開されていて注目しているもの ? JerryScript – 元々、SAMSUNGが開発 – 公式(?)のmbed対応がある ? https://github.com/ARMmbe d/mbed-js-example – ECMAScriptの仕様に準拠? – インタープリターではなくプリ コンパイル型 – 今日はこっちの話
  • 15. Copyright ? 2016 Uhuru Corporation, All Right Reserved. ? 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++ 15 JS on mbed – Best of both worlds
  • 16. 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 すごーい!簡単だね!
  • 17. Copyright ? 2016 Uhuru Corporation, All Right Reserved. ? スレッドの管理 ? 割り込みの扱い ? コンテキストスイッチ ? 電源管理 など、 17 しかし抽象度が高いと??? ローレベルの管理ができなくなるのでは?
  • 18. Copyright ? 2016 Uhuru Corporation, All Right Reserved. ? イベントループで自動的にスリープするようにすることで ? JS on mbed Beaconでは7年間動作できる計算 – nRF52-DK – 1sec interval – lowest power mode 18 Jan曰く これは試してみなければ
  • 19. Copyright ? 2016 Uhuru Corporation, All Right Reserved. 19 手順 mbed DevelopperサイトのNotebootで公開
  • 20. Copyright ? 2016 Uhuru Corporation, All Right Reserved. ? ベース環境:Bash on Ubuntu on Windows (BoW) – ほぼUbuntu 14.04 20 開発環境の整備: mbed-CLI $ sudo apt-get install build-essential Install 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
  • 21. 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 --version v6.9.5 Install Node.js $ sudo npm install gulp-cli -g Install Gulp $ git clone https://github.com/ARMmbed/mbed-js-example $ cd mbed-js-example $ npm install $ gulp --target=NUCLEO_F401RE build jerryscript
  • 22. Copyright ? 2016 Uhuru Corporation, All Right Reserved. ? ターゲットボード:NUCLEO_F401RE ? コンパイラ:arm-none-eabi-gcc 6.2.1 20161205 [ARM/embedded-6-branch revision 243739] ? OS: mbed OS 5.1 22 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: unknown Allocated Stack: unknown Total Static RAM memory (data + bss): 31568 bytes Total RAM memory (data + bss + heap + stack): 31568 bytes Total Flash memory (text + data + misc): 333782 bytes Lチカだけなら、RAM 32kB, ROM 350kB程度
  • 23. Copyright ? 2016 Uhuru Corporation, All Right Reserved. ? インタープリタ化 ? スリープ性能の評価 ? Node-REDの移植 23 今後やってみたいこと 一緒にやってくれるフレンズ募集中!
  • 24. Copyright ? 2016 Uhuru Corporation, All Right Reserved. iot@uhuru.jp