2016/12/20 コメントにてご指摘をいただきました。Windows用のgccも必要でありMSYS2やMingwのセットアップが必要です。shimo_cchiさんがRubicでGR-CITRUSのmrubyプログラミング事始め4[mrbgems編]で、より詳しく丁寧にビルド環境の準備を解説してくださっています。そちらを確認していただくことをおすすめします。
GR-CITRUSは、mrubyが気軽に使える小型ボードです。Chrome Appの「Rubic」を使うことでプログラムの作成から実行までスムーズに行うことができます。
GR-CITRUSのファームウェアの中にはmruby(libmruby.a)が組み込まれています。しかし、標準のファームウェアに組み込まれているmrubyには最低限のライブラリ(mrbgems)しか組み込まれていないため、ちょっと複雑なものを作ろうとしたときに困ることがあります。その場合、必要となるライブラリ(mrbgems)を組み込んだmruby(libmruby.a)のビルドと、それを組み込んだGR-CITRUSのファームウェアのビルドが必要となります。
この記事ではその手順を紹介します。
macOSの場合は、GR-CITRUSに組み込むmrubyをビルドする方法 for macOSをご確認ください。
なお、Ubuntu16.04系でも同様の手順とbuild_config.rbでビルドできることを確認しています。
#必要なもの
この記事では、Windows10を使用しています。GR-CITRUSのファームウェアをビルドしたことがない方は、あらかじめGR-CITRUSのFirmwareをビルドする方法 for Windowsに従い、ビルド環境のセットアップとファームウェアのビルドができることの確認を行っておいてください。
追加で、rubyとbisonが必要となります。それぞれセットアップしてください。
- Ruby 2.3.1(x64) for windows
- Bison for windows 2.4.1
RubyのインストールにはRubyInstallerを利用しました。セットアップ中、rubyの実行ファイルへのパスを設定するチェックボックスをONにしています。
bisonのインストールには、Bison for windowsを利用しました。インストールに際は、インストール先を半角スペースを含まないパスに変更する必要があります(デフォルトのProgram Filesではmrubyビルド時にエラーとなる)。
この記事では、C:\Tool\GnuWin32を使用しています。
#mrubyのソースコードの取得
コマンドプロンプトを起動して、githubのmrubyリポジトリからmasterブランチをクローンします。
git clone https://github.com/mruby/mruby
#GR-CITRUS用のbuild_config.rbの準備
mrubyのビルドを行うためには、build_config.rb
ファイルを適切に設定する必要があります。GR-CITRUS用のbuild_configファイルは、GR-CITRUSのFirmwareのmrubyフォルダに含まれてます。
このファイルを取得するか、その内容をすべてコピー&ペーストして、mruby
フォルダ内にあるbuild_config.rb
ファイルの内容を置き換えてください。
#build_config.rbの修正
上記で取得したbuild_config.rb
ファイルを自分の環境にあうように書き換えます。書き換えるのは、BIN_PATH
の行です。
BIN_PATH = "D:/ide4gr-E0.8.0/hardware/tools/gcc-rx/rx-elf/rx-elf/bin"
ここで指定するパスは、rx-elf-gccコマンドがあるパスです。GR-CITRUSのFirmwareをビルドする方法 for Windowsに従いビルド環境を構築した方は、IDE for GRをインストールしたパスとなります。
また、このファイル内でmrubyに組み込みたいライブラリ(mrbgems)を指定することができます。適宜、必要に応じて追加、削除などを行ってください。
#GNU_RX_elf.batの実行
GR-CITRUSのFirmwareをビルドする方法 for Windowsで修正したGNU_RX_elf.bat
をダブルクリックして実行します。
以降の作業は表示されたコマンドプロンプトで行います。
#mrubyのビルド
上記で修正したbuild_config.rb
があるフォルダに移動します。
cd mruby
以下のコマンドを実行し、bisonへのパスを通します。
C:\Tool\GnuWin32は、bisonをインストールしたパスに変更してください。
Set PATH=C:\Tool\GnuWin32\bin;%PATH%
mrubyのビルドを行います。
ruby ./minirake
ビルドが成功すると、以下のようなメッセージが出力されます。build\RX630\lib
フォルダに出力された、libmruby.a
ファイルが、GR-CITRUSのファームウェアに取り込むmruby(ライブラリ)です。
================================================
Config Name: RX630
Output Directory: build/RX630
Included Gems:
mruby-math - standard Math module
mruby-numeric-ext - Numeric class extension
================================================
#GR-CITRUSのファームウェアのビルド
GR-CITRUSのファームウェアのwrbb-v2lib-firm\firmware\wrbb_mruby
フォルダにあるlibmruby.a
ファイルを、mrubyのビルドで出力されたlibmruby.a
ファイルで上書きします。
copy build\RX630\lib\libmruby.a d:\work\wrbb-v2lib-firm\firmware\wrbb_mruby\libmruby.a
GR-CITRUSのファームウェアをビルドします。firmware
フォルダに移動して、make
コマンドを実行します。
cd d:\work\wrbb-v2lib-firm\firmware\
make
正常終了すると、makefileと同じフォルダにあるcitrus_sketch.binファイルが更新されているはずです。
ビルドしたファームウェアを書き込む場合は、GR-CITRUSのリセットボタンを押してUSBメモリとして認識させた後、citrus_sketch.binファイルをコピーしてください。