先日とある方に教えてあげたら、そんな簡単にできるんですか!ってびっくりされたのでこちらにも書いておきます。
この記事はC/C++用のEV3RT環境ができていて、使い方を知っている人向けのものです。EV3RT用環境構築がまだの方はWindows, Linux, Macを参考に作ってください。
必要なもの
- Ruby(mrubyじゃないいわゆるCRuby。mrubyのビルドに必要)
-
mruby
リリース版は(2018/07/12現在)1.4.1推奨(1.4.0は NG) - mruby-ev3rt (EV3RT用の拡張ライブラリ)
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/makefile
の RAKE=
を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サンプルコードの使い方などを参考にしてください