Datum:
Angehängte Dateien: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\AVR-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.
Datum:
Dein AVRdude.bat
REM echo %1 if %1=="" goto fertig mode com7 BAUD=19200 DATA=8 PARITY=N dtr=on F:\WinAVR-20100110\bin\avrdude -c stk500v1 -p m168 -P \\.\com7 -U flash:w:G:\Projekte\AVR\Studio-5\%1\%1\Debug\%1.hex if %ERRORLEVEL%==0 goto fertig Pause :fertig exit |
Laut deiner Beschreibung hat AVRDUDE Probleme mit dem Format der Datei G:\Projekte\AVR\Studio-5\AVR-Frequenzzaehler\AVR-Frequenzzaehler\Debug\AVR-Frequenzzaehler.hex aber nicht mit der Hardware an sich. Dass die Hardware richtig angesprochen wird, könntest du nachprüfen mit
REM echo %1 if %1=="" goto fertig mode com7 BAUD=19200 DATA=8 PARITY=N dtr=on F:\WinAVR-20100110\bin\avrdude -c stk500v1 -p m168 -P \\.\com7 -vv > "C:\output.txt" 2>&1 if %ERRORLEVEL%==0 goto fertig Pause :fertig exit |
und dann die Ausgabedatei C:\output.txt betrachten. Ich würde die Datei G:\Projekte\AVR\Studio-5\AVR-Frequenzzaehler\AVR-Frequenzzaehler\Debug\AVR-Frequenzzaehler.hex zum Betrachten hier abladen und/oder es mit einem kürzeren Pfad probieren z.B. mit einer lokalen Kopie
REM echo %1 copy G:\Projekte\AVR\Studio-5\%1\%1\Debug\%1.hex %1.hex if %1=="" goto fertig mode com7 BAUD=19200 DATA=8 PARITY=N dtr=on F:\WinAVR-20100110\bin\avrdude -c stk500v1 -p m168 -P \\.\com7 -U flash:w:%1.hex if %ERRORLEVEL%==0 goto fertig Pause :fertig exit |
Datum:
Angehängte Dateien:Hallo Helfer, vielen Dank für Deine umfangreiche Antwort. Hier die Output.txt mit arduino. Mit stk500v1 kommt das Gleicher heraus. Gruß wernerP
Datum:
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=1187909552 http://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:
#include <stdio.h> int main(int argc, char **argv) { while(argc--) { printf("%s ", *argv++); } return 0; } |
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.
Datum:
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
Datum:
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
-U flash:w:f:r |
(Datei "f" soll als "raw binary" in den Flash geschrieben werden) und
-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
-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.
Datum:
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... Eine weitere positive Maßnahme wäre die Erhöhung der Baudrate von 19200 auf 57600.
Datum:
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.
Datum:
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/...) 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/...) 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
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:
Binary sketch size: 450 bytes (of a 14336 byte maximum)
E:\ELEKTRONIK\SB_AVR\ARDUINO-0022\hardware/tools/avr/bin/avrdude -CE:\ELEKTRONIK\SB_AVR\ARDUINO-0022\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega168 -cstk500v1 -P\\.\COM1 -b19200 -D -Uflash:w:f:\temp\build6209700480019652803.tmp\BareMinimum.cpp.hex:i
avrdude: Version 5.4-arduino, compiled on Oct 11 2007 at 19:12:32
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
System wide configuration file is "E:\ELEKTRONIK\SB_AVR\ARDUINO-0022\hardware/tools/avr/etc/avrdude.conf"
Using Port : \\.\COM1
Using Programmer : stk500v1
Overriding Baud Rate : 19200
avrdude: ser_open(): setting dtr
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Recv:
avrdude: stk500_getsync(): not in sync: resp=0x05
avrdude: Send: Q [51] [20]
avrdude: Recv:
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51
avrdude done. Thank you.
|
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.
Datum:
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.
Datum:
wernerP schrieb: > Das Ergebnis siehe beiliegendes File.
return EATTACHMENTMISSING; |
> 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 ...
Datum:
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...
Datum:
Angehängte Dateien: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.
Datum:
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.
Datum:
-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.
Datum:
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:
AVRDUDE(1) BSD General Commands Manual AVRDUDE(1)
NAME
avrdude - driver program for ''simple'' Atmel AVR MCU programmer
SYNOPSIS
avrdude -p partno [-b baudrate] [-B bitclock] [-c programmer-id]
[-C config-file] [-D] [-e] [-E exitspec[,exitspec]] [-F]
[-i delay] [-n] [-O] [-P port] [-q] [-s] [-t] [-u]
[-U memtype:op:filename:filefmt] [-v] [-x extended_param] [-V]
[-y] [-Y]
DESCRIPTION
Avrdude is a program for downloading code and data to Atmel AVR micro-
controllers. Avrdude supports Atmel's STK500 programmer, Atmel's AVRISP
...
|
Datum:
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
Datum:
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.
Datum:
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.
Datum:
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.
Datum:
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.)