RXduino を PizzaFactory for Homebrew でビルドする



[RXduino のライセンスが緩和の方向](http://nahitafu.cocolog-nifty.com/nahitafu/2014/05/rxduino-a2fb.html)とのことで，[FreeRXduinoがリリースされています](http://nahitafu.cocolog-nifty.com/nahitafu/2014/05/rxduinofreerx-1.html)．

ローカルビルドは，Cygwin + rx-elf-gcc か KPIT社の rx-elf-gcc とのことで，要するに Windows が前提です．

しかし，手元の OSX でも試してみたい，ということで，試してみました．

## 前提

お手元の OSX には，既に Homebrew が適切にインストールされているものとします．

FreeRXduino のバージョンは rxduino-free-v110 です．
特電回路さんのページからzipアーカイブをダウンロードして展開してください．

## rx-elf ツールチェインのインストール

PizzaFactory for Homebrew からインストールします．

```sh
$ brew tap PizzaFactory/commandline
$ brew install pf-gnuchains4x-rx-elf
```

お手元の OSX が Mavericks なら，bottle (バイナリパッケージ)がダウンロードされます．
そうでなければソースコードがダウンロードされてビルドが走ります．

## FreeRXduino へのパッチ当て

```diff
diff --git a/makefile b/makefile
index de20a51..1f883da 100644
--- a/makefile
+++ b/makefile
@@ -27,14 +27,14 @@
 ###################################################################################################
 
 TARGET = userapp
-#CCPATH = /cygdrive/c/cygwin/usr/local/tkdn-20110720/rx-elf/bin/
-AS  = $(CCPATH)rx-elf-as 
-CC  = $(CCPATH)rx-elf-gcc -fsigned-char -Wall -g -I./include/tkdnhal -I./include/lib/ 
-CPP = $(CCPATH)rx-elf-gcc -fsigned-char -Wall -g -I./include/tkdnhal -I./include/rxduino -I./include/lib/ 
-LNK = $(CCPATH)rx-elf-ld
-CNV = $(CCPATH)rx-elf-objcopy --srec-forceS3 --srec-len 32 -O srec
-CNVBIN = $(CCPATH)rx-elf-objcopy -O binary
-DMP = $(CCPATH)rx-elf-objdump
+#CCPATH = /cygdrive/c/cygwin/usr/local/tkdn-20110720/rx-pizzafactory/bin/
+AS  = $(CCPATH)rx-pizzafactory-elf-as 
+CC  = $(CCPATH)rx-pizzafactory-elf-gcc -fsigned-char -Wall -g -I./include/tkdnhal -I./include/lib/ 
+CPP = $(CCPATH)rx-pizzafactory-elf-gcc -fsigned-char -Wall -g -I./include/tkdnhal -I./include/rxduino -I./include/lib/ 
+LNK = $(CCPATH)rx-pizzafactory-elf-ld
+CNV = $(CCPATH)rx-pizzafactory-elf-objcopy --srec-forceS3 --srec-len 32 -O srec
+CNVBIN = $(CCPATH)rx-pizzafactory-elf-objcopy -O binary
+DMP = $(CCPATH)rx-pizzafactory-elf-objdump
 OBJS = common/intvect.o common/lowlevel.o $(TARGET).o 
 #LFLAGS = -Llib/gcc -Llib -lfatfs -lliquidcrystal -lnokialcd -loled -lrxduino -ltkdnhal -lstdc++ -lsupc++ -lc -lsim -lgcc -lm -nostartfiles 
 RXDUINO_STANDARD_LIBS = -lethernet -ltkdnip -lspi -lservo -lliquidcrystal -lsdmmc -leeprom -lstepper -lwire
```

要するに，program prefix の変更です．
PizzaFactory の rx-elf ツールチェインでは， rx-elf- ではなくて， rx-pizzafactory-elf- なのです．

## make

makefile の修正が終わったら，おもむろに make します．

```sh
$ make
```
```
rx-pizzafactory-elf-gcc -fsigned-char -Wall -g -I./include/tkdnhal -I./include/rxduino -I./include/lib/  -Wall -O2 -c userapp.cpp -o userapp.o
rx-pizzafactory-elf-ld -Map userapp.map lib/start.o common/intvect.o common/lowlevel.o userapp.o  -T common/rx62n_rom_standalone.ld -Llib/gcc -Llib -lethernet -ltkdnip -lspi -lservo -lliquidcrystal -lsdmmc -leeprom -lstepper -lwire -lrxduino -lstdc++ -lsupc++ -lc -lsim -lgcc -lm -ltkdnhal -nostartfiles -o userapp.elf 
rx-pizzafactory-elf-ld: warning: section `.bss' type changed to PROGBITS
rx-pizzafactory-elf-objcopy --srec-forceS3 --srec-len 32 -O srec userapp.elf  userapp.mot
```

ld が warning を出していますが，これはおそらく RXduino が提供している ld script の問題です．
簡単に直せるはずですが，まだオープンソースと呼べる使用許諾条件ではないので，手は出さずにおきます．

## 余談: できていないこと

これでビルドは通ったものの，OSX から RX マイコンに書き込むためのツールがありません．
RXprog までソースコード公開になるのを(ならないかもしれないと承知で)じっと待つか，[必要な技術情報に関して作者がまとめている](http://nahitafu.cocolog-nifty.com/nahitafu/2012/01/rx62nusb-5dd0.html)ので似たものを作るかということになるでしょう．