東京rubyプレゼンテーション2014 mruby対話環境
DESCRIPTION
interested? watch working demo on http://d.hatena.ne.jp/kyab/20130621TRANSCRIPT
![Page 1: 東京Rubyプレゼンテーション2014 mruby対話環境](https://reader033.vdocuments.site/reader033/viewer/2022052617/5463d893b4af9f5d3f8b46d0/html5/thumbnails/1.jpg)
mruby+組込み対話環境
吉岡 紘二(kyab)
![Page 2: 東京Rubyプレゼンテーション2014 mruby対話環境](https://reader033.vdocuments.site/reader033/viewer/2022052617/5463d893b4af9f5d3f8b46d0/html5/thumbnails/2.jpg)
mruby+組込みでもirbしたい!
• 目的 • ハードウェア制御の試行錯誤 • 状態の確認 • クラス/メソッド再定義
• 環境 • USBシリアルなどで対話 • RAMギリギリでも動いて欲しい
![Page 3: 東京Rubyプレゼンテーション2014 mruby対話環境](https://reader033.vdocuments.site/reader033/viewer/2022052617/5463d893b4af9f5d3f8b46d0/html5/thumbnails/3.jpg)
ホストベースなmirb• ホスト上とターゲットのボード上の協調REPL
• ホスト: • ユーザ入力をコンパイル • バイトコードをターゲットに送り込む
• ターゲット: • バイトコードを実行 • 実行結果を文字列にして、ホストに応答
• mruby-bin-mirb-hostbasedとしてgithubにて公開
![Page 4: 東京Rubyプレゼンテーション2014 mruby対話環境](https://reader033.vdocuments.site/reader033/viewer/2022052617/5463d893b4af9f5d3f8b46d0/html5/thumbnails/4.jpg)
コンパイラ不要 !
省メモリ動作
ホストベースなmirb
![Page 5: 東京Rubyプレゼンテーション2014 mruby対話環境](https://reader033.vdocuments.site/reader033/viewer/2022052617/5463d893b4af9f5d3f8b46d0/html5/thumbnails/5.jpg)
Arduino互換ボード chipKIT Max32
• Digilent.inc
• Microchip® PIC32MX795F512 • 80MHz 32bit MIPS
• ROM 512kb • RAM 128kb
![Page 6: 東京Rubyプレゼンテーション2014 mruby対話環境](https://reader033.vdocuments.site/reader033/viewer/2022052617/5463d893b4af9f5d3f8b46d0/html5/thumbnails/6.jpg)
RCカー デモ
![Page 7: 東京Rubyプレゼンテーション2014 mruby対話環境](https://reader033.vdocuments.site/reader033/viewer/2022052617/5463d893b4af9f5d3f8b46d0/html5/thumbnails/7.jpg)
ホストベース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対話環境](https://reader033.vdocuments.site/reader033/viewer/2022052617/5463d893b4af9f5d3f8b46d0/html5/thumbnails/8.jpg)
• 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対話環境](https://reader033.vdocuments.site/reader033/viewer/2022052617/5463d893b4af9f5d3f8b46d0/html5/thumbnails/9.jpg)
• twitter:@kyab212
• http://d.hatena.ne.jp/kyab/
![Page 10: 東京Rubyプレゼンテーション2014 mruby対話環境](https://reader033.vdocuments.site/reader033/viewer/2022052617/5463d893b4af9f5d3f8b46d0/html5/thumbnails/10.jpg)
補足
![Page 11: 東京Rubyプレゼンテーション2014 mruby対話環境](https://reader033.vdocuments.site/reader033/viewer/2022052617/5463d893b4af9f5d3f8b46d0/html5/thumbnails/11.jpg)
今後の予定• pryしたい!
• 高度なオブジェクト指向デバッグ • cdでコンテキスト移動 • binding.mpry (?) でブレーク • 課題:mrubyではローカル変数取れない。Bindingクラスがない
• mrubyデバッグ機能と連携
• ネットワーク対応
![Page 12: 東京Rubyプレゼンテーション2014 mruby対話環境](https://reader033.vdocuments.site/reader033/viewer/2022052617/5463d893b4af9f5d3f8b46d0/html5/thumbnails/12.jpg)
動作実績
• chipKIT Max32 (RAM 128kb)
• Arduino Due (RAM 96kb)
• GR-SAKURA (RAM 128kb)(id:masahino123さん http://masahino123.hatenablog.com/entry/2013/08/16/150538)