nxtOSECの開発環境構築 for Mac OS X
先週末、ETロボコン技術研修会に向けてLinuxでの開発環境構築を試みた。
nxtOSEKの開発環境を構築
nxtOSEKの開発環境を構築 その2
結果は惨敗。
ARM系のCPU向けコンパイルまでは無事成功したものの、NXTへの転送がうまくいかなかった。
(おそらくNXT側を別PCでファームウェア変更していたので、それが原因かも。後日追記予定)
2013.3.21追記: Linuxでも転送確認できました。ファームウェアを標準のものから変更していたのが原因でした。
さて、ここからが本題。
先のLInuxにおける開発環境構築は、実はMacでのそれの布石でした。
Macは研究室で支給されたものなので、壊したくないw
Linuxで問題となっていた、NXTへの転送問題も、MacならREGOが直々にドライバを用意してくれているので安心。
そこで今回は、「nxtOSECの開発環境構築 for Mac OS X」を記しておきます。
0.アウトライン
- GNU ARM Toolchainのインストール
ARM系CPU向けのコンパイラなど。プログラムの開発環境。 - nxtOSEKの開発環境を整備
「nxtOSEK is an open source platform for LEGO MINDSTORMS NXT」との記述がある。自分の認識ではNXTのOS...? - NXT Driverのインストール
NXTのドライバ。プログラム転送の基盤。 - NeXTTool(転送ツール)のインストール
NXTへプログラムを転送するためのツール。NXT Driverを先にインストールしておくこと。
1.GNU ARM Toolchainのインストール
build_am_toolchain.shを用いてgcc, binutils, nrelibをインストールします
build_am_toolchain.sh: http://lejos-osek.sourceforge.net/installation_linux.htm
事前にXCodeとXcode Developer Toolsをインストールしておく。全てGUIなので簡単に済むはず。
以降の操作は、MacPortsを使うと簡単にインストールできます。
参考: http://oda.gr/archives/tag/nxtosek
まずはXCodeに付属しているIntel系CPUのgccのバージョンを確認し、これにしたがってbuild_am_toolchain.shを一部変更
変更箇所はbuild_am_toolchain.shにコメントアウトで丁寧に書いてありあました。
build_am_toolchain.shを実行すると必要なファイル群がダウンロード、コンパイルされる。
同階層にsrcディレクトリが生成されるので、念のため、中にgcc, binutils, nrelibが揃っているか確認。
なければダウンロードの時点で、何かエラーが起きているはずなので、手動でダウンロードして、src内に配置、スクリプトを再実行。
自分の場合は、まずbinutilsがダウンロード失敗していたので手動で配置。
しかしコンパイルでも、以下のエラーが出てきて失敗
configure: error: Building GCC requires GMP 4.1+ and MPFR 2.3.2+
要求されたパッケージをインストールする
MPFRがGMPに依存しているため、一度にbrew install GMP MPFRとすると、エラーが出るかも。というかエラーがでた。分けてやるとスムーズ。
インストールできたらbuild_am_toolchain.shを再実行。なんとか完了。
2.nxtOSEKの開発環境を整備
nxtOSEKをダウンロード、解凍、配置
nxtOSEK: http://sourceforge.net/projects/lejos-osek/files/nxtOSEK/
配布サーバーのポリシーにより、sg.exeが含まれていないのでosek_os-1.1.lzhからコピー
sg.exeは、nxtOSEKにおけるタスク管理のoilファイルパーサーとして動作している...らしい。必須。
osek_os-1.1.lzh: http://www.toppers.jp/osek-download.html
nxtOSEK/ecrobot/tool_gcc.makを編集して、gnuarmのパスを設定
具体的にはbuild_am_toolchain.shの親ディレクトリのパスを指定すればOK
変更箇所はファイルにコメントで書いてあります。
sg.exeはwindows用のバイナリなのでWineBotterを導入する必要がある。
WineBotter: http://winebottler.kronenberg.org/
単にインストールするだけではなく、さらに今回はWineBotterを使うためにパスを通す必要がある。
以下のコマンドは一時的に環境変数を変更しているだけなので、.zshrcなりシェル設定ファイルにパスを通す処理を追記しておくと便利。
export PATH=$PATH:/Applications/Wine.app/Contents/Resources/bin
また、本来Wineを使う部分をWineBottlerで代用しているので、再びtool_gcc.makを編集してWineの設定部分を修正。
ただし、WineBottlerはバージョンアップに伴ってstartwineが削除され、Wine consoleに変更されたので注意。
参考: http://www.aribeiro.info/content/nxtosek-mac-osx-106-snow-leopard?page=32
参考URLは英語ですが簡単なので多分分かるはず。要望があれば設定変更箇所もアップします。
make allが通れば成功
3.NXT Driverのインストール
LEGOが用意してくれています。GUIなのでササッと済ませて次へ。
FantomDriver: http://mindstorms.lego.com/en-us/support/files/Driver.aspx
4.NeXTTool(転送ツール)のインストール
NeXTTool: http://bricxcc.sourceforge.net/utilities.html
NeXT Toolsではないので注意
NeXTToolはコマンドラインでプログラム転送を可能とするもの。
.rxeファイルをfxeflashで一発転送可能なので便利。
NeXT Toolsでも転送できるが、GUI操作なので無駄が多い。
もう一度tool_gcc.makを編集しNeXTTool系の設定をする
#NEXTTOOL_ROOT = /cygdrive/C/cygwin/nexttool
NEXTTOOL_ROOT = path/to/nexttool
#NEXTTOOL = NeXTTool.exe
NEXTTOOL = nexttool
5.確認
以上で環境構築はすべて終了。
確認のため、nxtOSEK/sample_c/helloworldでmake allして、./rxeflash.shを実行してみる。
もちろんNXTを接続することを忘れずに。