12/08/2018, 13:21

mruby 概要(研修フィードバック)

mrubyとは - Rubyを小型化し、組み込み用途で利用する。 - 例)組み込みデバイス/他のアプリケーション内部で動く Rubyとの違い - ソースコードをコンパイルしてバイトコードを得る。 - バイトコードをVMが逐次実行する。(VMが存在する環境であれば使用できる。) バイトコードの特徴 - バイナリ形式 - アーキテクチャに依存しない(OSやバージョン) - 実行時の高速化・省メモリ 組込みソフトの難しさ - 製品ごとに、使われているマイコンのCPU、メモリ、OSが異なる。 - マイコンごとに、専用の開発環境(PC)が必要 - ...

mrubyとは

- Rubyを小型化し、組み込み用途で利用する。
- 例)組み込みデバイス/他のアプリケーション内部で動く

Rubyとの違い

- ソースコードをコンパイルしてバイトコードを得る。
- バイトコードをVMが逐次実行する。(VMが存在する環境であれば使用できる。)

バイトコードの特徴

- バイナリ形式
- アーキテクチャに依存しない(OSやバージョン)
- 実行時の高速化・省メモリ

組込みソフトの難しさ

- 製品ごとに、使われているマイコンのCPU、メモリ、OSが異なる。
- マイコンごとに、専用の開発環境(PC)が必要
- 周辺回路(I/O)も異なる。
- 開発だけでなく、保守作業もマイコン用の環境を残しておく必要があり困難

組込みソフトの難しさ(例)

- 製品に使用していたCPUが製造終了
- 新しいCPUを使った製品を開発する
- ソフトを作り直す(CPUが異なることにより)
      

組込みソフトの難しさ解決方法

1. ハードウェアに近い部分を抽象化する(windows32ビットと64ビットを動かせる)
 ・HAL(Hardware Abstract Layer)
2. VMで抽象化する。
 ・Java
3. 抽象度の高い言語を使う。
 ・スクリプト言語(RubyやJavascriptなど)
2と3をmrubyで行う。(VMがあれば良いため。)

mrubyのコード

Lチカコード(プログラミング言語で言う"Hello World!" )

以下のコードをコンパイルしてバイトコードに変換したものをVMが逐次実行する。

while true do
  led 1
  delay 50
  led 0
  delay 950
end

VMで動作検証

- PCの上で動くVMを作っておくと組込みソフトのテストができる。
- テスト用入出力を用意しておきプログラム実行する。
- テストが完了したらマイコンに流し込む。

mrubyの最近の話題

enziボード:mruby専用のマイコンボード、ARM Coretex M4
- Arudinoみたいな感覚で使えるmrubyボード
- Arudinoとの違い
  ・mrubyである。
  ・enzi以外のmrubyボードも用意する(バイトコード変換)
  ・必要なセンサに対応したVMにカスタマイズ可能(Railsの感覚)
0