元ネタはこれ。
http://sat0yu.hatenablog.jp/entry/20130320/1363767850
Wineのインストールに時間がかかるので先にやっといたほうがいいかも。
開発ツールのインストール
ここからMac用のクロスコンパイラをダウンロードして、適当なところに展開する。
http://sourceforge.net/projects/yagarto/files/YAGARTO%20for%20Mac%20OS%20X/20111119/
今回はちょっと古めの
yagarto-bu-2.21_gcc-4.6.2-c-c++_nl-1.19.0_gdb-7.3.1_eabi_intelmac_20111119.dmg
をダウンロードした。どうも 4.6.2 でないとロボットに転送してから動かないらしい。
参考:
http://tobese.hatenablog.jp/entry/2014/04/19/183633
展開してできたディレクトリをyagarto
にリネームする。
ls yagarto
Binutils.webloc COPYING3.LIB arm-none-eabi/ source.txt
COPYING GCC.webloc bin/ tools/
COPYING.LIB GDB.webloc include/ version.txt
COPYING.LIBGLOSS GNU.webloc lib/
COPYING.NEWLIB Newlib.webloc libexec/
COPYING3 YAGARTO.webloc share/
ls
してこんなかんじになってればOK
nxtOSEKのダウンロード
nxtOSEK
ここから。今回はnxtOSEK_v218.zip
をダウンロードした。
http://sourceforge.net/projects/lejos-osek/files/nxtOSEK/
sg.exe
oilファイルのコンバータ。osek_os-1.1.lzh
の中に入ってる。
http://www.toppers.jp/osek-download.html
Wineのインストール
sg.exeを動かすために。
brew update
brew install wine --without-x11
こんなかんじで怒られる場合
Error: wine dependency libtool not installed with:
--universal
それぞれ一旦削除して、wineと一緒に再インストールすればOK
brew uninstall libtool
参考:
http://blog.geta6.net/post/64863576065/osx-wine
http://qiita.com/sleon326/items/671aa0b2a7877edaff66
NXT Driverのインストール
ここの、NXT Fantom Driver
からダウンロードする。
展開して出てくる MAC legodriver.pkg
を実行してインストールする。
NeXTToolのインストール
NeXTToolはプログラムをロボットへ転送するためのツール。
http://bricxcc.sourceforge.net/utilities.html
ここの Download for Mac OSX (universal binary)
からダウンロードする。
ビルド
必要なものがひと通り揃ったのでビルドしてみる。
ビルドツールのパスを変更
そのままだとCygwinでビルドするようになっているので、Makefileを修正して、さっき展開したビルドツールに置き換える。
以下の3箇所を環境に合わせて編集する。
- TARGET_PREFIX := arm-elf
+ TARGET_PREFIX := arm-none-eabi
...
- GNUARM_ROOT = /cygdrive/C/cygwin/GNUARM
+ GNUARM_ROOT = /Users/tac/Desktop/mac_env/yagarto
...
- NEXTTOOL_ROOT = /cygdrive/C/cygwin/nexttool
+ NEXTTOOL_ROOT = /Users/tac/Desktop/mac_env #nexttoolのあるパス
...
- NEXTTOOL = NeXTTool.exe
+ NEXTTOOL = nexttool
展開先に合わせて修正してね。
途中、cygpath
が処理できなくて死ぬので、makefileを修正する。
- $(WINECONSOLE) $(TOPPERS_OSEK_ROOT_SG)/sg/sg $(shell cygpath -m -w ${TOPPERS_OSEK_OIL_SOURCE}) \
- -os=ECC2 -I$(shell cygpath -m -w ${TOPPERS_OSEK_ROOT_SG})/sg/impl_oil -template=$(shell cygpath -m -w ${TOPPERS_OSEK_ROOT_SG})/sg/lego_nxt.sgt
+ $(WINECONSOLE) $(TOPPERS_OSEK_ROOT_SG)/sg/sg.exe $(TOPPERS_OSEK_OIL_SOURCE) -os=ECC2 -I${TOPPERS_OSEK_ROOT_SG}/sg/impl_oil -template=${TOPPERS_OSEK_ROOT_SG}/sg/lego_nxt.sgt
Wineへのパスを変更
# in order to proper set up environment variables and avoid warnings.
- WINECONSOLE := /Applications/Wine.app/Contents/MacOS/startwine wineconsole
+ WINECONSOLE := /usr/local/bin/wineconsole
# Native tools for Mac OS X doesn't need any launcher
nxtOSEKのリビルド
EABIのバージョンが合わないので、nxtOESKをリビルドする。
cd nxtOSEK/ecrobot/c++
make all
make release
これを、{c,c++,bios,nxtway_gs_balancer}
の全てに対して行う。
参考:
http://tobese.hatenablog.jp/entry/2014/04/19/183633
サンプルをビルドしてみる
cd nxtOSEK/samples_c++/cpp/LCD
make clean
make all
最終的に、こんなかんじでrxeファイルが出力されてばOK。
...
Generating binary image file: lcd_rom.bin
Generating binary image file: lcd_ram.bin
Generating binary image file: lcd.rxe
サンプルを転送してみる
$ ./rxeflash.sh
Executing NeXTTool to upload lcd.rxe...
lcd.rxe=18784
NeXTTool is terminated.
で、実行する。
動いてる!!