2015年09月10日

Arduinoとブートローダー

Arduinoのマイコンと、ブートローダー、スケッチの書き込み方法について混同しているケースがあるようなので、解説したいと思います。

マイコンの一般論ですが、通常はUARTやシリアル通信経由でマイコンのソフト書き換えはできないと思ってください。専用の書き込み端子でソフトは書かなければいけません。

ただし、AVRのATMEGA,ATinyシリーズでは、SPI経由での中身のソフト書き換えをサポートしています。この書き換えを行うために、専用の書き込み装置(ISPやICSPなどと呼んでます)や、有志が作った汎用品を使いまわして書き換える装置があったりします。Arduino as ISPは、この有志の書き込み装置のソフト版という位置づけです。Arduinoを書き込み装置に化けさせるソフトです。

さて、じゃあ、UART経由で書き込みを行えるのはどうしてか?というと、ブートローダーというソフトがマイコンに入っているからです。

ISPandUART.png

ブートローダーは、マイコンが起動したら一番最初に起動するソフトで、自分のソフトのお尻に後からソフトを追加できるような仕組みを用意しています。まあ、OSのようなものと思っても良いと思います。このブートローダーをマイコンに書くためには、UARTではできないので、上記の書き込み装置(ISP)を使って書き込みます。ブートローダーが書いてあれば、後はブートローダーがUART経由で書き込む機能を提供してくれるので、UART経由で面倒な専用書き込み装置を使わずにサクッとスケッチを書き換えられるようになります。

スイッチサイエンスやaitendoなどで、「ブートローダー入りATMEGA328P」が売っていると思いますが、なんで売っているかというと、書き込み装置を持っていない人用で、ArduinoIDEでUART書き込みできるようにするためなのです。

スマイルデコーダではブートローダーを書く作業はありますが、ブートローダー自体は実は後からスケッチを書き込む際に消されます。ブートローダーを書く作業で、ヒューズビットというATMEGA328Pの特殊設定をArduino向けに書き換えることも同時にしてくれるので、この特殊設定のためだけにブートローダーを書くという作業を入れているだけなのです。

デコーダ開発ボードについては、スマイルライター経由で書き込めるようになってますが、開発効率を考えると通常はUART経由でスケッチを書くのが楽で早いのでブートローダーを書き込んだATMEGA328Pを入れております。

ということで、スマイルライターでデコーダ開発ボードのマイコンを書き換えると当然ながら、書き込み装置経由の書き込みなので、ブートローダーは削除されて、ソフトだけが書き込まれます。なので、UART経由での書き込みは一切出来ません。

ブートローダーを書き直せば、UART経由で書き込めるようになるので、もし消してしまっても、ブートローダーを書きなおしてみてください。簡単に復活できます。
posted by yaasan at 06:05 | Comment(0) | 鉄道模型
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。