Hallo,
ich bin neu bei AVR-GCC aber nicht bei C/C++ und Micro-Kontrollern.
Ich habe ein Arduino mit der gleichnamigen Software. Das Flashen über
USB klappt dort sehr gut.
Nun bin ich auf AVR Studio 5 umgestiegen und wollte ein Programm auf
Arduino flashen. Dazu habe ich eine .bat für AVRdude geschrieben, siehe
anhängende Datei. Der Output enthält den Fehler:
C:\Users\wps_2\Desktop>mode com7 BAUD=19200 DATA=8 PARITY=N dtr=on
Status von Gerät COM7:
----------------------
Baudrate: 19200
Parität: None
Datenbits: 8
Stoppbits: 1
Timeout: OFF
XON/XOFF: OFF
CTS-Handshaking: OFF
DSR-Handshaking: OFF
DSR-Prüfung: OFF
DTR-Signal: ON
RTS-Signal: ON
C:\Users\wps_2\Desktop>F:\WinAVR-20100110\bin\avrdude -c stk500v1 -p
m168 -P \\.\com7 -U
flash:w:G:\Projekte\AVR\Studio-5\AVR-Frequenzzaehler\AVR-Frequenzzaehler
\Debug\AVR-Frequenzzaehler.hex
avrdude: invalid file format
'\Projekte\AVR\Studio-5\AVR-Frequenzzaehler\AVR-Frequenzzaehler\Debug\AV
R-Frequenzzaehler.hex' in update specifier
avrdude: error parsing update operation
'flash:w:G:\Projekte\AVR\Studio-5\AVR-Fr
equenzzaehler\AVR-Frequenzzaehler\Debug\AVR-Frequenzzaehler.hex'
C:\Users\wps_2\Desktop>if 1 == 0 goto fertig
Ich habe es auch mit -c arduino versucht, gleiches Problem.
Hat jemand eine Idee was da flasch läuft?
Gruß wernerP.
Laut deiner Beschreibung hat AVRDUDE Probleme mit dem Format der Datei
G:\Projekte\AVR\Studio-5\AVR-Frequenzzaehler\AVR-Frequenzzaehler\Debug\A
VR-Frequenzzaehler.hex
aber nicht mit der Hardware an sich.
Dass die Hardware richtig angesprochen wird, könntest du nachprüfen mit
und dann die Ausgabedatei C:\output.txt betrachten.
Ich würde die Datei
G:\Projekte\AVR\Studio-5\AVR-Frequenzzaehler\AVR-Frequenzzaehler\Debug\A
VR-Frequenzzaehler.hex
zum Betrachten hier abladen und/oder es mit einem kürzeren Pfad
probieren z.B. mit einer lokalen Kopie
Laut Ausgabe Output.txt klemmt die Verbindung zwischen PC und Arduino.
Bei einer Netzsuche mit der exakten Fehlermeldung "avrdude:
stk500_getsync(): not in sync: resp=0x00" erscheinen sehr viele Treffer.
Vielversprechend sind die Diskussionen im Arduino Forum z.B. die in
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1187909552http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1248528012
...
Um das Problem weiter einzugrenzen, beschaffe folgende Informationen:
Welchen Arduino hast du?
Wie bist du auf die Portbezeichnung \\.\com7 gekommen?
Oben schreibst du
>> Ich habe ein Arduino mit der gleichnamigen Software. Das Flashen über>> USB klappt dort sehr gut.
Beim Flashen aus der Arduino-IDE heraus wird ebenfalls AVRDUDE benutzt.
Hast du mal die Kommandozeile dort mit deiner Kommandozeile verglichen?
Um in der Arduino-IDE an die AVRDUDE-Kommandozeile heran zu kommen,
kannst du mit einem Hack arbeiten. Du erzeugst dir ein Programm, das die
Kommandozeile ausgibt und speicherst das an die Stelle des originalen
AVRDUDE (Arduino-IDE=>hardware=> tools=>avr=>bin, Backup anfertigen!).
Beispielcode für diesen DOS-Hack:
1
#include<stdio.h>
2
3
intmain(intargc,char**argv)
4
{
5
while(argc--){
6
printf("%s ",*argv++);
7
}
8
return0;
9
}
Die Kommandozeile erscheint dann in der Arduino-IDE in dem unteren
Protokollbereich, wenn du ein Upload machst. Der Upload selber
funktioniert damit natürlich nicht, dafür musst du wieder das gerettete
originale Avrdude benutzen.
In einem nächsten Schritt würde ich die so ermittelte Kommandozeile in
ein Batchfile schreiben und damit ein Upload außerhalb der Arduino-IDE
probieren. Ggf. die Debugausgabe ergänzen und -vv > "C:\output.txt" 2>&1
anhängen.
Hallo Helfer,
nochmal vielen Dank für die wieder sehr ausführliche und informative
Antwort.
Ich habe mir zwischen einen AVRDragon bestellt. Mal sehen ob es mit dem
geht. Ich werde berichten.
Ich habe leider nicht soviel Zeit, jeden Tag hier herein zu schauen.
Zu dem Problem, ich habe die Kommunikation mit der Arduino-Software noch
einmal getestet. Die läuft einwandfrei.
Könnte es sein, das AVRdude Probleme mit dem Bootloader vom Arduino hat.
So wie ich gesehen habe war in der Fehlermeldung etwas von "in update
specifier" ausgesagt.
Ich habe hier ein scheinbar neues Modell mit einem ATmega168 im TQFP 32
Gehäuse. Ansonsten ist eigentlich nicht viel anders an der Platine wie
bei den Version mit Dual-inline Gehäuse.
Gruß wernerP
werner P. schrieb:> Könnte es sein, das AVRdude Probleme mit dem Bootloader vom Arduino hat.
Das ist ja kein Bootloader, sondern ein separater Prozessor. Der
wiederum muss das /RESET des eigentlichen Arduino-Prozessors erstmal
aktivieren, deshalb funktioniert es auch nicht mit -p stk500v1,
sondern immer nur mit -p arduino. (Leider haben die Jungs von
Arduino früher ein gehacktes AVRDUDE mit verteilt, bei dem sie sich
nicht die Mühe gemacht haben, einen eigenen arduino-Programmer zu
erzeugen, sondern stk500v1 gehackt hatten.)
Die Fehlermeldung im ersten Beitrag hat aber andere Ursachen: wenn
man unter Windows eine komplette -U-Option mit dem vollständigen
Pfad (einschließlich "Laufwerk") angeben will, dann muss die
abschließende Bezeichnung des Dateiformats (hier also ":i" für
"Intel Hex") zwingend angegeben werden. Anders ist AVRDUDE nicht
in der Lage, die Optionen
1
-U flash:w:f:r
(Datei "f" soll als "raw binary" in den Flash geschrieben werden)
und
1
-U flash:w:c:f
(Datei "c:f" soll mit automatischer Formaterkennung in den Flash
geschrieben werden)
auseinander zu klamüsern. Im zweiten Beispiel würde es "f"
als Bezeichnung des Dateiformats vermuten (da es nach dem dritten
Doppelpunkt steht), und nicht als Datei "c:f". Daher muss man
1
-U flash:w:c:f:a
schreiben.
Allerdings deutet die Antwort 0x00 darauf hin, dass da irgendwas
grundlegend mit der Kommunikation im Argen ist. Man kann beim
STK500-v1-Protokoll die serielle Kommunikation übrigens einfach mit
einem Terminalprogramm "zu Fuß" testen. Wenn man eine 0, gefolgt
von einem Leerzeichen sendet, dann muss die Antwort 0x14 0x10
lauten. Sendet man eine 1 (ASCII 0x21), gefolgt von einem
Leerzeichen, dann kommt als Antwort 0x14 "AVR STK" 0x10.
Kann ich bestätigen. Das :i sieht man auch in der Kommandozeile an
AVRDUDE, wenn man die Arduino-IDE spioniert.
Der Schlüssel für die Funktion wird der rechtzeitige RESET des Atmega168
auf dem Arduinoboard (welches genau?) vor dem Flashen sein.
Durch den RESET wird ja der Bootloader auf dem Arduinoboard aktiviert,
so dass er anschliessend mit dem AVRDUDE zusammen arbeitet.
Im ersten Beitrag soll die Zeile
> mode com7 BAUD=19200 DATA=8 PARITY=N dtr=on
und dort konkret das dtr=on den RESET auslösen.
Nun gibt es Arduinoboards, deren RESET auf die das Wackeln auf der DTR
Leitung reagieren und es gibt welche, die auf das Wackeln auf der RTS
Leitung reagieren...
Statt der mode Zeile könnte man auch mal eine Pause im Batchfile
probieren den RESET-Button auf dem Arduinoboard manuell drücken (plus
ENTER um die Pause aufzuheben). Das wäre unabhängig von der DTR oder RTS
Problematik.
Die RESET-Maßnahme sollte mit modernen AVRDUDE Versionen (unter anderem
auch mit deiner avrdude: Version 5.10, compiled on Jan 19 2010 at
10:45:23 siehe c:\Output.txt) und arduino als Programmertyp nicht mehr
nötig sein (so wie Jörg auch geschrieben hat). AVRDUDE macht dabei den
Reset im Programm nach der DTR und der RTS Methode.
http://www.mail-archive.com/avrdude-dev@nongnu.org/msg01815.html
Eine weitere positive Maßnahme wäre die Erhöhung der Baudrate von 19200
auf 57600.
Hallo Jörg, hallo Helfer,
vielen Dank für Eure Antworten.
Sowas habe ich mir schon gedacht, dass der Reset vom FT232RL über DTR,
bzw. RTS ausgelößt wird. Der RTS hängt über 100 Ohm am Reset, der DTR
über 100nF auch am Reset des Prozessors. Das mitgelieferte Schaltbild
paßt leider nicht ganz zu meinem Board, dort ist der 28 polige Prozessor
gezeichnet. Auch finde ich die eingezeichnete Brücke in der DTR-Leitung
(JSR) nicht auf meinem Board nicht (gegrüßt sei Franzis). Das Board hat
die Version 1.2.
Mal sehen ob ich morgen dazu komme die Kommandozeile zu hacken. Auf
jeden Fall werde ich das mit der Pause mal ausprobieren. Ich
experimentiere mal mit dem DTR, bzw. dem RTS. Es wäre ja möglich, dass
ich von meinem Script aus den DTR garnicht aktivieren darf, damit
AVRdude den Reset auslöst. Ich hatte halt gedacht, da ist eine RS232 im
Spiel (Anzeige im mode) und DTR muss auf jeden Fall aktiv sein. Es fragt
sich nur, wer spielt hier Terminal und wer Data set :-).
Gruß wernerP.
Ah, jetzt kommen wir der Sache näher.
Der "Arduino" von Franzis ist eigentlich ein Freeduino, ein
kompatibler zu Arduino Duomilanova (s. Seiten 36-37 in
http://www.elv-downloads.de/Assets/Produkte/9/951/95116/Downloads/95116_Leseprobe.pdf)
IMHO seltsam, dass man ein "Lernpaket Arduino" bewirbt und dann den
Nachbau Freeduino benutzt. Kann man verstehen, muss man aber nicht.
Bei älteren Arduino Duomilanova besteht der Jumper RESET-EN aus einer
Lötbrücke direkt zwischen USB-Buchse und FT232L Chip vgl.
http://www.arduino.cc/en/Main/ArduinoBoardDuemilanove Ab Werk ist das
Auto-Reset Feature aktiviert, d.h. zwischen den Lötpads des RESET-EN ist
eine Leiterbahn gezogen, die man zum Abschalten des Auto-Reset
durchtrennen kann. Mit einer Lötbrücke über RESET-EN kann man dann das
Auto-Reset wieder ermöglichen. Bei neueren Arduino Duomilanova fehlt
dieses Durchtrennfeature (zum Missvergnügen einiger
Shield-Entwickler/User).
Beim Franzis Board ist das laut Schaltplan anders gelöst. Der Jumper
in der DTR Leitung ist im Franzis-Schaltplan mit JRS bezeichnet.
(s. Seite 38 in
http://www.elv-downloads.de/Assets/Produkte/9/951/95116/Downloads/95116_Leseprobe.pdf)
Es gibt anscheinend keine Leiterbahn dazwischen. D.h. der Jumper
müsste gesetzt sein, damit ein Auto-Reset über DTR überhaupt erst
möglich ist. Das widerspricht deiner erfahrung, dass das Programmieren
aus der Arduino-IDE heraus problemlos ist (d.h. Aotoreset funktioniert
irgendwie).
In Produktfotos finde ich den JRS aber nicht. Müsste man an der vor sich
liegenden Platine oder guten Fotos der beiden Platinenseiten genauer
untersuchen.
Andere Vorgehensweise...
Ich habe mal eine Mitschrift gemacht, wie meine Arduino-IDE den bei der
IDE enthaltenen AVRDUDE aufruft. Dazu habe ich die Datei preferences.txt
im Arduinopaket gesucht (bei mir im Ordner lib) und darin die Zeile
1
upload.verbose = true
ergänzt, um viel AVRDUDE Debugausgabe zu bekommen. Ohne diese Zeile ist
upload.verbose auf false (= keine Debugausgabe) eingestellt.
Die Debugausgabe selbst kann mit der Maus im Arduino-IDE Fenster
markiert und mit CONTROL-C kopiert werden. CONTROL-V dann zum Einfügen
hier:
1
Binary sketch size: 450 bytes (of a 14336 byte maximum)
Nicht wundern! Es ist klar, warum der Upload bei mir scheitert: Ich habe
kein Arduinoboard angeschlossen, sondern die IDE blind bedient.
Ich empfehle dir dringend, ebenfalls eine solche Mitschrift zu machen.
Das erleichtert die Suche nach Lösungen ungemein!
Was dann noch offen wäre:
# Die original Kommandozeile aus der Arduino-IDE in dem Batchfile
verwenden.
# Das ggf. neuere AVRDUDE und AVRDUDE.conf aus den WinAVR Tools mit den
ggf. älteren aus der Arduino-IDE zu vergleichen.
# Die manuelle Reset-Methode auszuprobieren. Wie oben beschrieben
unmittelbar vor dem Start von AVRDUDE odr vielleicht auch unmittelbar
nach dem Start von AVRDUDE.
Hallo Helfer,
das mit dem upload.verbose hat mich ein ganzes Stück weiter gebracht.
Das Ergebnis siehe beiliegendes File. Es hnadelt sich um ein avrdude:
Version 5.4-arduino.
Das Interessante, sie verwenden mit -CG ein 408 kByte großes
Konfigurationsfile avrdude.conf.
An der riesigen Command-line wundert mich schon einiges:
1. -v -v -v -v versteht das avrdude nicht beim ersten mal?
2.-patmega168 und -P\\.\COM7 ich finde in meiner Doku v5.11 nur -P
<port>
Was in meinem Script fehlt, natürlich der Config-File -CG <...> und das
Format am ende von -U<flash:w:...:i>
Du hattest Recht mit der Kommandozeile, mit der richtigen Einstellung
funktioniert es auch.
Ich war von Anfang an skeptisch mit Fran... . Die Leute haben sich immer
noch nicht an ein offenes Umgehen mit ihrer Kundschaft gewöhnt. Aber ich
muß mich bei Euch und FRAN... bedanken, das war ein guter
Schnelleinstieg in die Kommunikation mit AVRdude und Arduino. Das sind
die verborgenen Chancen, die man mit solchen Lehrpaketen haben kann,
wenn man entsprechende Berater findet.
Nochmals Danke und Gruß wernerP.
> Es hnadelt sich um ein avrdude:> Version 5.4-arduino.
Also hornalt. ;-) Dort musst du -c stk500v1 benutzen, das ist ja
deren gehackte Version.
Wenn du AVRDUDE 5.10 (oder 5.11.1, das wäre die aktuelle) benutzt,
dann stattdessen -c arduino.
> Das Interessante, sie verwenden mit -CG ein 408 kByte großes> Konfigurationsfile avrdude.conf.
Was ist daran interessant? Mittlerweile ist es bereits über 500 KiB
groß.
> An der riesigen Command-line wundert mich schon einiges:> 1. -v -v -v -v versteht das avrdude nicht beim ersten mal?
Mit jedem -v wird der `verbosity level' erhöht. Mehr als 4 hat aber
meines Wissens keine weitere Wirkung, mit 4 jedoch bekommt man den
kompletten Dump der Kommunikation.
> 2.-patmega168 und -P\\.\COM7 ich finde in meiner Doku v5.11 nur -P> <port>
-p ist der "part name", also der AVR-Typ. -P nennt die Schnittstelle.
> Was in meinem Script fehlt, natürlich der Config-File -CG <...>
Die Option heißt übrigens -C <filename>. Wenn du -CG schreibst, würde
"G" als Dateiname angenommen werden.
Die Option ist nur nötig, wenn sich die Konfigurationsdatei nicht da
befindet, wo sie beim Compilieren mittels ./configure festgelegt
worden war. Nun gut, auf Windows wird sie fast nie an dieser Stelle
liegen ...
Klasse, dass du jetzt ein Stück weiter gekommen bist.
Die mehrfachen -v in der Kommandozeile bewirken pro -v eine immer
ausführlichere Debugausgabe. Ein -v schaltet die erste Debuginfo an
(Version etc.); die weiteren dann bis zum Protokoll jedes einzelnen
übertragen Bytes...
Hallo,
ich muste vorhin schnell was erledigen, da hab ich den Anhang in der
Eile vergessen. Hier ist er.
Das mit dem "-v ... -v" ist nicht besonders anwenderfreundlich. Besser
von meiner Seite wäre -v1, ... oder -v4.
Ich weiß im Moment noch nícht welche Version ich verwende, muß ich erst
ausprobieren ob es auch mit 5.11 und vor allem mit der neuen
Config-Datei funktioniert.
Das mit -p und -P hab ich leider übersehen. Aber normalerweise sind die
Optionen in der Doku alphabethisch sortiert, aber das muß so ein
...UX-Problem zu sein. Das Alphabet startet manchmal mit p, b, c, ... P
usw. :-).
Was ist eigentlich mit der preferenzes.txt?
Ist die in die avrdude.conf integriert?
Gruß wernerP.
Hallo,
habs vergessen, mit -v -v -v -v bekommt man auch die Kommandozeile
ausgegeben.
Ich weiß nicht wievele -v man dazu braucht, aber mit 4 geht es.
Was bedeutet nun -vv ? Es steht, glaube ich nicht in der Doku.
Gruß wernerP.
-vv ist eine Zusammenfassung von -v -v
preferences.txt ist die Konfigurationsdatei der Arduino-IDE
(Entwicklungsumgebung) und avrdude.conf ist die der
ISP-Programmiersoftware AVRDUDE. Die haben nichts direkt miteinander zu
tun.
wernerP schrieb:> Das mit dem "-v ... -v" ist nicht besonders anwenderfreundlich. Besser> von meiner Seite wäre -v1, ... oder -v4.
Nö. Meist braucht man ja nur ein einzelnes -v, und dann wäre der
Parameterzwang zu -v1 weniger anwenderfreundlich. -vvvv braucht
man ja nur zum Debuggen.
> Das mit -p und -P hab ich leider übersehen. Aber normalerweise sind die> Optionen in der Doku alphabethisch sortiert, aber das muß so ein> ...UX-Problem zu sein.
Was hat das mit Unix zu tun?
Der Autor hat sich einfach entschieden, entgegen den Gepflogenheiten
die Option -p obendran zu setzen, wahrscheinlich, weil es (wenn man
sich einen Standard-Programmer im .avrduderc eingerichtet hat) der
einzige Pflichtparameter ist; entsprechend steht das ja auch in der
SYNOPSIS-Zeile. Die gibt's aber vermutlich nur in der man page,
nicht in der weitestgehend parallel gepflegten texinfo-Doku. Für
alle Fälle hier nochmal:
1
AVRDUDE(1) BSD General Commands Manual AVRDUDE(1)
2
3
NAME
4
avrdude - driver program for ''simple'' Atmel AVR MCU programmer
Hallo Helfer,
vielen Dank für Deine Antwort.
Mich irritiert da, dass es in Arduino beide Dateien gibt
preferences.txt --> arduino-0022\lib
avrdude.conf --> hardware\tools\avr\etc
Das "upload.verbose = true" hat in der preferences.txt funktioniert.
Es ist dann wohl eine reine Arduino-Datei, oder?
Gruß wernerP
Hallo Jörg,
bitte beachte den Smily, war nicht so gemeint.
Nur wenn man dummerweise das -P gefunden hat, dann vermutet man nicht 5
Seiten vorher noch ein -p.
Ich berichtige: Besser von meiner Seite wäre -v, -v1 ... oder -v3.
Wenn ich die Ausgabe umlenken will muß es bei verbose-Grad 4 heißen:
-vvvv > "output.txt" 2>&1 Nein! Funktioniert nur mit -vv.
Übrigens an alle:
Mit der AVRdude Version 5.11 funktioniert das Flushen nur wenn man
-carduino und nicht stk500v1 !!!!!
angibt.
Mit der Originalversion avrdude 5.4 funktioniert es auch mit stk500v1.
Die .conf-Files müssen immer zur avrdude-Version passen.
Die Leitung DTR an der V.24/RS232 schalte ich im Sript auch nicht mehr
ein.
Gruß wernerP.
werner P. schrieb:> Ich berichtige: Besser von meiner Seite wäre -v, -v1 ... oder -v3.
Geht nicht. Eine Option nimmt entweder Parameter oder eben keine,
aber nicht mal so, mal so. Anders wäre es nicht machbar, dass man
Optionen zusammenfassen kann: -tuF ist äquivalent zu -t -u -F (oder
eben, -vvvv ist äquivalent zu -v -v -v -v).
> Wenn ich die Ausgabe umlenken will muß es bei verbose-Grad 4 heißen:>> -vvvv > "output.txt" 2>&1 Nein! Funktioniert nur mit -vv.
Dann musst du dich bei deiner Shell beklagen. Selbstverständlich
funktioniert das mit einer "richtigen" Shell, und ich bin mir
eigentlich auch reichlich sicher, dass ich das bereits im cmd.exe
getan habe. Habe aber gerade kein Windows zur Hand zum Testen.
Es sollte der Shell auch schnurzpiepegal sein, wie das Kommando
aufgebaut ist, was ihre Ausgabeumlenkung betrifft, denn diese muss
sie zusammenbauen, bevor sie das Kommando überhaupt aufruft.
> Mit der Originalversion avrdude 5.4 funktioniert es auch mit stk500v1.
Nein. Mit einem Original AVRDUDE 5.4 kannst du den Arduino
vergessen. Nur mit der von den Arduino-Leuten gehackten Version
5.4 geht das mit -c stk500v1, weil sie zu faul waren, für ihren Hack
wenigstens einen neuen Programmer-Namen einzuführen.
Beschwer' dich bei den Arduino-Fritzen für diesen Mist!
> Die .conf-Files müssen immer zur avrdude-Version passen.
Die sind nur in eine Richtung kompatibel, da hin und wieder die
Syntax erweitert wird, um neue Features, neue Programmer usw. darin
unterbringen zu können. Eine alte Configdatei mit einer neuen
Programmversion sollte gehen, allerdings verzichtest du dann
zwangsläufig auf einige Dinge, die mittlerweile hinzu gekommen sind.
Hallo Jörg,
Du hast recht, das ist eben die Qualität des Franzis-Verlags :-(((.
Optimierte Gewinne, nur wer verkauft hier überhaupt Hardware mit der man
morgen noch was anfangen kann. Jeder versucht sich von seinen
Mitberwerbern abzugrenzen und schon ist nichts mehr kompatibel. Oder die
Software wird bir zur Unkenntlichkeit verbogen.
Die Config-Datei von der AVRdude 5.4 arduino lief nicht mit AVRdude
5.11.
Ich meinete auch nicht die Originalversion, sondern die von arduino.
Warum soll -v, -v1 ... oder -v3 nicht gehen. Das liegt dann höchstens an
dem Wildwuchs der Optionen. Eine Option 1, 2 oder 3 macht für mich
keinen Sinn und sag nicht das könnte man programmtechnisch nicht
beherschen. Gemischte kurze Optionen, wie -v und lange, wie -verbose
geht ja auch.
Gruß wernerP.
werner P. schrieb:> Warum soll -v, -v1 ... oder -v3 nicht gehen.
Weil die Optionssyntax unter Unix nun einmal vorschreibt, dass eine
Option entweder immer oder nie ein Argument nimmt, und genau so ist
die Bibliotheksfunktion getopt(3) implementiert, die hier benutzt
wird.
Dies künstlich mit Pseudo-Optionen à la -1 ... -3 aufzublasen, die
dann nur im Zusammenhang mit der Option -v diese in ihrer Wirkung
verstärken, wäre noch weniger schlüssig. Dann wäre -3v beispielsweise
dasselbe wie -v -3 oder -v3. Nee, tut mir leid, deine Argumentation
überzeugt mich nicht. Wer zum Debuggen zu faul ist, statt -v4 einmal
-vvvv zu schreiben, dem kann ich leider nicht helfen.
Lange Optionen haben damit übrigens nichts zu tun. Davon abgesehen,
dass AVRDUDE diese nicht unterstützt, auch dort gilt die Grundregel,
dass die Option entweder immer oder nie mit Argumenten gerufen wird.
Also mal --verbose und mal --verbose=4 ist da genauso wenig.
(Ich weiß, es gibt zuweilen Tools, die davon abweichen, aber man muss
nun nicht grundlos dem schlechten Beispiel folgen.)