目次

Bootloaderを入れる

 AVRマイコンの中でATmegaシリーズは、フラッシュROMを
 ブロックごとに分け、内容消去、書込みができるという
 特徴があります。

 フラッシュROMの中に、Bootloaderを書き込んでおき
 電源オンすると、Bootloaderが10秒間だけ動作して
 外部からフラッシュROMに書込むデータを待ちます。

 10秒間で、新たな書込みデータがなければ、そのまま
 フラッシュROMに含まれているプログラムを実行します。

 Bootloaderは、PersonalComputerがハードディスクから
 OSや必要なパラメータを、電源オンからメインメモリに
 入れる動作を、マイコンレベルで操作しています。

 FPGAを使ったことがあれば、FPGAに接続したEEPROMや
 フラッシュROMから回路情報を入力して、回路を構成後
 動作開始するのに似ています。

 ATmega168に入れることができるBootloaderは
 以下でした。

 ATmegaBOOT_168_diecimila.hex
 ATmegaBOOT_168_ng.hex

 今回は、diecimilaを入れてあります。

 Bootloaderの書込みには、次のアプリケーションを
 使いました。



 ライターソフトのhidspxGは、CUIソフトのhidspxに
 GUIを被せて、USBのHIDクラスを利用しています。

 HIDクラスは、Human Interface Deviceを扱うため
 OSがUSBをサポートしていれば、特別なドライバを
 入れないで使えます。

 Bootloaderの書込みをするには、hidspxGを使い
 ますが、GUIは次のようになります。



 フラッシュROMに転送するHEXファイルは
 ATmegaBOOT_168_diecimila.hexとします。

 AVRマイコンには、Fuse Bitsが必要です。

 Fuse Bitsにより、内蔵発振8MHzを1/8にして
 使うか、外部発振を利用するかを指定可能。
 また、フラッシュROMを複数ブロックに分割し
 個別にブロックを消去、書込みできるかを
 設定できます。

 フラッシュROMを複数ブロックに分割して
 利用できるようにするため、extended byte
 を次のようにしなければなりません。

  0xF8

 外部発振を利用し、分周比を1/1にするには
 low byteのMSBを1にしなければなりません。

  0xF7

 BrownOutリセットやSPIをイネーブルにするかは
 high byteに設定します。

  0xDC

 extended byteの指定値を間違って、Bootloader
 は入っているが、Arduinoのプログラムをアップ
 ロードできずに、2時間ほど悩みました。

 Arduinoでは、IDEで作成したプログラムを
 sketch(スケッチ)と呼びます。

 ArduinoのWebサイトを参照すると、次のような
 記述がありました。



 この記述から、Fuse Bitsは次のようにするのが
 デフォルトのようです。

low      0xff
high     0xdd
extended 0x00

 Bootloaderを書き込むときは、シリアルインタフェースを
 接続しないように、ピンクのヘッダソケットを外します。



 SPI接続ライターは、ICSP用の6ピンコネクタと
 接続します。



 他にもFTDI社のチップを利用したBigBangモードで
 ATmega168にライターなしで、Bootloaderをライト
 する方法もあるようです。ここでは、触れません。

 Arduino基板で、いろいろなソフトウエアを開発する
 ことが目的なので、Bootloaderの書込み方法に拘る
 必要はないとの判断です。


目次

inserted by FC2 system