C/C++用のEV3RT環境構築にmruby環境を追加する方法


先日とある方に教えてあげたら、そんな簡単にできるんですか!ってびっくりされたのでこちらにも書いておきます。

この記事はC/C++用のEV3RT環境ができていて、使い方を知っている人向けのものです。EV3RT用環境構築がまだの方はWindows, Linux, Macを参考に作ってください。

必要なもの

mrubyのビルド

mrubyの取得

Githubのmrubyリポジトリからmrubyを取得します。

$ git clone https://github.com/mruby/mruby.git

EV3RT用のmrbgemsの取得

mrubyと同じ階層に置く前提です。
ex. /Users/xxx/mruby なら /Users/xxx/mruby-ev3rt
参考)将来EV3RTをバージョンアップすることを考えると、EV3RTの下にmrubyを入れない方が良いです。

$ git clone https://github.com/yamanekko/mruby-ev3rt.git

mrubyのMakefileをEV3RT用に変更

/mruby/makefileRAKE=をEV3RT用のbuild config 用に変更します。

RAKE=MRUBY_CONFIG=../mruby-ev3rt/build_config_ev3rt.rb ruby ./minirake

※ 私はEV3RT以外でもmrubyを使っているのでこのようにしていますが、mruby/build_config.rb にbuild_config_ev3rt.rbの中身を記載するのでも構いません。
※ minirake を使えばRakeがインストールされてなくてもOKです

build_config_ev3rt.rb の設定内容を環境に合わせる

  • EV3RT_PATH = ev3rt/hrp2のパス
  • GNU_TOOL_PREFX = arm-none-eabi-gcc のパス

GCC ARMにパスが通っている場合は
GNU_TOOL_PREFX = arm-none-eabi-
でよい。パスが通っているかは、以下のコマンドで確認できます。
arm-none-eabi-gcc -v

mrubyをmakeする

cd ~/git/mruby 
make

こんな表示がされて、mruby/build/EV3RT/lib/libmruby.aが生成されていたら、mrubyのビルドは成功です。

================================================
      Config Name: host
 Output Directory: build/host
         Binaries: mrbc
    Included Gems:
             mruby-compiler - mruby compiler library
             mruby-bin-mrbc - mruby compiler executable
================================================

================================================
      Config Name: EV3RT
 Output Directory: build/EV3RT
    Included Gems:
             mruby-compiler - mruby compiler library
             mruby-ev3rt - TOPPERS HRP2 for EV3 class
================================================

mruby用プロジェクトを作成する

C/C++と同様にsdk/workspaceの下にプロジェクトを作成します。
一言で言ってしまうと、C/C++でタスクから実行されていた関数にC/C++のコードを書く代わりに、mrubyを呼び出す記述を書きます。
詳しくはサンプルコードEV3RT上のmrubyで超音波センサーを使用するサンプルを試す, EV3RT用mrubyサンプルコードの使い方などを参考にしてください