avrdudeの "プログラマー"とブートローダとの関係

-c avrdude のオプションで指定されているように、「プログラマーID」の概念を理解しようとしています。

avrdude asks me to choose a "programmer-id" among many it knows of. Let's say (just as an example) I have a Arduino 2560 to which I connect via USB, and I want to program it using the bootloader. Then, in this scenario, is one programmer-id and just one supposed to work?

一般的には、

1)特定のボード(MCU、 avrdude -p

2)特定のプログラミング方法/接続(JTAG、ISP、開発ボード、USB /シリアルなど)

3)(ブートローダーを使用している場合)フラッシュ内の特定のブートローダーコード。

これらはプログラマの選択とどのように関連していますか?私はいくつか(ほとんどの?)プログラマIDは、いくつかのプログラマ接続/メソッド(おそらくいくつかのハードウェア・ファミリを持つでしょうか?)に固有であり、ブートローダとは何の関係もないと思います。 USB経由で接続されたブートローダ付き標準Arduinoには、プログラマは何を使用しますか?もっと何が言えるでしょうか?

さらに、Arduino IDEでは、「アップロード」と「プログラマーを使用してアップロード」を選択できます(私にとっては最初の作品、2番目の作品はありません)。なぜこの区別?プログラマーはいつも使われていませんか? 「アップロード」を選択すると、IDEは何をしますか(それはavrdudeを呼びますか?)

1

1 答え

ブートローダを使用している場合は、プログラマを使用していません 。プログラマを使用すると、ArduinoのICSPピンに接続されます。しかし、ブートローダは、リセット直後にArduino からシリアルポートまでのデータの明確なシーケンスを期待しています。ブートローダは、(受信された場合)それを認識し、フラッシュを再プログラムします。

アップロードのために冗長モードを有効にすると、プログラマーのタイプが表示されます:

-carduino

つまり、Arduinoはブートローダのプログラミング方法を使用しています。

See my post here: What happens when code is uploaded using the bootloader?


さらに、Arduino IDEでは、「アップロード」と「プログラマーを使用してアップロード」を選択できます(私には最初の作品、2番目の作品はありません)。

はい。「プログラマを使用してアップロードする」では、USBポートに接続するAVRISPなどのプログラマが必要です。使用するプログラマのタイプとして選択します。この場合、シリアルポートがプログラミングに使用されないため、ArduinoをUSBに差し込む必要はありません。

一部のプログラマはArduinoにVcc(すなわち+ 5V)を供給し、一部のプログラマはArduinoに供給しないことに注意してください。 AVRISPはそうではありません。


さらに、 "Optiboot"はArduinoに含まれている標準とは異なるブートローダです。

私が知る限り、最近のArduino Unos(そしておそらく他の人たち)がOptibootを同梱しています。その主な利点は、それが小さいことです(わずか512バイト)。

一般的に、特定のブートローダを知る必要がありますか?

より小さいボードはSTK500プロトコル(以下のリンクを参照)を使用し、大きいもの(例えばメガ)ではSTK500バージョン2を使用していると思います。だから、それはプロトコルを知る必要があります。

ボードタイプをMega2560に切り替えると、 "-c"オプションが次のように変更されました:

-cwiring

私はそれから推測しています。 "arduino"は "STK500"のコードで、 "wiring"は "STK500 V2"のコードです。

プロトコル

3
追加された
あなたは正しいです、それはプロトコルを "期待しています"。私はその返事を修正した。あなたの他の質問は修正された返信で扱われます。
追加された 著者 Nick Gammon,
ありがとう! "しかし、ブートローダは、明確に送信されます..."は "ブートローダ...が必要です..."?さらに、 "-carduino"ではなく、IDE(1.6.9)で "-cwiring"
追加された 著者 samdoj,
さらに、 "Optiboot"はArduinoに含まれている標準とは異なるブートローダーであるようです。互換性がありますか、または "-c"オプションを変更する必要がありますか?一般的には、特定のブートローダを知る必要がありますか?
追加された 著者 samdoj,