目次
前
次
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の書込み方法に拘る
必要はないとの判断です。
目次
前
次