GR-PEACHでmrubyを動かす


本記事では,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版がおすすめです.

GR-PEACH 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 コマンドで上手くいかないことがあります.
shell-session
$ 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 が実行されます.

VM1.cdl
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の機能を使える
といった特長があります.
ぜひ試してみてください!