Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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
×

0

Share

Download to read offline

Tokyurubykaigi05

Download to read offline

  • Be the first to like this

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応募書きます…

Views

Total views

884

On Slideshare

0

From embeds

0

Number of embeds

3

Actions

Downloads

2

Shares

0

Comments

0

Likes

0

×