ブートローダの書き込み

作成したボードをArduinoとして動作させるにはブートローダを書き込む必要があり,そのためには書き込み器が必要です.今回は手持ちのSTK500をISPモードにして書き込みました.書き込み作業はArduino IDEのTools/Burn Bootloader というメニューでできます.といってもデフォルトではSTK500の項目はありません.そこで SOMEWHERE/arduino-0011/hardware/programmers.txt というファイルに以下のように書き加えます.するとメニューに"w/STK500"が追加されるので,あとはそれを選べばOKです.

stk500.name=STK500
stk500.communication=serial
stk500.protocol=stk500v2

これで2個目以降も簡単に書き込めます.もっともこの方法は後からわかったことで,最初は以下のようにシェルから書き込みを実行していました.

$ cd SOMEWHERE/arduino-0011/hardware/bootloaders/atmega168
$ make TARGET=diecimila ISPPORT=/dev/tty.usbserial isp

以上の書き込みによって外部クロックを利用するようヒューズが設定されるため,ISPで書き込みをする場合,ターゲットボードはATmega168に外部からクロックを供給するようになっている必要があります.この場合のクロック周波数は16MHzでなくてもなんとかなります.STK500のボードにターゲットのチップを載せて書き込む場合,ボード内蔵のクロック(3.68MHz)でも書き込めました(本当はISP周波数の調整が必要ですし,ヒューズの設定とも合いませんが).AVRISP mkIIなどではターゲットボードに外部クロック供給源がないとうまくいきません.ISP端子付きのArduinoがすでに動いているのならそれを使うのが簡単です.

完成してしまえば書き込み器のいらないArduinoを作るのに書き込み器を用意するのは業腹だと思ったのか,Arduino自身にソフトウェアで書き込み機能を持たせようとする試みもあります.これなら書き込み器がなくても1台から増やていくことができます.