Bagaimana cara membaca program saat ini dari Arduino?

14

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?

AndreKR
sumber
Ditemukan kode untuk membaca di bootloader, pertanyaan yang diedit.
AndreKR
dosent awnser ini pertanyaan Anda, tetapi Anda dapat mengekspor skard Arduino Anda sebagai file .HEX.
uranium Lees

Jawaban:

1

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.

vicatcu
sumber
11

Saya telah membuang memori dari Duemillenova dengan ATMega328P dengan perintah berikut:

avrdude -C avrdude.conf -v -v -v -v -p atmega328p -c stk500 -U flash:r:"c:/arduino.hex":r -P\\.\COM2 -b57600
pengguna17555
sumber
1
perhatian bahwa programmer yang berlaku mungkin arduino dan bukan stk500.
Paulo Neves
Mengapa empat -vdiperlukan?
Peter Mortensen
Dari dokumentasi AVRDUDE, "2.1 Deskripsi Opsi" : "... -v Aktifkan output verbose. Lebih banyak opsi -v meningkatkan tingkat verbositas. "
Peter Mortensen
Ini harus menjadi jawaban yang diterima.
Caterpillaraoz
IYA! Bootloader mikro pro tidak bekerja pada klon mikro pro saya. Saya membuang flash dari klon pro mikro yang berfungsi dan menyimpannya ke yang membutuhkan bootloader. Menggunakan Arduino sebagai ISP (linux) - Dump: ./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
b_laoshi
7

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:

  • 11 = MOSI
  • 12 = MISO
  • 13 = SCLK

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

jippie
sumber
Saya perlu Arduino kedua untuk itu, kan? Saya tidak punya.
AndreKR
1
Ini adalah metode dua Arduino, ya.
jippie
Dan, meskipun agak sulit untuk dilihat dalam gambar, pin yang digunakan pada target Arduino juga bukan TX0 dan RX0, bukan?
AndreKR
Tidak, TX dan RX tidak digunakan untuk ICP. Diperbarui jawabannya sedikit.
jippie
Yah, saya pikir Anda melewatkan inti dari pertanyaan saya, mungkin karena saya memberikannya judul yang buruk. Saya mengulangi seluruh pertanyaan.
AndreKR
3

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.

RJR
sumber
Saya merujuk ke bagian yang dimulai pada baris 701 dengan else if(ch=='t') {.
AndreKR
Poin bagus - belum melihat itu.
RJR
2

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.

masukkan deskripsi gambar di sini

Yang kedua adalah ISP Header / AVR Pin Mapping:

masukkan deskripsi gambar di sini

Berbekal dua gambar ini, Anda harus bisa melihat bagaimana cara menghubungkannya.

  • Jalankan kabel dari DIG50 ke Dragon ISP pin 1 pin
  • Jalankan kabel dari VCC ke Dragon ISP pin 2 pin
  • Jalankan kabel dari DIG52 ke Dragon ISP pin pin 3
  • Jalankan kabel dari DIG51 ke Dragon header pin 4
  • Jalankan kabel dari RESET ke Dragon ISP pin header 5
  • Jalankan kabel dari GND ke Pin header ISP 6 Dragon

Dengan itu, Anda harus dapat menggunakan AVR Studio untuk membaca file Hex dari chip - beri tahu saya jika Anda memerlukan panduan lebih lanjut.

vicatcu
sumber
Saya punya Naga, tapi saya tidak tahu pin mana pada Naga yang terhubung ke antarmuka serial Arduino.
AndreKR
@AndreKR lihat jawaban saya yang sudah diedit untuk info lebih lanjut
vicatcu
Seperti yang dinyatakan dalam pertanyaan saya, saya tahu cara membaca program menggunakan ISP, tentu saja. Yang ingin saya ketahui adalah bagaimana melakukannya dengan menggunakan antarmuka serial (TX0 dan RX0) - cara yang sama dengan program yang diunggah ke pengontrol di dunia Arduino.
AndreKR
@AndreKR Saya bingung ... Anda punya naga, mengapa Anda tidak ingin membaca program dengan cara biasa - Saya salah mengerti komentar Anda tentang tidak tahu pin mana yang harus dihubungkan ke "antarmuka serial"
vicatcu
PCB yang saya miliki tidak memiliki header ISP. Namun, ia memiliki antarmuka serial dan bootloader Arduino. Dengan begitu program-program tersebut diunggah di dunia Arduino, dan tampaknya mereka dapat diunduh dengan cara yang sama.
AndreKR