2013年9月8日日曜日

FreeBSDでAVR (旧タイトル:FreeBSDでArduino)

Arduinoの互換機を手に入れたのだけど、家のマシンがFreeBSDなので開発環境を整えるのにちょっと調べ物が必要だったので、その記録を残しておくことにする。

参考文献
[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として使えているので、それは別途どこかで述べます。

0 件のコメント:

コメントを投稿