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応募書きます…
Upcoming SlideShare
Loading in …5
×

Tokyurubykaigi05

775 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
775
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tokyurubykaigi05

  1. 1. mruby for embedded systems 2012/07/29 TokyuRuby会議05 高橋征義・やまねゆりえ
  2. 2. ※某弊社の宣伝とかRuby Conf渡航支援募集中とか 札幌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応募書きます…

×