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の感覚)