Arduinoプログラミングモード、ブートローダ、Arduino As ISP
-
21-12-2019 - |
質問
現在、Arduino Uno(Rev3)ボードを使用してプロジェクトに取り組んでいます。最終的にはArduinoとは無関係に走り、プログラミング全体とブートローダーのものがどのように機能するかを考えてきました。
これまでのところで知っているものです。
-
ボードには2つのチップがあります。atmega328(メインチップ)とATmega16U2(USB-to-serial bidgerとして使用)。
-
ATmega16U2のファームウェアは、DFUモードを有効にして、uを使用して変更できます。 DFUプログラマー。 ArduinoはHDI / MIDIデバイスとして認識できますが、プログラム可能ではありません。
-
ATmega328をプログラムするとき、チップはリセットされており、ブートローダを再起動していると、シリアル接続とAtmega16U2ブリッジを介して新しいプログラムをロードして書き込みます。チップのISPインタフェースは、新しいプログラムをアップロードするためには使用されません。誰が最初の場所でリセットを開始していますか?
-
Arduinoは他の外部チップをプログラムするためのISPプログラマーとして使用できます。いくつかのファームウェアがAATMEGA328にロードされると、プログラムされるチップのISPピンは、Arduinoボード上の1つに接続されています。その後、ARDUINO-IDEは、再プログラムではなく、プログラマとしてATMEGA328を使用するように構成されています。
私が書いたもののほとんどが正しいことを願っています。私の質問は次のとおりです。
私が新しい/空白のAVRを私のボードに置いたら、ブートローダはどのようにそのチップに乗るのですか? 「BurnoLoader」のコマンドはどのように機能しますか?
最初にブートローダをアップロードせずにalatega328に16進ファイルをアップロードすることは可能ですか?これはAtmega16U2のSpeciafファームウェアを使用して行うことができますか?
ありがとう!
ヨハネス
解決
ISPプログラマ(ARDUINOISPまたはUSBASPなどのディスクリートプログラマ)を使用して、既存のブートローダを必要とせずにAVRのフラッシュ、EEPROM、ヒューズビット、およびロックビットをプログラムすることができます。デバイス上のSPIピンを使用して、不揮発性の保存内容を操作するためにデバイスにコマンドを送信します。
ATmega16U2には、 '328へのUART接続しかありません。'328のブートローダのないUARTを使ってプログラムする方法はありません。