Servus! Ich stand schon des Öfteren vor dem Problem, jemandem, der sich nicht mit µCs auskennt, eine einfache Möglichkeit zu bieten, die Firmware eines AVR µCs upzudaten. Klarerweise kann ich somit auch nicht voraussetzen, dass eine komplette AVR-Toolchain inklusive AVRDUDE oder gar das Atmel® / AVR Studio oder auch Java installiert ist. Außerdem wollte ich nicht, dass es viele sichtbare Einstellmöglichkeiten, wie z.B. beim AVR8 Burn-o-mat für den Anwender geben soll, wenn man lediglich ein Firmwareupdate machen, aber keine Fuses beliebig ändern will. Herausgekommen ist dabei eine .bat-Datei, welche die verfügbaren COM-Ports auflistet und auswählen lässt, welcher zu verwenden ist. Beispielsweise verwende ich hier einen USB<->Seriell FTDI FT232 Adapter mit einem "Arduino Pro Mini 328", (welcher auf eBay zum Teil günstiger inkl. Versand erhältlich ist, als der nackte IC). Dieser hat ja bereits einen von AVRDUDE direkt als "programmer" an einer seriellen Schnittstelle unterstützten Bootloader. Durch Anpassen des avrdude-Aufrufs kann jeder beliebige andere Programmer verwendet werden. Für die Arduino-Serie gibt es hier eine schöne Auflistung der für das jeweilige Modell notwendigen Einstellungen. https://github.com/watterott/KnowledgeBase/wiki/Arduino Somit braucht man bei auch Verwendung dieser Hardware keine Arduino IDE, sondern lediglich AVRDUDE und gegebenenfalls den manuell installierten FTDI-Driver. http://www.ftdichip.com/Drivers/VCP.htm Es wird angenommen, dass das .hex (oder ggf. .eep)-File mit beliebigem Namen im Unterordner default liegt, was ja bei AVR Studio der Fall ist, ansonsten wird einfach das File im aktuellen Ordner geflasht. Per Doppelklick starten, mit x im Fenster oder Strg+C, J, Enter beenden, ansonsten nächstes zu Programmierende Board anstecken & nahezu beliebige Taste drücken. ;) Falls ihr den noch nicht kennt würde ich euch den AVR-Bootloader mit Verschlüsselung von Hagen Re empfehlen, welcher viele Vorteile gegenüber dem vorprogrammierten "Optiboot" hat. Die kurze Einarbeitung zahlt sich echt aus! (Dieser lässt sich auch in die Kommandozeile einbauen, wobei er ja ohnehin schon eine super GUI hat, die mein Batch-File nahezu obsolet macht.) Ich würde mich wirklich sehr freuen, wenn jemand diese Funktionalität auf Linux, z.B. ein Shell-Script portieren könnte! Schöne Grüße & einfaches Firmware updaten, Daniel A. Maierhofer
:
Bearbeitet durch User
Hier bitteschön der Code zwecks schnellem Rauskopieren:
1 | @echo off |
2 | REM Universal Arduino-programmier-Batch File © Daniel A. Maierhofer 2014 |
3 | REM Es wird angenommen, dass das .hex File mit beliebigem Namen |
4 | REM im Unterordner default liegt, was ja bei AVR Studio der Fall ist, |
5 | REM ansonsten wird einfach das .hex-File im aktuellen Ordner geflasht |
6 | REM Per Doppelklick starten, mit x im Fenster oder Strg+C, J, Enter beenden |
7 | REM Nähere Infos auf https://www.mikrocontroller.net/topic/340516 |
8 | |
9 | echo Existierende Ports: |
10 | for /f "tokens=4" %%A in ('mode^|findstr "COM[0-9]:"') do echo %%A |
11 | set /p CNR=COM-Port-Nummer(nur die Zahl)?: |
12 | cd default 2> NUL || cd Debug 2> NUL |
13 | :program |
14 | FOR %%a in (*.hex) DO avrdude -patmega328p -carduino -P\\.\COM%CNR% -b57600 -Uflash:w:"%%a":i |
15 | FOR %%a in (*.eep) DO avrdude -patmega328p -carduino -P\\.\COM%CNR% -b57600 -Ueeprom:w:"%%a":i |
16 | echo Mit beliebigem Tastendruck weiteren Programmiervorgang auf gleichem Port starten |
17 | pause |
18 | goto program |
Achja & bei den Uno-Boards(siehe Bild) muss man aufpassen, dass man die Baudrate auf 115200 statt 57600 setzt.
Bitteschön ein Update zur Verwendung von COM-Ports mit mehrstelliger Nummer. https://github.com/damadmai/avr_upload_to_mc
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.