2017年05月15日

ブートローダとスケッチ書き込み

Arduinoでは書き込み方法が2種類あります。

■書き込み方法の種類

・ICSP(2x3の6ピンヘッダ、またはスマイルコネクタType-A)で書く方法

AVR標準の書き込み方法です。Atmel Studioや、Arduino IDEの書き込み装置経由の書き込みで書くことが出来ます。完全に初期化したり、ブートローダを書き込んだり、高速に起動させたいソフトを書き込むのに使います。基本的に1つのソフトしか書けません。ブートローダを書いた後、スケッチを書くとブートローダは削除されます

Arduino IDEでは以下のように、「書き込み装置を使って書き込む」で書き込んだ場合に該当します。

smilwriter_ide_1b.png

・UART経由で書く方法

Arduino独特の書き込み方法です。AVRにブートローダだけが書き込まれている必要があります。Arduino IDEなどで何らかのスケッチをICSP経由で書きこんでしまうと、UART経由では書き込めません。
ブートローダとは、UART経由でソフトを書き込めるようにするためのソフトのことです。

Arduino IDEでは、以下のボタンはUART経由で書き込みとなります。ICSP経由での書き込みではありません。
普段はこちらを意識せずに使っていると思いますが、Arduino UNOなどに入っているATMEGA328Pにはブートローダのみが書き込まれているので、UART機能が動きます。

smilwriter_ide_1.png

■スマイルデコーダベースの機器

スマイルファンクションやMP3デコーダ、スマイルデコーダなどが該当します。これらは、UART経由での書き込みをサポートしません。スマイルライターを使って書き込みを行ってください。

じゃあ、なぜ、消されてしまうブートローダを書くように手順がなされているかというと、ちゃんと理由があります。ブートローダの書き込みを要求するのは、(1) 書き込みテストを兼ねている (2)ヒューズ設定を初期設定からArduinoが動く形に直すため の2点が理由としてあります。実はブートローダ自体は書き込む必要はないですが、ブートローダを書き込むことで2つの目的の作業を一気に行えるので、手順に入れてます。

特に、製造直後では、何もATMEGA328Pの中に書かれていません。そのままスケッチだけを書き込んでも正常に動きません。内部の特殊設定が、Arduino用に調整されていないためです。ブートローダを書く作業では、ご丁寧にArduino IDEがこの調整も全部やってくれます。



■サーボポイントデコーダ、トータス用ポイントデコーダ、見るだけ君

コネクタ形状がAVR準拠の3x2ピンになっていますが、スマイルライターのケーブル版で書き込みます。UART経由での書き込みをサポートしません。



■DSone

例外中の例外です。ブートローダだけが書き込まれているとき、UART経由での書き込みをサポートしています。ライターで、ブートローダではなく、スケッチを書くとブートローダの機能は自動削除されますので、UART経由では書き込みできません。通信などは問題なくできます。

■その他

DCC/MMシールドは、Arduinoで開発されていないので、Atmel Studio経由での書き込みになります。
DSmainはデュアルマイコンで、NanoはUART書き込み専用、MCoreはライターシールド(Aitendo)でICSP書き込みとなります。

いろいろ混在しますが、機器ごとの特徴に合わせていますので、ご了承ください。
posted by yaasan at 07:54 | Comment(0) | 工作
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。