Forum: Projekte & Code AVRDUDE Program_Upload_to_MC.bat


von Daniel A. M. (amad) Benutzerseite


Angehängte Dateien:

Lesenswert?

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
von Daniel A. M. (amad) Benutzerseite


Lesenswert?

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

von Daniel A. M. (amad) Benutzerseite


Angehängte Dateien:

Lesenswert?

Achja & bei den Uno-Boards(siehe Bild) muss man aufpassen, dass man die 
Baudrate auf 115200 statt 57600 setzt.

von Daniel A. M. (amad) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.