これまで、がじぇるねGRボードのスケッチ(プログラム)作成はIDE for GRを主に使っていましたが、コマンドラインで使いたいと思い調べているうち、このサイトのようにコマンドラインでコンパイルする方法がわかったので紹介します。
参考にしたサイトではWindowsでの方法について説明されていますが、Macでも同じようにできるはずと思い、Arduino official CLIのサイトも参考にしながら色々試すうち、やり方がわかったのでメモとして残します。
コマンドライン実行と言っても、コマンドで立ち上がるIDE for GRのGUI上でコンパイルと書き込みが実行され、終わったらGUIが閉じるという内容のため、GUIレスという訳ではありません。
その分、複雑なオプションを書いたMakefileを作る必要は無く、各ボード用の設定についてはIDEに任せられる点で安心感はあります。
動作環境
以下の環境で動作確認しました。
項目 | 内容 |
---|---|
OS | macOS Mojave 10.14.5 |
がじぇるねボード | GR-ADZUKI, GR-LYCHEE |
その他 | USB TypeC - USB3.0変換ハブを経由してPCとがじぇるねボードを接続 |
実行コマンド
以下のような実行スクリプトをgr.shなどとして実行可能形式(chmod +x gr.shをしておく)で準備します。
#!/bin/bash /Applications/IDE4GR.app/Contents/MacOS/IDE4GR $1 --upload \ --board "arduino:rl78g13:adzuki" \ --port /dev/cu.usbserial-DQ0005W3
–upload はコンパイルをしてから書き込みまで行う際のオプションです。
コンパイルまでで止めておきたい場合は、–verify とします。
上記の –board に続く文字列はGR-ADZUKIの場合の例で、IDE for GRアプリケーションインストールディレクトリ配下の /Applications/IDE4GR.app/Contents/Java/hardware 以下にある使用ボードを示す文字列を指定します。
例えばGR-ADZUKIの場合、 /Applications/IDE4GR.app/Contents/Java/hardware/arduino/rl78g13/boards.txt 内に adzuki.name=GR-ADZUKI などのようにGR-ADZUKIのボード情報があります。
この時、hardware に続く2つのディレクトリ名と board.txt ファイル内の adzuki.name のドットより前の部分(この例では、adzuki)をコロン”:”でつなげた文字列 “arduino:rl78g13:adzuki” を指定します。
他のボードの例として、GR-LYCHEEでは “arduino:rza1lu:lychee” となります。
–portはがじぇるねボードをつないで認識されたUSBデバイスを指定します。
以下のようなコマンドで探せると思います。
ls /dev/cu.usb*
もし、似たような名前のデバイスが他にもあって、どれかわからない場合、がじぇるねボードのUSBケーブルを一旦外して上記コマンドを実行。またつないで実行のようにして差分を確認すると良いでしょう。
他の見つけ方として、IDE for GRのGUIを立ち上げてメニューのTools ->Serial Portから探すこともできます。
上記のスクリプトgr.shを各スケッチのディレクトリが見える場所に保存し、そこから実行する場合は以下のようにします。
引数には〜.inoを指定し、これがgr.sh内の $1 の箇所に渡されます。
./gr.sh Blink/Blink.ino
IDE for GRでスケッチを作成する場合と同様にファイル名から.inoを取った名前のディレクトリにスケッチを置く必要があります。
また、上記スクリプトを実行する場所は、スケッチ(〜.ino)と同じ場所ではなく、上位のディレクトリである必要があります。
上記スクリプトを実行する際にIDE for GRのGUIが立ち上がっていると書き込みに失敗するようなので、GUIは終了した状態で実行してください。
FAILED Sketch writing was failed.
また、時々書き込みに失敗することがありましたが、USBケーブルを外して接続し、再度実行するとうまくいきました。
シリアルモニタ
シリアルモニタもTerminal上で行おうと以下のようにscreenコマンドを試していたのですが、うまく行かなかった(何も表示されない、部分的に表示されて止まる)ので、シリアルモニタはIDE for GRのGUIを使うことにしました。
screen /dev/cu.usbserial-DQ0005W3 9600
同じPCでArduinoUNOなどとつないだ場合は、screenコマンドが正常に利用できているので、デバイスドライバの問題かと思い、以下のようなことを試しましたがいずれもダメだったのでアンインストールして元に戻しました。
以下、試したことのメモです。
- FTDIのサイトからドライバをインストール
以下のページからFTDI VCP Driver(com.FTDI.driver.FTDIUSBSerialDriver)をインストールしました。
https://www.ftdichip.com/Drivers/VCP.htm - D2XXとD2xxHelperをインストール
以下のページからD2XXとD2xxHelperをインストールしました。D2XXはreadmeにインストール方法あり。
https://www.ftdichip.com/Drivers/D2XX.htm
後から思うと、IDE for GRでは正常にモニタできているので、PCの初期状態からインストールされていたcom.apple.driver.AppleUSBFTDIで正常に通信できており、ドライバの問題ではないように思いました。
もし今後、対策がわかったら追記します。
まとめ
がじぇるねGRボードのスケッチ(プログラム)のコンパイルとボードへの書き込みをコマンドラインで実行する方法を紹介しました。
GUIを立ち上げなくて良いため、スケッチの修正→コンパイル→書き込みのサイクルを素早く回すことができそうです。
参考文献
- RL78マイコン(RL78/G13)|IDE4GR 0.7.0をコマンドラインモードで起動してビルドしてみた (http://mon80.blog.fc2.com/blog-entry-787.html)
- Arduino official CLI(https://github.com/arduino/Arduino/blob/master/build/shared/manpage.adoc)