本記事では,mruby on GR-PEACH+TECSについて紹介します.
はじめに
mruby on GR-PEACH+TECSとは,mruby (軽量Ruby)を使って,ルネサス社製マイコンGR-PEACHを動かすためのプラットフォームです.
TECS (TOPPERS Embedded Component System) と呼ばれるコンポーネントシステムによって,コンポーネントベースで開発されており,mrubyプログラムからRTOS(TOPPERS/ASP3)の機能を呼び出すことができるように設計されています.
ETロボコンで利用されているプラットフォーム「mruby on ev3rt+tecs」と同じ仕組み・構造で設計されているので,利用したことがある方はぜひ試してみてください.
準備
まず,mruby_on_GR-PEACH-TECS_package-alpha1.0.0.tar.gzをダウンロードしましょう.
Windows環境での紹介になります.
以下のものをインストールしてください.
-
Cygwin
- Ruby
- GNU Make
- bison
-
GNUARM-NONE v16.01 Windows Toolchain (ELF)
- クロスコンパイラ
- PATHを通しておいてください.(arm-none-eabi-gcc等が実行できる状態)
-
Tera Term
- シリアルで文字を出力する場合に使用します.
使用するハードウェア
-
GR-PEACH
- Normal版とFull版があります.
- EthernetのLANコネクタやArduino UNO互換ピンが実装されているFull版がおすすめです.
ビルド
mrubyのビルド
まず,mrubyのビルドを行います.
$ cd ~/mruby_on_GR-PEACH-TECS/mruby-1.3.0
$ make
バイナリの作成
mrubyのビルドが完了したら,プラットフォーム部分のビルドを行います.
$ cd ~/mruby_on_GR-PEACH-TECS/asp3/workspace/build ( ../asp3/workspace/build でも可)
$ make
このような画面が表示されて,asp.binというバイナリファイルが生成されたらビルド成功です.
バイナリのコピー・GR-PEACHの起動
出来上がったバイナリをGR-PEACHにコピーします.
PCとGR-PEACHをUSBケーブルで接続すると, MBED というドライブが立ち上がります.
エクスプローラーを開いてドラッグ&ドロップしてコピーしてください.
また,Cygwin上のコマンドでコピーする場合は,以下のコマンドを叩いてください.
[注意]Cygwinの cp コマンドで上手くいかないことがあります.
$ cp asp.bin /cygdrive/d/ (自環境でのMBEDドライブ名を指定してください)
コピーが完了したら,GR-PEACHを起動します.
GR-PEACHの電源ボタンを押すと,プログラムが実行されます.
(緑色に点灯しているLEDの上の白いボタン)
デフォルトのアプリケーションは,led_sample.rb が指定されています.
アプリケーションの開発方法
アプリケーションファイルの指定
asp3/workspace/build の VM1.cdl にてアプリケーションを指定しています.
アプリケーションを変更する場合は,$(MRUBY_APP_DIR)/led_sample.rb の行を,任意のアプリケーション名に修正し, make を実行してください.
例えば,$(MRUBY_APP_DIR)/rtos_sample.rb
とすると,rtos_sample.rb が実行されます.
import(<bridge.cdl>);
cell nMruby::tMruby Mruby {
mrubyFile =
"$(MRUBY_LIB_DIR)/RTOS.rb "
"$(MRUBY_LIB_DIR)/LED.rb "
"$(MRUBY_APP_DIR)/rtos_sample.rb"; (修正後)
cInit = VM_TECSInitializer.eInitialize;
cSerialPort = SerialPort1.eSerialPort;
};
サンプルアプリケーションは,asp3/workspace/mruby_app に入っています.
(alpha-1.0.0 では,led_sample.rb と rtos_sample.rb の2つです)
自分でアプリケーションを作成する場合は,mruby_app内に mysample.rb というようにファイルを作成し,
上記のように VM1.cdl を編集することでビルドできます.
シリアル出力
- p
- puts
- print
というメソッドを使うと,シリアルで文字出力を行うことができます.
(デバッグ等に便利です!)
ここでは Tera Term を利用しています.
PCとGR-PEACHを接続した状態で,Tera Term を起動し,下のシリアルを選択して mbed (GR-PEACH)を指定します.
次に,【設定】→【シリアルポート】と開き,以下のように設定を行ってください.
Tera Term と接続確立した状態で,GR-PEACHを起動すると文字が出力されます.
(下の図はrtos_sample.rbを実行したものです)
※改行がおかしい場合は,【設定】→【端末】を開き,
改行コードの受信を「AUTO」と設定してみてください.
最後に
GR-PEACHでmrubyを動かす方法は,この他にも,momo-mrubyがあります.
(軽量RubyフォーラムのHPからもダウンロードできるようです)
momo-mrubyは,導入が簡単にできて,対話モードでも動作できるようです.
( 参考: https://qiita.com/Hir0_IC/items/8c0d37792d983c9f060c )
mruby on GR-PEACH+TECS は,現在コマンドラインでの開発しかサポートされておらず,(WebコンパイラやIDEが流行っている中、、)コンパイラのインストールやPATHの設定など,慣れていない人にとっては,導入が少々面倒ですが,
- マルチVMに対応している
- TECSの機能により,mruby単体より高速に動作する
- 周期タスクやセマフォといったRTOSの機能を使える
といった特長があります.
ぜひ試してみてください!