狠狠撸

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

    – コミットログが日本語ですみませ
      ん…
実行方法
# Macなど
$ make

# FM3用 (Yagarto GNU ARM toolchain用)
$ make -f Makefile.fm3
続きは札幌で!
※選考には落ちたので
 これからLT応募書きます…

More Related Content

mruby for embedded systems