Ich versuche, eine kompilierte .hex-Datei über das Terminal auf einen Arduino Leonardo hochzuladen. Das Hochladen eines Beispielcodes mit der Arduino IDE funktioniert gut, und von der Arduino IDE habe ich den Upload-Befehl erhalten
avrdude -C/etc/avrdude.conf -patmega32u4 -cavr109 -v -v -v -v -P/dev/ttyACM0 -b57600 -D -Uflash:w:[file.hex]:i
Bei der Ausführung wurde jedoch der folgende Fehler angezeigt
Connecting to programmer: .avrdude: Send: . [1b]
avrdude: Send: S [53]
avrdude: Recv: . [15]
avrdude: ser_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
Was ist falsch?
Nach einigem Ausprobieren habe ich eine einfache Binärdatei zum Hochladen in den Leonardo-Bootloader erstellt. Diese Binärdatei öffnet die Seriennummer bei 1200 Baud, schließt sie dann und verpackt die Avrdude-Binärdatei, um sie
.hex
in Flash zu schreiben .Im Arduino-Kern können
CDC.cpp
wir sehen, dass CDC nicht nur auf Baudrate 1200 wartet, sondern CDC auch den DTR-Wert überprüft. Wenn DTR hoch geht, bricht CDC ab, um in den Bootloader zu springen. Deshalb habe ich den DTR-Wert gelöscht. Ich habe dies in Ubuntu 16.04 versucht.https://github.com/vanbwodonk/leonardoUploader
Verwenden Sie nur diesen einfachen Befehl:
Ich hoffe, es hilft anderen Menschen, die danach suchen.
quelle
Eine Windows-Lösung finden Sie hier: Wie kann ich einen Leonardo zum Zurücksetzen mit avrdude zwingen? . Ich habe einen einfachen Bat File Wrapper erstellt, der den Avrdude-Aufruf automatisiert. Es identifiziert den Leonardo-COM-Port mit WMI, setzt diesen COM-Port mit dem Befehl mode auf 1200 Baud zurück, identifiziert dann den COM-Port des Bootloaders und ruft avrdude auf.
Die Firmware sollte in firmware.hex abgelegt werden, aber die bat-Datei kann so geändert werden, dass sie über die Befehlszeile bereitgestellt wird.
Ich habe den Code in GitHub repo eingefügt : Einfacher Wrapper für avrdude, um das Hochladen der Firmware von der Befehlszeile auf Arduino Leonardo zu ermöglichen .
quelle