12
mruby+組込み対話環境 吉岡 紘二(kyab)

東京Rubyプレゼンテーション2014 mruby対話環境

Embed Size (px)

DESCRIPTION

interested? watch working demo on http://d.hatena.ne.jp/kyab/20130621

Citation preview

Page 1: 東京Rubyプレゼンテーション2014  mruby対話環境

mruby+組込み対話環境

吉岡 紘二(kyab)

Page 2: 東京Rubyプレゼンテーション2014  mruby対話環境

mruby+組込みでもirbしたい!

• 目的 • ハードウェア制御の試行錯誤 • 状態の確認 • クラス/メソッド再定義

• 環境 • USBシリアルなどで対話 • RAMギリギリでも動いて欲しい

Page 3: 東京Rubyプレゼンテーション2014  mruby対話環境

ホストベースなmirb• ホスト上とターゲットのボード上の協調REPL

• ホスト: • ユーザ入力をコンパイル • バイトコードをターゲットに送り込む

• ターゲット: • バイトコードを実行 • 実行結果を文字列にして、ホストに応答

• mruby-bin-mirb-hostbasedとしてgithubにて公開

Page 4: 東京Rubyプレゼンテーション2014  mruby対話環境

コンパイラ不要 !

省メモリ動作

ホストベースなmirb

Page 5: 東京Rubyプレゼンテーション2014  mruby対話環境

Arduino互換ボード chipKIT Max32

• Digilent.inc

• Microchip® PIC32MX795F512 • 80MHz 32bit MIPS

• ROM 512kb • RAM 128kb

Page 6: 東京Rubyプレゼンテーション2014  mruby対話環境

RCカー デモ

Page 7: 東京Rubyプレゼンテーション2014  mruby対話環境

ホストベースREPL プロトコル

ホスト ターゲットENQ(0x06)ACK(0x05)

SOH(0x01 or 0x02(verbose))

バイトコードサイズN:2byte

‘!’

バイトコード:Nbyte

100byteごとにACKを返す

(シリアル受信バッファあふれの防止)

SOH(0x01 or 0x02(exception))

結果文字列サイズM:2byte‘!’‘!’

結果文字列:Mbyte例外もinspectして文字列で

返す

接続確立

バイトコード送信

結果文字列受信

Page 8: 東京Rubyプレゼンテーション2014  mruby対話環境

• mruby-bin-mirb-hostbased https://github.com/kyab/mruby-bin-mirb-hostbased

• mruby-arduino https://github.com/kyab/mruby-arduino

Page 9: 東京Rubyプレゼンテーション2014  mruby対話環境

• twitter:@kyab212

[email protected]

• http://d.hatena.ne.jp/kyab/

Page 10: 東京Rubyプレゼンテーション2014  mruby対話環境

補足

Page 11: 東京Rubyプレゼンテーション2014  mruby対話環境

今後の予定• pryしたい!

• 高度なオブジェクト指向デバッグ • cdでコンテキスト移動 • binding.mpry (?) でブレーク • 課題:mrubyではローカル変数取れない。Bindingクラスがない

• mrubyデバッグ機能と連携

• ネットワーク対応

Page 12: 東京Rubyプレゼンテーション2014  mruby対話環境

動作実績

• chipKIT Max32 (RAM 128kb)

• Arduino Due (RAM 96kb)

• GR-SAKURA (RAM 128kb)(id:masahino123さん http://masahino123.hatenablog.com/entry/2013/08/16/150538)