Saya memperoleh Arduino PCB dengan ATmega2560 , sudah diprogram dengan Arduino bootloader dan beberapa program. Saya memang punya sketsa , tetapi sebelum mengutak-atiknya, saya ingin membuat cadangan biner saat ini yang ada di controller. Seperti kebanyakan Arduino, ini terhubung ke PC menggunakan konverter USB ke serial yang terhubung ke TX0 dan RX0 dan tidak ada antarmuka ISP .
Rupanya ada kode untuk membaca di bootloader Arduino , tapi saya tidak tahu alat mana yang digunakan untuk mengaksesnya karena tidak ada item menu di Arduino IDE.
Perangkat lunak apa yang saya perlukan untuk membaca program dari Arduino?
Jawaban:
Bootloader Arduino adalah varian dari protokol STK500 asli (1.x) . Karakter 't' (ASCII 0x74) adalah perintah "Baca Halaman". Jadi mungkin adalah mungkin untuk menarik keluar program melalui port serial melalui bootloader menggunakan AVRDUDE ... Tapi yang terbaik menurut saya akan butuh waktu yang bagus untuk melakukannya.
sumber
Saya telah membuang memori dari Duemillenova dengan ATMega328P dengan perintah berikut:
sumber
-v
diperlukan?./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:r:"/tmp/dump.bin":r -P /dev/ttyUSB0
; tulis./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:w:"/tmp/dump.bin":r -P /dev/ttyUSB0
:; verifikasi:./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:v:"/tmp/dump.bin":r -P /dev/ttyUSB0
Apakah AVR Cadangan dengan utas avrdude menjawab pertanyaan Anda? Pada dasarnya Anda dapat membaca semua memori dari AVR selama sekring proteksi tidak disetel.
Ini adalah pengaturan yang saya gunakan untuk ATtiny dan ATmega.
Di papan ditunjukkan:
Lihat lembar data controller yang pin yang tepat untuk digunakan. Ada beberapa situs web di Internet yang menulis tentang pemrograman AVR menggunakan Arduino, mis .: http://hlt.media.mit.edu/?p=1229
sumber
Sejauh yang saya bisa lihat dari kode sumber bootloader Arduino , tidak ada cara untuk 'membuang' semua memori darinya. Bootloader mendukung mode 'monitor' yang memungkinkan Anda untuk membuang satu byte memori pada satu waktu. Namun, sesuai komentar kode sumber "/ * fungsi monitor hanya akan dikompilasi ketika menggunakan ATmega128, karena kendala ukuran bootblock * /"
Karena itu, saya kira Anda kurang beruntung jika tidak ingin menggunakan ISP, ganti bootloader, atau unggah sketsa untuk melakukannya.
sumber
else if(ch=='t') {
.Saya pikir ada opsi menu untuk itu tetapi saya tidak menemukannya sekarang. Jika Anda memiliki programmer ISP, Anda dapat menggunakan AVR Studio untuk membaca gambar memori dari chip dan menyimpannya dalam file HEX, yang memungkinkan Anda untuk mengembalikannya melalui cara yang sama.
Edit
Menanggapi komentar Anda - itu mudah! Anda perlu mengasimilasi dua diagram senilai informasi untuk menariknya. Yang pertama adalah Pemetaan Pin Arduino / ATMega2560.
Yang kedua adalah ISP Header / AVR Pin Mapping:
Berbekal dua gambar ini, Anda harus bisa melihat bagaimana cara menghubungkannya.
Dengan itu, Anda harus dapat menggunakan AVR Studio untuk membaca file Hex dari chip - beri tahu saya jika Anda memerlukan panduan lebih lanjut.
sumber