OPENDROP V2.0 FIRMWARE SICHERUNG & WIEDERHERSTELLUNG MIT AVRDUDE

Kurzer Überblick

OpenDrop-v2.0-Firmware_avrdude_guide (dieser Artikel als PDF, empfohlen!)

opendrop2.0_firmware (für OpenDrop V2.0 als ZIP)

Dieses Dokument und dieser Blog-Beitrag sind für Menschen gedacht, die:

  • ein grundlegendes Verständnis für die Verwendung von avrdude mit einem Sparkfun Pro Micro (oder kompatiblen) Board erlangen wollen
  • (ATmega32U4 5V, 16 MHz)
  • Firmware-Dateien für das OpenDrop v2.0 (vier Drucktasten) - die Firmware ist NICHT kompatibel mit neueren OpenDrop-Versionen (v2.1 mit Joystick) - bitte verwenden Sie den GitHub-Download, um die Firmware selbst zu kompilieren und hochzuladen.
  • keine Angst haben, sich die Hände mit der Kommandozeile unter Linux schmutzig zu machen (und die Konsequenzen tragen - wir sind nicht dafür verantwortlich, dass Sie Geräte kaputt machen, wenn Sie dieser Anleitung folgen! Seien Sie vorsichtig und überprüfen Sie die Befehle - der Unterschied zwischen Lesen (r) und Schreiben (w) ist buchstäblich nur ein Buchstabe)

Ich musste einen defekten Arduino in einem unserer OpenDrop V2.0-Geräte (mit vier Druckknöpfen) reparieren. Im offiziellen GitHub-Repository ( -> https://github.com/GaudiLabs/OpenDrop ) wird der Code für das OpenDrop v2.1 (mit einem Joystick) zum Download angeboten. Daher hielt ich es für die einfachste Lösung, die Firmware von einem anderen OpenDrop v2.0-Gerät zu sichern und sie auf den neuen Arduino zu kopieren.

Ich habe avrdude auf einem Raspberry Pi verwendet, um die Firmware zu sichern und sie auf den neuen Arduino zu schreiben. Die Sicherung erfordert mehrere Schritte und das Versetzen des Arduinos in den richtigen Zustand (auch zum Lesen erforderlich!).

Fallstricke, denen ich begegnet bin

  • Überprüfen Sie, ob Ihr USB-Kabel eine Datenleitung enthält - das erste Kabel, das ich ausprobiert habe, versorgt nur den Arduino mit Strom, wird aber nicht in den USB-Geräten angezeigt.
  • Beim Kopieren und Einfügen von Befehlszeilencodes aus den meisten Blogs werden einige Zeichen möglicherweise falsch wiedergegeben - verwenden Sie das PDF-Dokument, das ich in diesem Beitrag zur Verfügung stelle, um sicherzustellen, dass der Code korrekt eingegeben wird

Einrichtung & Grundverständnis

Der OpenDrop v2.0 wird von einem Arduino-Gerät gesteuert, das mit dem Sparkfun Pro Micro-Board kompatibel ist. (Zum Beispiel Deekrobot Pro Micro)

  • ATmega32U4 (5V, 16 MHz)
  • integrierter microUSB-Anschluss für Stromversorgung und Programmierung

avrdude wird zum Lesen und Schreiben von Firmware-Dateien und Einstellungen vom/zum Arduino verwendet.

Ich verwende einen Raspberry Pi, da wir ein zugelassener Raspberry Pi-Händler sind und ich mich mit der Linux-Befehlszeile wohler fühle als mit Windows.

Installation von avrdude:

sudo apt-get install avrdude

Den mit avrdude zu verwendenden Port finden

Ziehen Sie den Netzadapter vom OpenDrop ab, falls er eingesteckt war.

Stecken Sie das Arduino microUSB-Kabel in den Arduino und in den Raspberry Pi. Das Gerät piept.

Stellen Sie sicher, dass der Arduino als USB-Gerät angezeigt wird:

/home/pi# lsusb

Bus 001 Gerät 005: ID 2341:8037 Arduino SA

Bus 001 Gerät 004: ID 0424:7800 Standard Microsystems Corp.

Bus 001 Gerät 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0-Hub

Bus 001 Gerät 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub

Bus 001 Gerät 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Wenn der Arduino SA-Eintrag NICHT angezeigt wird, überprüfen Sie Ihr USB-Kabel: einige Kabel übertragen nur Strom, aber keine Daten. Dies war übrigens auch der Fehler, warum ich die Arduino IDE unter Windows nicht mit diesem Gerät verwenden konnte - ich habe zuerst ein falsches USB-Kabel ausprobiert!

Suchen Sie den Anschluss, den das Sparkfun Pro Micro verwendet:

ls /dev/tty*

/dev/tty /dev/tty12 /dev/tty17 /dev/tty21 /dev/tty26 /dev/tty30 /dev/tty35 /dev/tty4 /dev/tty44 /dev/tty49 /dev/tty53 /dev/tty58 /dev/tty62  /dev/ttyACM0

/dev/tty0 /dev/tty13 /dev/tty18 /dev/tty22 /dev/tty27 /dev/tty31 /dev/tty36 /dev/tty40 /dev/tty45 /dev/tty5 /dev/tty54 /dev/tty59 /dev/tty63 /dev/ttyAMA0

/dev/tty1 /dev/tty14 /dev/tty19 /dev/tty23 /dev/tty28 /dev/tty32 /dev/tty37 /dev/tty41 /dev/tty46 /dev/tty50 /dev/tty55 /dev/tty6 /dev/tty7 /dev/ttyprintk

/dev/tty10 /dev/tty15 /dev/tty2 /dev/tty24 /dev/tty29 /dev/tty33 /dev/tty38 /dev/tty42 /dev/tty47 /dev/tty51 /dev/tty56 /dev/tty60 /dev/tty8

/dev/tty11 /dev/tty16 /dev/tty20 /dev/tty25 /dev/tty3 /dev/tty34 /dev/tty39 /dev/tty43 /dev/tty48 /dev/tty52 /dev/tty57 /dev/tty61 /dev/tty9

Sie suchen nach etwas wie /dev/ttyACM0, oder /dev/ttyUSB0

In meinem Fall war es /dev/ttyACM0

Dieser Anschluss ist nur vorhanden, wenn das Gerät eingesteckt ist. Um sicherzustellen, dass Sie den richtigen Anschluss haben, können Sie die Auflistung mit angeschlossenem OpenDrop und nicht angeschlossenem OpenDrop (microUSB -> USB am Pi) ausprobieren. Vergleichen Sie die Ausgaben. Ich nehme an, dass es auch bei Ihnen /dev/ttyACM0 sein wird.

Verzeichnis für die Sicherung erstellen

Wir werden zum Superuser, erstellen das Verzeichnis für die Sicherungsdateien und wechseln in dieses Verzeichnis:

sudo su

mkdir /home/pi/opendrop2.0_bak

cd /home/pi/opendrop2.0_bak

Verwendung von avrdude

Der Reset-Knopf (Wichtig, lassen Sie diesen Teil nicht aus)

Damit avrdude funktioniert, muss sich das SparkFun Pro Micro im richtigen Systemzustand befinden. Um das SparkFun Pro Micro in den richtigen Systemzustand zu versetzen, müssen Sie die Reset-Taste (mit RST beschriftet) zweimal schnell hintereinander drücken. Das Gerät piept und die LED beginnt zu blinken.

Danach müssen Sie den Befehl avrdude sofort ausführen, da das Gerät nach einem kurzen Timeout wieder in den Normalzustand zurückkehrt.

Für jeden Befehl, den ich ausführte, drückte ich zweimal hintereinander die RST-Taste. Wahrscheinlich könnte man die Befehle in einem Shell-Skript zusammenfassen; da ich aber vorsichtig sein möchte, um die Geräte nicht durch die Verwendung einer falschen Befehlszeile zu zerstören, habe ich den Prozess manuell durchgeführt.

Wenn Sie die RST-Schaltfläche nicht wie beschrieben verwenden, erhalten Sie Fehlermeldungen von avrdude wie:

Verbindung zum Programmierer: .avrdude: butterfly_recv(): der Programmierer antwortet nicht

Firmare-Sicherung: Lesen - Übersicht

Wir werden uns zurückziehen

  • Blitzlicht
  • eeprom
  • hfuse
  • lFuse
  • efuse

Ref: https://www.hackster.io/rayburne/avr-firmware-duplicator (Vorsicht, die avrdude-Einstellungen hier sind nicht korrekt für den OpenDrop / Sparkfun Pro Micro).

Firmware-Sicherung: Die Befehle

Falls noch nicht geschehen, wechseln Sie in das Verzeichnis, das Sie für die Firmware-Backup-Dateien vorbereitet haben, und werden Sie zum Superuser (root). Ich bin nicht sicher, ob avrdude ohne Root-Rechte funktioniert - versuchen Sie es, wenn Sie möchten.

Vergewissern Sie sich, dass Sie den richtigen Anschluss verwenden (höchstwahrscheinlich /dev/ttyACM0). Achten Sie darauf, dass der Buchstabe "r" hinter dem Leseziel steht.. r wie read; der Buchstabe w würde Ihre Zieldatei als Quelle verwenden, um Ihr Arduino Flash zu überschreiben - ohne Sicherheitsabfrage!

Der Buchstabe r nach dem Namen der Sicherungsdatei gibt den Ausgabetyp an. Es ist wichtig, dass dies für die spätere Wiederherstellung richtig ist. Wenn Sie neugierig sind, lesen Sie die Manpage hier: https://www.nongnu.org/avrdude/user-manual/avrdude_4.html

-p gibt die Plattform an

-c der Programmierer

-P der Hafen

-U gibt die Operation an (Quelle/Ziel:Modus:Ziel/Quelle:Dateimodus)

Hier ist also der erste Befehl, den Sie verwenden müssen, und seine Ausgabe:

avrdude -p atmega32u4 -c avr109 -P /dev/ttyACM0 -U flash:r:flash_backup_file_od2.0.hex:r

Verbinden mit dem Programmiergerät: .

Programmierer gefunden: Id = "CATERIN"; Typ = S

    Software-Version = 1.0; keine Hardware-Version angegeben.

Das Programmiergerät unterstützt die automatische Adresserweiterung.

Programmer unterstützt gepufferten Speicherzugriff mit buffersize=128 Bytes.

 

Der Programmer unterstützt die folgenden Geräte:

    Gerätecode: 0x44

 

avrdude: AVR-Gerät initialisiert und bereit, Anweisungen anzunehmen

 

Lesen | ################################################## | 100% 0.00s

 

avrdude: Gerätesignatur = 0x1e9587 (wahrscheinlich m32u4)

avrdude: Lesen des Flash-Speichers:

 

Lesen | ################################################## | 100% 0.64s

 

avrdude: Ausgabedatei "flash_backup_file_od2.0.hex" schreiben

 

avrdude: safemode: Sicherungen OK (E:CB, H:D8, L:FF)

 

avrdude erledigt. Ich danke Ihnen.

 

Hier ist der zweite Befehl. Übrigens, Sie können die Dateinamen ändern (in diesem Fall das Bit eeprom_backup_file_od2.0.hex):

 

avrdude -p atmega32u4 -c avr109 -P /dev/ttyACM0 -U eeprom:r:eeprom_backup_file_od2.0.hex:r

 

Verbinden mit dem Programmiergerät: .

Programmierer gefunden: Id = "CATERIN"; Typ = S

    Software-Version = 1.0; keine Hardware-Version angegeben.

Das Programmiergerät unterstützt die automatische Adresserweiterung.

Programmer unterstützt gepufferten Speicherzugriff mit buffersize=128 Bytes.

 

Der Programmer unterstützt die folgenden Geräte:

    Gerätecode: 0x44

 

avrdude: AVR-Gerät initialisiert und bereit, Anweisungen anzunehmen

 

Lesen | ################################################## | 100% 0.00s

 

avrdude: Gerätesignatur = 0x1e9587 (wahrscheinlich m32u4)

avrdude: Lesen des Eeprom-Speichers:

 

Lesen | ################################################## | 100% 1.76s

 

avrdude: Ausgabedatei "eeprom_backup_file_od2.0.hex" schreiben

 

avrdude: safemode: Sicherungen OK (E:CB, H:D8, L:FF)

 

avrdude erledigt. Ich danke Ihnen.

 

Dann werden wir drei verschiedene Arten von Sicherungen sichern. Hier ist die erste:

 

avrdude -p atmega32u4 -c avr109 -P /dev/ttyACM0 -U hfuse:r:hfuse_backup_file_od2.0.hex:r

 

Verbinden mit dem Programmiergerät: .

Programmierer gefunden: Id = "CATERIN"; Typ = S

    Software-Version = 1.0; keine Hardware-Version angegeben.

Das Programmiergerät unterstützt die automatische Adresserweiterung.

Programmer unterstützt gepufferten Speicherzugriff mit buffersize=128 Bytes.

 

Der Programmer unterstützt die folgenden Geräte:

    Gerätecode: 0x44

 

avrdude: AVR-Gerät initialisiert und bereit, Anweisungen anzunehmen

 

Lesen | ################################################## | 100% 0.00s

 

avrdude: Gerätesignatur = 0x1e9587 (wahrscheinlich m32u4)

avrdude: hfuse-Speicher lesen:

 

Lesen | ################################################## | 100% 0.00s

 

avrdude: Ausgabedatei "hfuse_backup_file_od2.0.hex" schreiben

 

avrdude: safemode: Sicherungen OK (E:CB, H:D8, L:FF)

 

avrdude erledigt. Ich danke Ihnen.

 

jetzt die Sicherung:

 

avrdude -p atmega32u4 -c avr109 -P /dev/ttyACM0 -U lfuse:r:lfuse_backup_file_od2.0.hex:r

 

Verbinden mit dem Programmiergerät: .

Programmierer gefunden: Id = "CATERIN"; Typ = S

    Software-Version = 1.0; keine Hardware-Version angegeben.

Das Programmiergerät unterstützt die automatische Adresserweiterung.

Programmer unterstützt gepufferten Speicherzugriff mit buffersize=128 Bytes.

 

Der Programmer unterstützt die folgenden Geräte:

    Gerätecode: 0x44

 

avrdude: AVR-Gerät initialisiert und bereit, Anweisungen anzunehmen

 

Lesen | ################################################## | 100% 0.00s

 

avrdude: Gerätesignatur = 0x1e9587 (wahrscheinlich m32u4)

avrdude: Lfuse-Speicher lesen:

 

Lesen | ################################################## | 100% 0.00s

 

avrdude: Ausgabedatei "lfuse_backup_file_od2.0.hex" schreiben

 

avrdude: safemode: Sicherungen OK (E:CB, H:D8, L:FF)

 

avrdude erledigt. Ich danke Ihnen.

 

Nun der letzte Befehl, die efuse:

 

avrdude -p atmega32u4 -c avr109 -P /dev/ttyACM0 -U efuse:r:efuse_backup_file_od2.0.hex:r

 

Verbinden mit dem Programmiergerät: .

Programmierer gefunden: Id = "CATERIN"; Typ = S

    Software-Version = 1.0; keine Hardware-Version angegeben.

Das Programmiergerät unterstützt die automatische Adresserweiterung.

Programmer unterstützt gepufferten Speicherzugriff mit buffersize=128 Bytes.

 

Der Programmer unterstützt die folgenden Geräte:

    Gerätecode: 0x44

 

avrdude: AVR-Gerät initialisiert und bereit, Anweisungen anzunehmen

 

Lesen | ################################################## | 100% 0.00s

 

avrdude: Gerätesignatur = 0x1e9587 (wahrscheinlich m32u4)

avrdude: efuse-Speicher auslesen:

 

Lesen | ################################################## | 100% 0.00s

 

avrdude: Ausgabedatei "efuse_backup_file_od2.0.hex" schreiben

 

avrdude: safemode: Sicherungen OK (E:CB, H:D8, L:FF)

 

avrdude erledigt. Ich danke Ihnen.

 

Denken Sie daran, dass Sie die RST-Taste drücken müssen zweimal vor jeder Operation! Es ist nicht Es ist notwendig, den Arduino nach der Ausführung des RST-Vorgangs vom Raspberry Pi zu trennen.

 

Erstellen einer ZIP-Datei

können Sie mit dem folgenden Befehl eine ZIP-Datei erstellen (ersetzen Sie die Pfade entsprechend):

sudo zip -r /home/pi/opendrop2.0_bak.zip /home/pi/opendrop2.0_bak

Wiederherstellung der Firmware

Wenn Sie die Firmware wiederherstellen müssen, verwenden Sie die folgenden Befehle. Vergessen Sie auch hier nicht, vor jedem Befehl zweimal die RST-Taste zu drücken!

Führen Sie die Befehle im richtigen Verzeichnis als root aus. Stellen Sie sicher, dass Sie den Buchstaben "w" für das Schreiben auf den Mikrocontroller (in diesem Fall Arduino) haben.

Schreiben Sie die Flash-Datei:

avrdude -p atmega32u4 -c avr109 -P /dev/ttyACM0 -U flash:w:flash_backup_file_od2.0.hex

Verbinden mit dem Programmiergerät: .

Programmierer gefunden: Id = "CATERIN"; Typ = S

    Software-Version = 1.0; keine Hardware-Version angegeben.

Das Programmiergerät unterstützt die automatische Adresserweiterung.

Programmer unterstützt gepufferten Speicherzugriff mit buffersize=128 Bytes.

 

Der Programmer unterstützt die folgenden Geräte:

    Gerätecode: 0x44

 

avrdude: AVR-Gerät initialisiert und bereit, Anweisungen anzunehmen

 

Lesen | ################################################## | 100% 0.00s

 

avrdude: Gerätesignatur = 0x1e9587 (wahrscheinlich m32u4)

avrdude: HINWEIS: Wurde ein "Flash"-Speicher angegeben, so wird ein Löschzyklus durchgeführt.

         Um diese Funktion zu deaktivieren, geben Sie die Option -D an.

avrdude: Chip löschen

avrdude: Lesen der Eingabedatei "flash_backup_file_od2.0.hex"

avrdude: schreibt Flash (32604 Bytes):

 

Schreiben | ################################################## | 100% 2.98s

 

avrdude: 32604 Bytes Flash geschrieben

avrdude: Verifizierung des Flash-Speichers gegen flash_backup_file_od2.0.hex:

avrdude: Daten laden Flash-Daten aus Eingabedatei flash_backup_file_od2.0.hex:

avrdude: Eingabedatei flash_backup_file_od2.0.hex enthält 32604 Bytes

avrdude: Lesen von On-Chip-Flash-Daten:

 

Lesen | ################################################## | 100% 0.76s

 

avrdude: Verifizierung ...

avrdude: Überprüfungsfehler, erste Fehlanpassung bei Byte 0x7000

         0x55 != 0x5f

avrdude: Überprüfungsfehler; Inhalt stimmt nicht überein

 

avrdude: safemode: Sicherungen OK (E:CB, H:D8, L:FF)

 

avrdude erledigt. Ich danke Ihnen.

 

Hinweis: Ich habe mehrmals versucht zu schreiben, wobei ich den Befehl leicht variiert habe. Bei jedem Versuch erhielt ich den Verifizierungsfehler; die Firmware funktioniert jedoch einwandfrei - meine oberflächlichen Nachforschungen ergaben, dass es mit der Verdrahtung der Mikrocontroller-Peripherie zusammenhängt - sie wurde in den OpenDrop eingefügt, während ich die Sicherung und Wiederherstellung durchführte. Ich habe beschlossen, dass die Ergebnisse für sich selbst sprechen, und bin mit der Wiederherstellung der anderen Teile fortgefahren. Ihre Ergebnisse können hiervon abweichen. Ich gebe keine Garantien!

 

Wiederherstellung des Eeproms:

avrdude -p atmega32u4 -c avr109 -P /dev/ttyACM0 -U eeprom:w:eeprom_backup_file_od2.0.hex

 

Verbinden mit dem Programmiergerät: .

Programmierer gefunden: Id = "CATERIN"; Typ = S

    Software-Version = 1.0; keine Hardware-Version angegeben.

Das Programmiergerät unterstützt die automatische Adresserweiterung.

Programmer unterstützt gepufferten Speicherzugriff mit buffersize=128 Bytes.

 

Der Programmer unterstützt die folgenden Geräte:

    Gerätecode: 0x44

 

avrdude: AVR-Gerät initialisiert und bereit, Anweisungen anzunehmen

 

Lesen | ################################################## | 100% 0.00s

 

avrdude: Gerätesignatur = 0x1e9587 (wahrscheinlich m32u4)

avrdude: Lesen der Eingabedatei "eeprom_backup_file_od2.0.hex"

avrdude: Eingabedatei eeprom_backup_file_od2.0.hex wird automatisch als Rohbinärdatei erkannt

avrdude: schreibt Eeprom (1024 Bytes):

 

Schreiben | ################################################## | 100% 3.44s

 

avrdude: 1024 Bytes Eeprom geschrieben

avrdude: Verifizierung des Eeprom-Speichers gegen eeprom_backup_file_od2.0.hex:

avrdude: Daten laden eeprom Daten aus der Eingabedatei eeprom_backup_file_od2.0.hex:

avrdude: Eingabedatei eeprom_backup_file_od2.0.hex wird automatisch als Rohbinärdatei erkannt

avrdude: Eingabedatei eeprom_backup_file_od2.0.hex enthält 1024 Bytes

avrdude: Lesen von On-Chip-Eeprom-Daten:

 

Lesen | ################################################## | 100% 1.76s

 

avrdude: Verifizierung ...

avrdude: 1024 Bytes des Eeproms verifiziert

 

avrdude: safemode: Sicherungen OK (E:CB, H:D8, L:FF)

 

avrdude erledigt. Ich danke Ihnen.

 

Stellen Sie die Sicherungen wieder her (Hinweis: Ich habe gelesen, dass einige Sicherungen nur mit einem 12-V-Programmiergerät zurückgestellt werden können. YMMV).

 

Erste hfuse:

avrdude -p atmega32u4 -c avr109 -P /dev/ttyACM0 -U hfuse:w:hfuse_backup_file_od2.0.hex

 

Verbinden mit dem Programmiergerät: .

Programmierer gefunden: Id = "CATERIN"; Typ = S

    Software-Version = 1.0; keine Hardware-Version angegeben.

Das Programmiergerät unterstützt die automatische Adresserweiterung.

Programmer unterstützt gepufferten Speicherzugriff mit buffersize=128 Bytes.

 

Der Programmer unterstützt die folgenden Geräte:

    Gerätecode: 0x44

 

avrdude: AVR-Gerät initialisiert und bereit, Anweisungen anzunehmen

 

Lesen | ################################################## | 100% 0.00s

 

avrdude: Gerätesignatur = 0x1e9587 (wahrscheinlich m32u4)

avrdude: Lesen der Eingabedatei "hfuse_backup_file_od2.0.hex"

avrdude: Eingabedatei hfuse_backup_file_od2.0.hex wird automatisch als Rohbinärdatei erkannt

avrdude: schreibt hfuse (1 Bytes):

 

Schreiben | | 0% 0.00s ***gescheitert;

Schreiben | ################################################## | 100% 0.00s

 

avrdude: 1 Byte von hfuse geschrieben

avrdude: Verifizierung des hfuse Speichers gegen hfuse_backup_file_od2.0.hex:

avrdude: Laden von hfuse-Daten aus der Eingabedatei hfuse_backup_file_od2.0.hex:

avrdude: Eingabedatei hfuse_backup_file_od2.0.hex wird automatisch als Rohbinärdatei erkannt

avrdude: Eingabedatei hfuse_backup_file_od2.0.hex enthält 1 Bytes

avrdude: Lesen von On-Chip-Hfuse-Daten:

 

Lesen | ################################################## | 100% 0.00s

 

avrdude: Verifizierung ...

avrdude: 1 Bytes von hfuse verifiziert

 

avrdude: safemode: Sicherungen OK (E:CB, H:D8, L:FF)

 

avrdude erledigt. Ich danke Ihnen.

 

jetzt Ifuse:

avrdude -p atmega32u4 -c avr109 -P /dev/ttyACM0 -U lfuse:w:lfuse_backup_file_od2.0.hex

 

Verbinden mit dem Programmiergerät: .

Programmierer gefunden: Id = "CATERIN"; Typ = S

    Software-Version = 1.0; keine Hardware-Version angegeben.

Das Programmiergerät unterstützt die automatische Adresserweiterung.

Programmer unterstützt gepufferten Speicherzugriff mit buffersize=128 Bytes.

 

Der Programmer unterstützt die folgenden Geräte:

    Gerätecode: 0x44

 

avrdude: AVR-Gerät initialisiert und bereit, Anweisungen anzunehmen

 

Lesen | ################################################## | 100% 0.00s

 

avrdude: Gerätesignatur = 0x1e9587 (wahrscheinlich m32u4)

avrdude: Lesen der Eingabedatei "lfuse_backup_file_od2.0.hex"

avrdude: Eingabedatei lfuse_backup_file_od2.0.hex wird automatisch als Rohbinärdatei erkannt

avrdude: schreibt lfuse (1 Bytes):

 

Schreiben | | 0% 0.00s ***gescheitert;

Schreiben | ################################################## | 100% 0.00s

 

avrdude: 1 Bytes von lfuse geschrieben

avrdude: Überprüfung des lfuse Speichers gegen lfuse_backup_file_od2.0.hex:

avrdude: lfuse-Daten aus Eingabedatei lfuse_backup_file_od2.0.hex laden:

avrdude: Eingabedatei lfuse_backup_file_od2.0.hex wird automatisch als Rohbinärdatei erkannt

avrdude: Eingabedatei lfuse_backup_file_od2.0.hex enthält 1 Bytes

avrdude: Lesen von on-chip lfuse Daten:

 

Lesen | ################################################## | 100% 0.00s

 

avrdude: Verifizierung ...

avrdude: 1 Bytes von lfuse verifiziert

 

avrdude: safemode: Sicherungen OK (E:CB, H:D8, L:FF)

 

avrdude erledigt. Ich danke Ihnen.

 

jetzt efuse:

avrdude -p atmega32u4 -c avr109 -P /dev/ttyACM0 -U efuse:w:efuse_backup_file_od2.0.hex

 

Verbinden mit dem Programmiergerät: .

Programmierer gefunden: Id = "CATERIN"; Typ = S

    Software-Version = 1.0; keine Hardware-Version angegeben.

Das Programmiergerät unterstützt die automatische Adresserweiterung.

Programmer unterstützt gepufferten Speicherzugriff mit buffersize=128 Bytes.

 

Der Programmer unterstützt die folgenden Geräte:

    Gerätecode: 0x44

 

avrdude: AVR-Gerät initialisiert und bereit, Anweisungen anzunehmen

 

Lesen | ################################################## | 100% 0.00s

 

avrdude: Gerätesignatur = 0x1e9587 (wahrscheinlich m32u4)

avrdude: Lesen der Eingabedatei "efuse_backup_file_od2.0.hex"

avrdude: Eingabedatei efuse_backup_file_od2.0.hex wird automatisch als Rohbinärdatei erkannt

avrdude: schreibt efuse (1 Bytes):

 

Schreiben | | 0% 0.00s ***gescheitert;

Schreiben | ################################################## | 100% 0.00s

 

avrdude: 1 Bytes von efuse geschrieben

avrdude: Überprüfung des efuse-Speichers gegen efuse_backup_file_od2.0.hex:

avrdude: Laden von efuse-Daten aus der Eingabedatei efuse_backup_file_od2.0.hex:

avrdude: Eingabedatei efuse_backup_file_od2.0.hex wird automatisch als Rohbinärdatei erkannt

avrdude: Eingabedatei efuse_backup_file_od2.0.hex enthält 1 Bytes

avrdude: Lesen von On-Chip-Efuse-Daten:

 

Lesen | ################################################## | 100% 0.00s

 

avrdude: Verifizierung ...

avrdude: 1 Bytes von efuse verifiziert

 

avrdude: safemode: Sicherungen OK (E:CB, H:D8, L:FF)

 

avrdude erledigt. Ich danke Ihnen.

 

Das war's - die Firmware wurde wiederhergestellt. Sie können das OpenDrop / SparkFun Pro Micro jetzt von Ihrem Raspberry Pi abziehen.

 

Nützliche Links und Referenzen

  • https://www.nongnu.org/avrdude/user-manual/avrdude_4.html
  • https://askubuntu.com/questions/254835/how-can-i-know-the-usb-port
  • https://forum.arduino.cc/index.php?topic=403201.0 (avrdude-Befehl für andere Ziele!)
  • https://learn.sparkfun.com/tutorials/pro-micro–fio-v3-hookup-guide/introduction
  • https://www.hackster.io/rayburne/avr-firmware-duplicator (avrdude-Befehl für andere Ziele!)
  • https://forum.arduino.cc/index.php?topic=453997.0 (betreffend den Fehler bei der Flash-Verifizierung)