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)