1

Arduino Mega (ATMEGA2560) にブートローダーをアップロードする必要があるときはいつでも、boards.txt ファイルに記述されているヒューズ/ロック ビットを備えた AVRISP MKII を使用します。これを行うと、FTDI とのシリアル接続で arduino スケッチを書き込むことができます。

私の質問は: AVRISP を使用して arduino スケッチ (.hex ファイル) を書き込み、ブートローダーを保持することは可能ですか? これを実行しようとすると (ブートローダーのプログラムに使用するのと同じ avrdude コマンドを使用しますが、ブートローダーの .hex ファイルをスケッチの .hex ファイルに変更します)、FTDI を使用してプロセッサをプログラムすることができなくなります (その後、ブートローダを再度プログラムします)。

私は、(もちろん私が間違っている可能性もあります) この問題は、ブートローダーのプログラムに使用されるものと同じにはできないヒューズとロック ビットの設定が原因で発生すると思います。

これは私が使用するヒューズ設定です(Arduinoフォルダーの下のboards.txtファイルから)

mega2560.name=Arduino Mega 2560 or Mega ADK

mega2560.upload.protocol=wiring
mega2560.upload.maximum_size=258048
mega2560.upload.speed=115200

mega2560.bootloader.low_fuses=0xFF
mega2560.bootloader.high_fuses=0xD8
mega2560.bootloader.extended_fuses=0xFD
mega2560.bootloader.path=stk500v2
mega2560.bootloader.file=stk500boot_v2_mega2560.hex
mega2560.bootloader.unlock_bits=0x3F
mega2560.bootloader.lock_bits=0x0F

mega2560.build.mcu=atmega2560
mega2560.build.f_cpu=16000000L
mega2560.build.core=arduino
mega2560.build.variant=mega

手伝って頂けますか?

前もって感謝します。

4

1 に答える 1

1

AT*X*MEGA シリーズのような一部のコントローラは、個別にプログラム/消去できる個々のフラッシュ セクションをサポートしています。ただし、ATMEGA2560 ではこれは不可能です。

1 つの方法は、ビルド プロセスの一部として .hex ファイルを連結することです。これは、makefile にいくつかの変更を加えることで実現できます。

これに似たもの

all: $(TARGET).hex 
    srec_cat bootloader.hex -intel $(TARGET).hex -intel -o combined.hex -intel

「combined.hex」をフラッシュすると、メイン アプリケーションとブート ローダーの両方が含まれます。AVRFreaksに関連する議論があります。

ヒューズに関しては、ブート ローダー (アドレス) がエントリ ポイントとして構成されていることを確認する必要があります。

編集:このヒューズ ビット計算機を使用して、ヒューズの設定を確認できます。デバイスを選択し、現在の高ヒューズ値で「Boot Reset vector Enabled (default address=$0000); [BOOTRST=0]」が有効になっていることを確認します。現在使用している

mega2560.bootloader.high_fuses=0xD8

それでよさそうです。

于 2013-11-12T12:23:41.397 に答える