参考文献
[1]
中尾司(2013),『Arduino実験キットで楽ちんマイコン開発』, CQ出版
[2]
坂井弘亮,<http://kozos.jp/kozos/avr_04.html>, (AVR編第4回)AVRとArduinoについて,調べたことをまとめておこう (2013年9月8日アクセス)
[3]
<http://playground.arduino.cc/FreeBSD/CLI>, Arduino Playground - CLI, (2013年9月8日アクセス)
[4]
<http://wiki.livedoor.jp/avoild/d/Arduino%28Duemilanove%29%A4%F2%C9%E1%C4%CC%A4%CEAVR%A5%DE%A5%A4%A5%B3%A5%F3%A4%C8%A4%B7%A4%C6%BB%C8%A4%A6>
Arduino(Duemilanove)を普通のAVRマイコンとして使う, (2013年9月8日アクセス)
環境
OS:FreeBSD 9.1-STABLE #2
ports:arduino-1.0.5.1, arduino-mk-0.10
arduino:CQカチャduino (Arduino Duemilanove互換)
実験
まず、[1]の互換機(CQカチャduino)が、Arduino Duemilanove互換であることを確認。
CQカチャduinoのUSBコントローラはFT232であるのだけれど、[3]を読むと十分に昔からFT232はサポートされているようだったので、CQカチャduinoを購入した。
数日後、CQカチャduinoが届いたのでUSBケーブルでつないでみた。
FreeBSD 9.1では、標準のカーネルでFT232を認識できて、カーネルモジュールは不要であった。
[2]にあるように、/dev/cuaU0として認識された。
引き続き、devel/arduinoとdevel/arduino-mkをportからインストールした。
端末から、arduinoを起動すると、IDEが立ち上がった。
ちょこちょこと[1]のサンプルコードを打ち込んで、コンパイルするとコンパイルできた。
しかし、uploadができない。Tools->Serial Portでポートを指定してやらねばならないのだけど、どうも指定できない。
この辺でIDEは諦めた。CUIでの操作に抵抗はない。
気を取り直して、[3]を参考に、新しいディレクトリで、もう一度サンプルコード(led.c)を用意した。
なお、[1]のIDE用のコードと違って、[3]のコードはmain文がある。IDEは関数setup()、loop()を定義するだけで、IDE内で自動的にmain()を用意してくれることになっているのだろう。多分、次のような感じ。
int main(){
setup();
while(1){
loop();
}
}
で、ターミナルで次を実行する。
avr-gcc -DF_CPU=16000000UL -mmcu=atmega328p -o led.out led.c
avr-objcopy -O ihex -R .eeprom led.out led.hex
sudo avrdude -V -F -c stk500v1 -p m328p -b 57600 -P /dev/cuaU0 -U flash:w:led.hex
[1]との差分は、次の点。- blink.cの代わりにled.cにした。
- avr-gcc
-mmcu=atmega328pにした。(でもmanには選択肢として出ていないので本当に聞いているかは不明) - avrdude
-p m328pにした。
-b 57600 にした。
(avrdude: stk500_recv(): programmer is not respondingとエラーが出たから調べたら、[4]に書いてあった。)
これで、コンパイル、アップロードに成功した。
情報を残して行ってくれた、皆さんのおかげです。ありがとうございます。
次は、Arduinoとシリアル通信できるようにしたい。
2013年10月26日追記:
もともとは、FreeBSDでArduinoだったのだけれど、AVRとしてしか使っていないので、タイトルを変えました。 FreeBSDでもArduinoとして使えているので、それは別途どこかで述べます。