Forum: PC-Programmierung Arduino Hex-File flashen Batch script


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von chris_ (Gast)


Lesenswert?

Hallo Zusammen,

ich möchte gerne ein Batch-Script für das Flashen eines Hex-File auf 
einen Arduino Uno erstellen.

Für mein System ( Ubuntu 14.04 ) funktioniert das folgendermaßen ganz 
gut:
1
#!/bin/bash
2
3
/usr/share/arduino/hardware/tools/avrdude -C/usr/share/arduino/hardware/tools/avrdude.conf  -patmega328p -carduino -P/dev/ttyACM0 -b115200 -D -Uflash:w:Blink_atmega328.hex:i

Wie sieht das auf einem Windos-System aus?

Es wäre gut, wenn jemand ein Batch-File für Windows erstellen könnte.

von Sven L. (sven_rvbg)


Lesenswert?

chris_ schrieb:
> Wie sieht das auf einem Windos-System aus?

grundsätzlich ähnlich

C:\..\..\avrdude.exe -C... usw.

ach schau doch dort: http://www.elektronik-labor.de/AVR/AVRdude.html

von chris_ (Gast)


Lesenswert?

Hallo Sven,

danke für die Antwort. Mich hätte vor allen Dingen ein Batch-File 
interessiert, bei dem man nichts ändern muss, so dass Anfänger einfach 
darauf klicken können.

Bei Ubuntu nehme ich an, dass die Pfade zu AVR-Dude immer gleich sind, 
sobald man die Arduino-IDE installiert hat. Bei Windows weiß ich das 
nicht.

von chris_ (Gast)


Angehängte Dateien:

Lesenswert?

Jetzt habe ich das Ganze mal unter Windows mit folgender Zeile probiert:

"C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude" 
-C"C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.conf" 
-patmega328p -carduino -PCOM8 -b115200 -D -Uflash:w:test.hex:i


Leider erscheint da die obige Fehlermeldung, obwohl die Arduino IDE ja 
auf dem Rechner läuft und daher nichts fehlen sollte ...

Hat jemand eine Idee?

von chris_ (Gast)


Lesenswert?

So, hier jetzt eine Lösung für Windows 7.
Unschön, aber funktioniert.
1
set schnittstelle=COM8
2
set filename=test.hex
3
4
set arduinopath=C:\Program Files (x86)\Arduino
5
set avrdude="%arduinopath%\hardware\tools\avr\bin\avrdude"
6
set avrdudeconf=%arduinopath%\hardware\tools\avr\etc\avrdude.conf
7
8
rem aus irgend welchen Gruenden funktioniert das setzen des Pfades für cycwin in Windows7 nicht:
9
rem setx \m %PATH%;%arduinopath%  
10
11
rem nehmen wir also die einfache Methode: kopieren des files ins Verzeichnis:
12
copy "%arduinopath%\cygwin1.dll"
13
rem es ist natuerlich etwas unsauber, weil das File jedes mal kopiert wird und doppelt vorkommt.
14
15
%avrdude% -C"%avrdudeconf%" -patmega328p -carduino -P%schnittstelle% -b115200 -D -Uflash:w:%filename%:i

von Robert L. (lrlr)


Lesenswert?

kurz getestet, ohne Garantie:

beim WINAVR ist ein avrdude.exe dabei
die braucht eine libusb0.dll (muss einfach im selben Verzeichnis sein)

das wars dann aber auch schon,
nix cygwin..

von chris_ (Gast)


Lesenswert?

>kurz getestet, ohne Garantie:

Vielen Dank für's ausprobieren.
Die "cygwin1.dll" ist auch nicht so groß und wird mit der Arduino-IDE 
mit installiert. Wenn sie im gleichen Verzeichnis wie der Aufruf von 
avrdude liegt, geht es auch. Deshalb habe ich den Kopierbefehl 
eingefügt. Den Pfad mit "setx" zu setzen, ist mir nicht gelungen.
Also egal, wenn jemand WinAVR installiert hat, kann er die von Dir 
erwähnte Version nutzen im anderen Falle die Arduino-IDE-Version.

von Ingo L. (corrtexx)


Lesenswert?

chris_ schrieb:
> set filename=test.hex
Ich habe ein ähnliches Problem. Soweit läuft alles, jedoch muss ich den 
Dateinamen noch selber eintragen. Ich habe mir das so zusammengebaut, 
dass das Batch in und das *.hex zusammen in einem Ordner liegen sollen, 
also nur die beiden Dateien. Es soll das immer nur das *.hex 
ausgetauscht werden und neu geflashed werden. Hierfür wäre es schön, 
wenn das eine *.hex im Ordner automatisch eingetragen wird. Kann mir 
jemand sagen wie ich das hinbekomme, dass FILENAME automatisch den 
Dateinamen des *.hex annimmt?
1
@echo off
2
setlocal
3
4
CD /D %~dp0
5
6
:: Pfad zu ARV-Dude wählen
7
@set PFAD="C:\Users\Admin\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"
8
9
:: Zu flashende Datei wählen
10
@set FILENAME=3V1_PSR.hex
11
12
:: COMPort eintragen aus Gerätemanager
13
@set COMPORT=com9
14
15
:: DTR wackeln für Reset des Controllers
16
17
c:\windows\system32\mode.com %COMPORT%: baud=1200 dtr=on
18
c:\windows\system32\mode.com %COMPORT%: dtr=off
19
20
:: Programm übertragen
21
:: Flashbatch muss im selben Ordner wie Ziel-Hex liegen
22
:: Fuses nicht verändern!
23
24
avrdude -C %PFAD% -v -patmega4809 -cjtag2updi -P %COMPORT% -b115200 -e -D -Uflash:w:%cd%\%FILENAME%:i -Ufuse0:w:0x00:m -Ufuse1:w:0xC4:m -Ufuse2:w:0x02:m -Ufuse5:w:0xC9:m -Ufuse6:w:0x07:m -Ufuse7:w:0x00:m -Ufuse8:w:0x00:m {upload.extra_files} 
25
26
PAUSE

Weiter währe es absolut genial, wenn man die Comportnummer vor dem 
flashen einmal eingeben muss, da sich die Arduinos immer unter einem 
neuen COM anmelden. Die Nummer sucht man sich dann vorher im 
Gerätemanager vorher mal raus

von Christoph K. (backdraft007)


Lesenswert?


von Ingo L. (corrtexx)


Lesenswert?


von Ingo L. (corrtexx)


Lesenswert?

habs doch hinbekommen:
1
For /F %%i in ("%cd%\*.hex") do set Datei=%%~ni
2
echo Geplante Datei fuer Flashvorgang:%Datei%.hex

: Bearbeitet durch User
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.