Upload
shimane-itoc
View
2.296
Download
0
Embed Size (px)
Citation preview
2016年3月29日 (共同研究者) 国立大学法人 九州工業大学 情報工学研究院 機械情報工学系 准教授 田中和明
しまねソフト研究開発センター (公益財団法人しまね産業振興財団)
専門研究員 東 裕人
© Kazuaki Tanaka & Shimane IT Open-innovation Center
プログラム言語「 mruby 」 先駆的研究テーマ「 mruby/c 」 〜 mruby/c の機能紹介〜
© Kazuaki Tanaka & Shimane IT Open-innovation Center
内 容
1 mruby の紹介2 mruby の最近の話題3 mruby/c の紹介4 mruby/c ボードの開発状況5 mruby/c のデモ
© Kazuaki Tanaka & Shimane IT Open-innovation Center
1 mruby の紹介 ・ Ruby を小型化し、組込み用途で利用する・(例) − 組込みデバイス − 他のアプリケーションの内部で動く − コマンドラインアプリケーション (ネイティブアプリケーション)
© Kazuaki Tanaka & Shimane IT Open-innovation Center
Ruby との違い ・ mruby のプログラム実行 (1) ソースコードをコンパイルして バイトコードを得る (2) バイトコードを VM が逐次実行する・バイトコードを実行する VM があれば、 どの環境でも mruby プログラムを動かせる
© Kazuaki Tanaka & Shimane IT Open-innovation Center
バイトコードの特徴 ・バイナリ形式・アーキテクチャに依存しない・言語の解析が不要(アセンブラに近い)・実行時の高速化、省メモリ
(ここからは未実装)・局所的な最適化が期待できる・暗号化、電子署名
© Kazuaki Tanaka & Shimane IT Open-innovation Center
組込みソフトの難しさ ・製品ごとに、使われているマイコンの CPU 、メモリ、 OS などが異なる・マイコンごとに、専用の 開発環境が必要・周辺回路( I/O )も異なる・組込みソフトの開発だけでなく、 保守作業も困難
© Kazuaki Tanaka & Shimane IT Open-innovation Center
難しさの例(よくある話し) ・製品に使用していた CPU が製造終了
・新しい CPU を使った製品を開発する・ソフトを作り直す ↑ CPU が異なれば、ソフトも大きな変更が必要 ・ CPU のビット幅が異なる ・アーキテクチャが異なる ・これまで使っていた OS が対応していない ・タイミングが合わない(古い製品にありがち)
© Kazuaki Tanaka & Shimane IT Open-innovation Center
解決方法 ・ハードウェアに近い部分を抽象化する − HAL ( Hardware Abstract Layer )・ VM で抽象化する − Java
・抽象度の高い言語を使う − スクリプト言語( Ruby や JavaScript など)mruby
© Kazuaki Tanaka & Shimane IT Open-innovation Center
mruby の場合
© Kazuaki Tanaka & Shimane IT Open-innovation Center
VM でバイトコードを実行する
© Kazuaki Tanaka & Shimane IT Open-innovation Center
VM で動作検証できる ・ PC の上で動く VM を作っておくと 組込みソフトのテストができる − テスト用の入出力を用意しておき、 プログラムを実行する
© Kazuaki Tanaka & Shimane IT Open-innovation Center
mruby のバージョン ・公開( Ver.1.0 ) − この時点で、多くのライブラリが提供されている・デバッガが提供されている( Ver.1.1 ) − デバッガツール(コマンドライン) − デバッガ用 API
・ mrbgem の充実( Ver.1.2 ) − クロスコンパイル − mrbgems の整理
© Kazuaki Tanaka & Shimane IT Open-innovation Center
mruby の機能拡張 〜 mrbgems 〜
・機能拡張部分(多くはクラスの実装)を 1つのディレクトリ内にまとめる・ビルド設定ファイルに記述することで VM ビルド時に機能が取り込まれる・不要な機能はビルド設定ファイルから 取り除くこともできる
© Kazuaki Tanaka & Shimane IT Open-innovation Center
2 mruby の最近の話題 ・「組込みシステムの高効率開発を可能とする 開発フレームワークの研究開発」 (九州工業大学、 SCSK 九州、有明高専) − NEDO の助成事業 「 IoT 社会の実現に向けた電子・情報分野事業の周 辺技術・関連課題における小規模研究開発」 − mruby を使った IoT 製品開発を効率化する − 統合開発環境を設計開発する − enzi ボード (*1) とシームレスに繋がる開発環境 (*1)enzi ボード: mruby 専用のマイコンボー
ド、 ARM Coretex M4
© Kazuaki Tanaka & Shimane IT Open-innovation Center
こんなイメージ ・ Arudino みたいな感覚で使える mruby ボード・ Arudino との違い − m ruby である − enzi 以外の mruby ボードも用意する (バイトコード互換) − 必要なセンサに対応した VM にカスタマイズできる ( Rails の感覚)
© Kazuaki Tanaka & Shimane IT Open-innovation Center
3 m ruby/c の紹介 ・ mruby の多機能に対する逆張り・ mruby でできない事を実現しよう! − 少ないメモリ(〜ワンチップ) − コンカレント動作(〜 OS はいらない) − 起動を速くする(〜割り込みを目指す) − 組込み技術者向けの仕様 (〜見て分かる規模にする)
mruby/c の特徴① 高い開発生産性: C 言語に比べて、 5 倍程度と予測
✪ Ruby が持つ高い生産性を引き継ぐ コンカレントな動作✪ (異なる動作は、別のプログラムで実現) ⇒ ・スピーディーな試作開発、実用化開発を実現 ・容易に変更が可能
② 省電力:従来のm ruby 比で 10 分の 1 程度、メモリ消費 50kb 未満で稼働
✪ 本来の機能以外の動作を省き実装を最適化 ✪ マルチコアプロセッサを積極的にサポート
⇒ ・限られた電力供給環境下でも稼働 (電池駆動、エナジーハーベスティング)
© Kazuaki Tanaka & Shimane IT Open-innovation Center
© Kazuaki Tanaka & Shimane IT Open-innovation Center
mruby/c の基本コンセプト ・ mruby/c の優先順位 mruby は、 1. メモリ
3. 機能 2.起動速度 4. 実行速度 3. 機能(ライブラリ) 1. メモリ 4. 実行速度 2.起動速度・想定するアプリケーション領域 ・省電力デバイス ・手軽に試作する
© Kazuaki Tanaka & Shimane IT Open-innovation Center
mruby と mruby/c の概要 mruby mruby/c
ターゲット サーバー組込み OSOS は、ほぼ必要
小型デバイスOS なし
メモリ 〜 400KB 〜 40KB機能拡張 mrbgems ソース書き換え
VM の機能拡張 通常はできない 可能
ライセンス MIT BSD
目指すところ 多くの環境で動作CRuby との互換性
小型省電力
© Kazuaki Tanaka & Shimane IT Open-innovation Center
mruby/c ターゲットCPU
PSoC5(32bit) CypressRX63N(32bit) ルネサスPIC24(16bit) Microchip Technology
mruby/c β 版の公開
© Kazuaki Tanaka & Shimane IT Open-innovation Center
現在、 GitHub で公開していますhttps://github.com/mrubyc/mrubyc
© Kazuaki Tanaka & Shimane IT Open-innovation Center
「 mruby/c 」 の評価
© Kazuaki Tanaka & Shimane IT Open-innovation Center
mruby/c への機能追加 ・(状況) − C で作成した関数を持っている − Ruby から呼び出したい・(方法) − Ruby のメソッドと C の関数の対応を記述する − Ruby と C の間の値の受け渡し ( wapper 関数を作る)
© 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);
© Kazuaki Tanaka & Shimane IT Open-innovation Center
サンプルプログラム
delay の関数も同様に作成します
© 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 への機能追加
© Kazuaki Tanaka & Shimane IT Open-innovation Center
実験
© Kazuaki Tanaka & Shimane IT Open-innovation Center
「 mruby-mqtt 」の評価( 1 )
© Kazuaki Tanaka & Shimane IT Open-innovation Center
「 mruby-mqtt 」の評価( 2 )
© Kazuaki Tanaka & Shimane IT Open-innovation Center
4 mruby/c ボードの開発状況 (1)mruby/c が動く状態のマイコン − マイコンのフラッシュ内に mruby/c の VM を 書き込み済みで配布する ※ PSoC5 を搭載(2)IDE − ケーブルで接続するだけで mruby/c のマイコン開発を可能にする(3) ローカル/クラウドコンパイラ
5 mruby/c のデモ Zigbee インターネット
センサーボードmruby/c
マイクロサーバーCRuby ブラウザ
© Kazuaki Tanaka & Shimane IT Open-innovation Center