Wie lese ich das aktuelle Programm von einem Arduino?


14

Ich habe eine Arduino-Platine mit einem ATmega2560 erworben , der bereits mit dem Arduino-Bootloader und einem Programm programmiert wurde. Ich habe die Skizze , aber bevor ich damit experimentiere, möchte ich die aktuelle Binärdatei sichern, die sich im Controller befindet. Wie die meisten Arduinos ist es über einen an TX0 und RX0 angeschlossenen USB-Seriell-Wandler mit dem PC verbunden und es gibt keine ISP- Schnittstelle.

Anscheinend gibt es Code zum Lesen im Arduino-Bootloader , aber ich habe keine Ahnung, welches Tool ich verwenden soll, um darauf zuzugreifen, da in der Arduino-IDE kein Menüelement vorhanden ist.

Welche Software brauche ich, um das Programm vom Arduino zu lesen?


Gefundener Code zum Lesen im Bootloader, bearbeitete Frage.
AndreKR

Dieses Problem beantwortet Ihre Frage, aber Sie können Ihre Arduino-Skeches als .HEX-Datei exportieren.
Uran Lees

Antworten:



11

Ich habe einen Speicher von Duemillenova mit ATMega328P mit dem folgenden Befehl ausgegeben:

avrdude -C avrdude.conf -v -v -v -v -p atmega328p -c stk500 -U flash:r:"c:/arduino.hex":r -P\\.\COM2 -b57600

1
achtung, dass der anwendbare programmierer wahrscheinlich arduino und nicht stk500 ist.
Paulo Neves

Warum sind vier -vs notwendig?
Peter Mortensen

In der AVRDUDE-Dokumentation, "2.1 Optionsbeschreibungen " : "... -v Ausführliche Ausgabe aktivieren . Weitere -v Optionen erhöhen die Ausführlichkeit. "
Peter Mortensen,

Dies sollte die akzeptierte Antwort sein.
Caterpillaraoz

JA! Der Pro Micro Bootloader hat auf meinem Pro Micro Clone nicht funktioniert. Ich habe den Blitz von einem funktionsfähigen Pro-Mikroklon abgelegt und auf dem gespeichert, der einen Bootloader benötigte. Mit einem Arduino als 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; schreibe ./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:; überprüfe:./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

Beantwortet der Backup AVR mit AVRude Thread Ihre Frage? Grundsätzlich können Sie den gesamten Speicher eines AVR auslesen, solange die Schutzsicherung nicht gesetzt ist.

Dies ist das Setup, das ich für ATtiny's und ATmega´s verwende.

Auf dem Brett gezeigt:

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

Entnehmen Sie dem Datenblatt des Controllers den genauen Pin, der verwendet werden soll. Es gibt im Internet eine ganze Reihe von Websites, die sich mit der Programmierung von AVRs mit einem Arduino befassen, z. B .: http://hlt.media.mit.edu/?p=1229


Ich brauche dafür ein zweites Arduino, oder? Ich habe keine
AndreKR

1
Dies ist eine Zwei-Arduino-Methode, ja.
Jippie

Und obwohl es auf dem Bild etwas schwer zu erkennen ist, sind die auf dem Ziel-Arduino verwendeten Pins auch nicht TX0 und RX0, oder?
AndreKR

Nein, TX und RX werden nicht für ICP verwendet. Die Antwort wurde ein wenig aktualisiert.
Jippie

Nun, ich denke, Sie haben den ganzen Punkt meiner Frage verpasst, wahrscheinlich weil ich ihm einen schlechten Titel gegeben habe. Ich habe die ganze Frage umformuliert.
AndreKR

3

Soweit ich den Quellcode des Arduino-Bootloaders sehe , gibt es keine Möglichkeit, den gesamten Speicher von ihm zu sichern. Der Bootloader unterstützt einen 'Monitor'-Modus, mit dem Sie jeweils ein Speicherbyte sichern können. Gemäß den Kommentaren im Quellcode "/ * Monitorfunktionen werden jedoch aufgrund von Einschränkungen der Bootblockgröße nur bei Verwendung von ATmega128 kompiliert * /".

Ich denke, Sie haben Pech, wenn Sie ISP nicht verwenden, den Bootloader ändern oder eine Skizze hochladen möchten, um dies zu tun.


Ich bezog mich auf den Abschnitt, der in Zeile 701 mit beginnt else if(ch=='t') {.
AndreKR

Guter Punkt - hatte das nicht gesehen.
RJR

2

Ich dachte, dass es eine Menüoption dafür gibt, aber ich finde sie gerade nicht. Wenn Sie einen ISP-Programmierer haben, können Sie mit AVR Studio das Speicherabbild vom Chip lesen und in einer HEX-Datei speichern, damit Sie es auf die gleiche Weise wiederherstellen können.

Bearbeiten

Als Antwort auf Ihren Kommentar - das ist ganz einfach! Sie müssen zwei Diagramme mit wertvollen Informationen aufnehmen, um dies zu erreichen. Das erste ist das Arduino / ATMega2560 Pin Mapping.

Bildbeschreibung hier eingeben

Das zweite ist das ISP Header / AVR Pin Mapping:

Bildbeschreibung hier eingeben

Bewaffnet mit diesen beiden Bildern, sollten Sie in der Lage sein, zu sehen, wie man es verkabelt.

  • Führen Sie einen Draht von DIG50 zu Dragon ISP-Header Pin 1
  • Führen Sie einen Draht von VCC zu Dragon ISP-Header Pin 2
  • Führen Sie einen Draht von DIG52 zu Dragon ISP-Header Pin 3
  • Verlegen Sie einen Draht von DIG51 zu Dragon ISP Header Pin 4
  • Führen Sie einen Draht von RESET zu Dragon ISP-Header Pin 5
  • Führen Sie einen Draht von GND zu Dragon ISP-Header Pin 6

Wenn diese vorhanden sind, sollten Sie AVR Studio zum Lesen der Hex-Datei vom Chip verwenden können - lassen Sie mich wissen, wenn Sie weitere Anleitungen benötigen.


Ich habe einen Drachen, aber ich weiß nicht, welche Pins des Drachen mit der seriellen Schnittstelle des Arduino verbunden werden sollen.
AndreKR

@ AndreKR siehe meine bearbeitete Antwort für weitere Informationen
vicatcu

Wie in meiner Frage angegeben, kann ich das Programm natürlich mit ISP lesen. Was ich wissen möchte, ist, wie es mit der seriellen Schnittstelle (TX0 und RX0) gemacht wird - genauso wie die Programme auf den Controller in der Arduino-Welt hochgeladen werden.
AndreKR

@AndreKR Ich bin verwirrt ... haben Sie einen Drachen, warum sollten Sie das Programm nicht auf die übliche Weise lesen wollen - ich falsch verstanden Ihre Kommentare über nicht zu wissen , welche Pins an die „serielle Schnittstelle“ zu verbinden
vicatcu

Die Platine, die ich habe, hat keinen ISP-Header. Es verfügt jedoch über eine serielle Schnittstelle und einen Arduino-Bootloader. Auf diese Weise werden die Programme in die Arduino-Welt hochgeladen und können anscheinend auf die gleiche Weise heruntergeladen werden.
AndreKR
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.