Auslesen aus Arduino

Hallo,
ich habe vor einiger Zeit meinen 3D-Drucker mit einem Arduino Mega ausgerüstet nachdem die Original Platine defekt war. Leider habe ich anschließend nicht mehr mit der Arduino IDE gearbeitet und zwischenzeitlich meinen Rechner gewechselt (soll heissen die Originaldatei ist nicht mehr vorhanden). Nun muss ich kleinere Optimierungen an der Treibersoftware durchführen, was aber daher zu einer kompletten Neuinstallation führt.
Aus dem Grund würde ich gerne den vorhandenen Code vorher aus dem Arduino auslesen und sichern. Ich möchte an dem Code nichts verändern sondern nur zur Sicherheit speichern, sodass ich ihn im schlimmsten Fall unverändert wieder einspielen kann.
Ich habe da bisher ausser avrdude nichts gefunden, aber das scheint mir recht kompliziert zu sein (ich bin kein großer Commandlinecoder ;-)).
Gibt es da keine einfache Möglichkeit?
Danke für einen Tip

Gruß
RoHa

Von einer "einfachen" Möglichkeit - klick - klick - klick - habe ich in diesem Forum noch nicht gelesen. Eventuell solltest Du Dich doch mit avrdude anfreunden und Deine Frage in "Wie geht das Auslesen und das anschließende Einspielen mit avrdude?" ändern :wink:

Nur so als Idee: Hast Du keine Sicherung Deines alten Rechners? Die Quelldatei in C++ wäre sicherlich hilfreich, denn die bekommst Du durch das Lesen der Datei in Prozessorsprache nicht erstellt.

Nein, leider ist von dem alten Rechner nix mehr vorhanden.
Gibt es denn irgendwo eine "einfache" Anleitung in avrdude?

Du bekommst maximal nur den übersetzten Maschinencode.
Daraus eine Code-Datei zu machen ist nicht unmöglich, aber eher mit einem unverhältnismäßigem Aufwand verbunden.

Ich mußte mich bisher nie mit avrdude beschäftigen und ich bin ein Fummler, also vermutlich kein guter Ratgeber.

Ich habe in Win10 die Eingabeaufforderung geöffnet, bin ins Verzeichnis c:\Program Files (x86)\Arduino-1.8.19\hardware\tools\avr\bin gewechselt und habe avrdude gestartet. Erwartungsgemäß bekomme ich die Hilfe angezeigt. Dort steht auch ein Link zur Doku http://savannah.nongnu.org/projects/avrdude/. Da ich die nicht kenne, kann ich nicht beurteilen, ob sie gut ist.

Dann würde ich die IDE starten, die Ausgabe beim Kompilieren und Hochladen auf "ausführlich" stellen, um vom Speichern zu lernen und auf das Lesen zu übertragen.

Mit dem Ergebnis würde ich dann hier im Forum fragen, wie es besser geht.

Dann hätte ich Initiative gezeigt und eventuell jemanden motiviert, mir auf die Sprünge zu helfen.

Ist mein Vorgehen klug? Da ich aus einer Zeit ohne Internet stamme, versuche ich mich wie Münchhausen selbst aus dem Sumpf zu ziehen. Heute fragt man Alexa "regnet es gerade", ich halte die Hand aus der Tür.

Ich vermute, das möchte er als Sicherung.

Maschinencode wäre ja OK wenn ich den auslesen und im Notfall auch wieder einspielen könnte. Ich bin mir halt nur unsicher, das ich am Ende den Drucker unbrauchbar mache weil mir dann am Ende irgendwelche Parameter fehlen und nix mehr funktioniert. Dann lieber mit dem leben was im Moment läuft.
Nur ich komme mit avrdude einfach nicht klar.

Die überarbeitete Firmware würde ich ja mit Anrduino IDE bearbeiten und einspielen. Ich weiss halt nicht mehr genau welche Temps und Stepper genau verbaut sind. Kann man ja alles ausprobieren. Es geht nur darum auch eine Sicherung des Istbestandes zu haben.

Wenn die Festplatte lebt ist doch kein Problem die auslesen, auser die ist Verschlüsselt, dan wird es komplizierter

Das geht.
Das auslesen und einspielen nur mit .dude ist kein Hexenwerk.

Das sagst Du so ;-). Ich hab noch keine Anleitung gefunden wie das geht...oder gibt es die irgendwo???

Und nein, es gibt keine "alte Festplatte" mehr wo ich irgendetwas auslesen könnte...

Vorsicht: wenn du "Hochladen" statt "Nur Kompilieren" wählst und mit dem zu sichernden Arduino spielst, hast du hinterher nichts mehr, was sich zu sichern lohnt.

:stuck_out_tongue:

1 Like

Daher würde ich auch den aktuell verbauten Mega nicht zum Testen verwenden sondern wirklich als Backup beiseite legen. Anders ausgedrückt: erstmal nur das Auslesen mit dem Board, dann schauen ob das Ergebnis auf einem zweiten Board auch läuft. Nur dann weißt Du, ob das alles so geklappt hat. Und wenn nicht, dann ist wenigstens Board 1 noch lauffähig.

1 Like

Ja wo schalte ich denn auf "ausführlich"? Da ist nur der Kompilieren und der Hochladen Button?!?

Und natürlich wäre es schön zunächst einen zweiten Arduino zum Testen zu nutzen. Aber den hab ich nun mal nicht und ich wollte mir jetzt auch keinen dafür kaufen.

In der IDE Strg + ,

Habe mal probiert, wie in #5 beschrieben:

f:\Arduino\tmp>C:\Users\User\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude -CC:\Users\User\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf -patmega2560 -cwiring -PCOM4 -b115200 -Uflash:r:"f:\Arduino\tmp/flash.bin":r

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0x1e9801 (probably m2560)
avrdude: reading flash memory:

Reading | ################################################## | 100% 34.02s

avrdude: writing output file "f:\Arduino\tmp/flash.bin"

avrdude: safemode: Fuses OK (E:00, H:00, L:00)

avrdude done.  Thank you.


f:\Arduino\tmp>

Ist doch mal ein Anfang :slightly_smiling_face:

Für Änderungen am ursprünglichen Sketch musst du eh bei Null anfangen. Da ist das Weglegen des ersten Arduino als Backup evtl. besser als nur eine .HEX Datei irgendwo zu vergraben sichern.

Sprichst Du jetzt klingonisch mit mir ?!? ;-))))

Wenn ich in der IDE Strg + tippe wird nur die Anzeige größer...

Und deine Darstellung des Backup ist ja schon genau das was ich suche, nur ... wie kann ich das ausführen?

Was sonst? Eventuell auch "Computer! Rufe die Voreinstellungen der IDE auf!"

Oder versuche mal IDE Datei/Voreinstellungen

Hängt vom verwendeten Betriebssystem ab, bei Win10 in der Suche "cmd" suchen, dann öffnet sich die "Eingabeaufforderung", früher Dos-Fenster.

Das lädt die bin-Datei wieder auf meinen Mega2560:

f:\Arduino\tmp>C:\Users\User\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude -CC:\Users\User\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf -patmega2560 -cwiring -PCOM4 -b115200 -Uflash:w:"f:\Arduino\tmp/flash.bin":r

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.05s

avrdude: Device signature = 0x1e9801 (probably m2560)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "f:\Arduino\tmp/flash.bin"
avrdude: writing flash (262106 bytes):

Writing | ################################################## | 100% 42.72s

avrdude: 262106 bytes of flash written
avrdude: verifying flash memory against f:\Arduino\tmp/flash.bin:
avrdude: load data flash data from input file f:\Arduino\tmp/flash.bin:
avrdude: input file f:\Arduino\tmp/flash.bin contains 262106 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 34.08s

avrdude: verifying ...
avrdude: 262106 bytes of flash verified

avrdude: safemode: Fuses OK (E:00, H:00, L:00)

avrdude done.  Thank you.


f:\Arduino\tmp>

Ich übernehme KEINE Verantwortung! Teste es besser mit einem zweiten Mega2560!

Es ist Strg und Komma (Bei der 1.8.19)

Gruß Tommy

Also Strg und Minus öffnet bei mir nur die Einstellungen , und da ist kein "ausführlich". Stehe ich jetzt auf dem Schlauch??

unter C:\Users\Ich ... gibt es kein AppData und somit läuft der Befehl ins leere...
Musste man AppData nicht erst freigeben?!?