31
2016年3年29年 年年年年年年 () 年年年年年年 年年年年年年 年年年年年年年 年年年年年年年 年年年 年年年 年年年年年年年年年年年年年年 年年年年年年年年年年年年年年年年 () 年年年年年 年年 © Kazuaki Tanaka & Shimane IT Open-innovation Center プププププププmruby ププププププププmruby/c 年 mruby/c 年年年年年年

mruby/c機能紹介20160329

Embed Size (px)

Citation preview

Page 1: mruby/c機能紹介20160329

      2016年3月29日   (共同研究者) 国立大学法人 九州工業大学 情報工学研究院 機械情報工学系  准教授   田中和明

しまねソフト研究開発センター       (公益財団法人しまね産業振興財団)

            専門研究員  東 裕人       

© Kazuaki Tanaka & Shimane IT Open-innovation Center

 プログラム言語「 mruby 」 先駆的研究テーマ「 mruby/c 」    〜 mruby/c の機能紹介〜 

Page 2: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

内 容

1  mruby の紹介2  mruby の最近の話題3  mruby/c の紹介4  mruby/c ボードの開発状況5  mruby/c のデモ

Page 3: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

1  mruby の紹介 ・ Ruby を小型化し、組込み用途で利用する・(例)  − 組込みデバイス  − 他のアプリケーションの内部で動く  − コマンドラインアプリケーション    (ネイティブアプリケーション)

Page 4: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

Ruby との違い ・ mruby のプログラム実行  (1) ソースコードをコンパイルして   バイトコードを得る  (2) バイトコードを VM が逐次実行する・バイトコードを実行する VM があれば、 どの環境でも mruby プログラムを動かせる

Page 5: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

バイトコードの特徴 ・バイナリ形式・アーキテクチャに依存しない・言語の解析が不要(アセンブラに近い)・実行時の高速化、省メモリ

(ここからは未実装)・局所的な最適化が期待できる・暗号化、電子署名

Page 6: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

組込みソフトの難しさ ・製品ごとに、使われているマイコンの  CPU 、メモリ、 OS などが異なる・マイコンごとに、専用の 開発環境が必要・周辺回路( I/O )も異なる・組込みソフトの開発だけでなく、 保守作業も困難

Page 7: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

難しさの例(よくある話し) ・製品に使用していた CPU が製造終了

・新しい CPU を使った製品を開発する・ソフトを作り直す ↑  CPU が異なれば、ソフトも大きな変更が必要  ・ CPU のビット幅が異なる  ・アーキテクチャが異なる  ・これまで使っていた OS が対応していない  ・タイミングが合わない(古い製品にありがち) 

Page 8: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

解決方法 ・ハードウェアに近い部分を抽象化する −  HAL ( Hardware Abstract Layer )・ VM で抽象化する −  Java

・抽象度の高い言語を使う − スクリプト言語( Ruby や JavaScript など)mruby

Page 9: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

mruby の場合 

Page 10: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

VM でバイトコードを実行する

Page 11: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

VM で動作検証できる ・ PC の上で動く VM を作っておくと 組込みソフトのテストができる − テスト用の入出力を用意しておき、   プログラムを実行する

Page 12: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

mruby のバージョン ・公開( Ver.1.0 ) − この時点で、多くのライブラリが提供されている・デバッガが提供されている( Ver.1.1 ) − デバッガツール(コマンドライン) − デバッガ用 API

・ mrbgem の充実( Ver.1.2 ) − クロスコンパイル −  mrbgems の整理

Page 13: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

mruby の機能拡張 〜 mrbgems 〜 

・機能拡張部分(多くはクラスの実装)を 1つのディレクトリ内にまとめる・ビルド設定ファイルに記述することで  VM ビルド時に機能が取り込まれる・不要な機能はビルド設定ファイルから 取り除くこともできる

Page 14: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

2 mruby の最近の話題 ・「組込みシステムの高効率開発を可能とする  開発フレームワークの研究開発」 (九州工業大学、 SCSK 九州、有明高専) −  NEDO の助成事業  「 IoT 社会の実現に向けた電子・情報分野事業の周   辺技術・関連課題における小規模研究開発」 −   mruby を使った IoT 製品開発を効率化する − 統合開発環境を設計開発する −  enzi ボード (*1) とシームレスに繋がる開発環境         (*1)enzi ボード: mruby 専用のマイコンボー

ド、 ARM Coretex M4  

Page 15: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

こんなイメージ ・ Arudino みたいな感覚で使える mruby ボード・ Arudino との違い −  m ruby である −   enzi 以外の mruby ボードも用意する   (バイトコード互換) − 必要なセンサに対応した VM にカスタマイズできる   ( Rails の感覚)

Page 16: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

3 m ruby/c の紹介 ・ mruby の多機能に対する逆張り・ mruby でできない事を実現しよう! − 少ないメモリ(〜ワンチップ) − コンカレント動作(〜 OS はいらない) − 起動を速くする(〜割り込みを目指す) − 組込み技術者向けの仕様            (〜見て分かる規模にする)

Page 17: mruby/c機能紹介20160329

mruby/c の特徴① 高い開発生産性: C 言語に比べて、 5 倍程度と予測

 ✪ Ruby が持つ高い生産性を引き継ぐ  コンカレントな動作✪ (異なる動作は、別のプログラムで実現) ⇒ ・スピーディーな試作開発、実用化開発を実現   ・容易に変更が可能 

② 省電力:従来のm ruby 比で 10 分の 1 程度、メモリ消費 50kb 未満で稼働

✪ 本来の機能以外の動作を省き実装を最適化 ✪ マルチコアプロセッサを積極的にサポート

⇒  ・限られた電力供給環境下でも稼働   (電池駆動、エナジーハーベスティング)

© Kazuaki Tanaka & Shimane IT Open-innovation Center

Page 18: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

mruby/c の基本コンセプト ・ mruby/c の優先順位       mruby は、  1. メモリ              

3. 機能  2.起動速度            4. 実行速度  3. 機能(ライブラリ) 1. メモリ  4. 実行速度 2.起動速度・想定するアプリケーション領域 ・省電力デバイス ・手軽に試作する 

Page 19: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

mruby と mruby/c の概要  mruby mruby/c

ターゲット サーバー組込み OSOS は、ほぼ必要

小型デバイスOS なし

メモリ 〜 400KB 〜 40KB機能拡張 mrbgems ソース書き換え

VM の機能拡張 通常はできない 可能

ライセンス MIT BSD

目指すところ 多くの環境で動作CRuby との互換性

小型省電力

Page 20: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

mruby/c ターゲットCPU  

PSoC5(32bit) CypressRX63N(32bit) ルネサスPIC24(16bit) Microchip Technology

Page 21: mruby/c機能紹介20160329

mruby/c   β 版の公開 

© Kazuaki Tanaka & Shimane IT Open-innovation Center

現在、 GitHub で公開していますhttps://github.com/mrubyc/mrubyc 

Page 22: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

「 mruby/c 」 の評価 

Page 23: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

mruby/c への機能追加 ・(状況) −   C で作成した関数を持っている −  Ruby から呼び出したい・(方法) −  Ruby のメソッドと C の関数の対応を記述する −  Ruby と C の間の値の受け渡し   ( wapper 関数を作る)

Page 24: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

機能追加の例 ・(状況) −  ベンダーから LED 出力の関数が提供されている・(方法) −  wapper 関数を作成する

−   wapper 関数を作成する

void LED_Writer(uint8 value);

void c_led(mrb_vm *vm, mrb_volue *v){ LED_Write( GET_INT_ARG(θ) );}

mrb_define_method(static_class_object, “led”, c_led);

Page 25: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

サンプルプログラム 

delay の関数も同様に作成します

Page 26: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

◯m ruby の研究を取り込む ・学生が MQTT を mruby に実装しました −  m ruby のビルド設定に1行追加するだけで、   MQTT 対応の VM を作成できます − 「 build_config.rb 」の中に1行追加するだけ    conf.gem :github => ‘sabakan21/mruby-mqtt’

mruby/c への機能追加 

Page 27: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

実験 

Page 28: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

「 mruby-mqtt 」の評価( 1 )  

Page 29: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

「 mruby-mqtt 」の評価( 2 )  

Page 30: mruby/c機能紹介20160329

© Kazuaki Tanaka & Shimane IT Open-innovation Center

4 mruby/c ボードの開発状況 (1)mruby/c が動く状態のマイコン − マイコンのフラッシュ内に mruby/c の VM を   書き込み済みで配布する  ※ PSoC5 を搭載(2)IDE − ケーブルで接続するだけで    mruby/c のマイコン開発を可能にする(3) ローカル/クラウドコンパイラ

Page 31: mruby/c機能紹介20160329

5 mruby/c のデモ Zigbee インターネット

センサーボードmruby/c

マイクロサーバーCRuby ブラウザ

© Kazuaki Tanaka & Shimane IT Open-innovation Center