mruby for embedded systems

5,101 views

Published on

TokyuRuby会議05での発表資料です。

Published in: Technology

mruby for embedded systems

  1. 1. mruby forembedded systems 2012/07/29 TokyuRuby会議05 高橋征義・やまねゆりえ
  2. 2. ※某弊社の宣伝とかRubyConf渡航支援募集中とか札幌Ruby会議2012LT募集中とかLL Decade参加者募集中とかの話は時間がないので今回は割愛させていただきます(_o_)
  3. 3. 本日のお題● mrubyとは● 組込み環境について● mrubyの課題● デモ● 解決策● 実装
  4. 4. mrubyとは● 軽量Ruby● 平成22年度地域イノベーショ ン創出研究開発事業「軽量 Rubyを用いた組込みプラッ トフォームの研究・開発」の 成果● ささださんが作ってない方の Ruby
  5. 5. 軽量Ruby を用いた組込みプラットフォームの研究・開発http://www.pref.fukuoka.lg.jp/uploaded/life/50/50557_12372800_misc.pdf
  6. 6. http://el.jibun.atmarkit.co.jp/rails/2012/04/rubymruby-2004.html
  7. 7. 組込み環境● 家電から自動車、ロケットまでいろい ろ● コストと性能のバランス● PCほどリッチじゃない(ことも多 い)● OSなし or RTOS(VxWorks, μITRON, 独自の謎OSなど)
  8. 8. mrubyの課題● 意外にでかい(当社比)● 特に実行時の動的メモリ確保がでか い● 数MBくらいのメモリ環境を想定し ているらしい(まつもとさん談)● 起動だけで30KB超える● 100KBくらいでも動かすのがしん どそう
  9. 9. デモマイコン: Interface付録のFM3(Cortex-M3)のエミュレータ(QEMU 1.0.1)OS:  TOPPERS/ASP 1.7.0アプリ:  sample1のtask2としてmruby実行
  10. 10. 対策● ハッシュ(khash.h)を使わないよ うにする – シンボル管理で名前↔数値の対応 付けに使われているデータ構造を ただの配列にする – 遅い、けど小さくなる
  11. 11. 対策● ハッシュ(khash.h)を使わないよ うにする – 内部でインスタンス変数、メソッ ド定義に使われているデータ構造 をセグメントリストに置き換える (PyMiteのパクリ) – 遅い、けど小さくなる
  12. 12. 対策● parserとcodegenを捨てる – VM+ライブラリのみ – あらかじめバイトコードコンパイ ルしたRubyスクリプトを実行 – evalとかダメゼッタイ
  13. 13. 対策● 初期化時のメモリ確保をケチる – 足りなくなったら後で確保するら しい – ついでにシンボルの上限も300 個にする(あふれたら終了)
  14. 14. 対策● Ruby標準クラスを捨てる – 試してみたけどいろいろ不具合が 起きやすいのでだいたい戻した – Hash、Range、Struct、Ti me、Math、Regexpがない (Struct、Time、Math、Re gexpはマクロでオフにする設定 がある)
  15. 15. 実装● コードはGitHubに上がってます https://github.com/yurie/mruby/tree/lessmemory – コミットログが日本語ですみませ ん…
  16. 16. 実行方法# Macなど$ make# FM3用 (Yagarto GNU ARM toolchain用)$ make -f Makefile.fm3
  17. 17. 続きは札幌で!※選考には落ちたので これからLT応募書きます…

×