Ich möchte einen ATtiny 404 programmieren. Mein Programmer ist EXA Prog mit UPDI Funktion. In der Beschreibung ist AVRDUDE als Progrmmiersoftware angegeben. AVRDUDE ist installiert auf c:\avr_dude\...., darin befindet sich auch die avrdude.config Datei. Das Testprogramm erkennt den Programmer auf COM5. Schon der Versuch eine Verbindung zum 404 scheitert leider. Meine Eingabe in der Kommandozeile: avrdude -c C:\avr_dude\avrdude.config -P com5 -p t404 wird mit der Fehlermeldung: avrdude error: syntax error [C:\AVR_Dude\avrdude.conf:7] avrdude error: unable to process system wide configuration file C:\AVR_Dude\avrdude.conf abgebrochen. Da steckt wahrscheinlich mehr als nur ein Fehler drin. Ich hätte nun dazu folgende Fragen: Wie sieht die Syntax aus um den Prozessor zu verifizieren ? Wie sieht die Syntax aus um ein hex file zu übertragen ?
Welche Version von AVRDude hast du installiert? Hast du die Config-Datei von Hand verändert, oder eine andere als die mitgelieferte reinkopiert?
Die Version ist die 7.1. Die config ist die mitgelieferte, darin findet sich auch der 404 in einer Zeile jenseits der 10tausender Zeile.
Und warum musst du die Konfigurationsdatei an der Kommandozeile angeben, findet der die nicht selber? Was steht in Zeile 7? Sollte eigentlich eine Kommentarzeile sein. Warum gibst du "avrdude.config" an, Rudolf M. schrieb: > avrdude -c C:\avr_dude\avrdude.config -P com5 -p t404 aber er liest "avrdude.conf"? > avrdude error: syntax error [C:\AVR_Dude\avrdude.conf:7] die Optionen "-C" und "-c" machen verschiedene Dinge, auch wenn sie sich nur in Groß/Kleinschreibung unterscheiden.
:
Bearbeitet durch User
Deswegen frage ich ja nach einer korrekten Syntax. Mir ist schon klar dass jeder Parameter eine andere Bedeutung hat, die Reihenfolge ein Rolle spielt usw.. Ich habe diese Syntax in einer Beispieldarstellung gesehen und an meine Umgebung angepasst ( com und prozessor ). Das sind meine ersten Schritte mit AVRDUDE. Bisher bin ich ISP ausgekommen und habe mich nicht wirklich damit weiter beschäftigt. Für mich war entscheidend dass die Datei in den Prozessor geschrieben wird. Wie das genau funktioniert war mir nicht wichtig.
Schau mal hier Beitrag "Diamex EXA-PROG mit AVRDUDE uter Linux (Mint)" Du brauchst eine "-c" Option für den richtigen Programmer-Typ (passend zur Mäuseklavier-Stellung), "-c stk500", "-c jtag2udpi" ... Du brauchst eine "-C" option, wenn er sein Config-File nicht von selber findet. Du brauchst den Port und den AVR-Typ (hast du schon) Du brauchst eine Option, die angibt, was gemacht werden soll, z.B. "-t" für den Interaktiven Modus.
Ich habe für den Programmer und die config den kompletten Pfad angegeben. Das Ergebnis ist leider negativ. C:\AVR_Dude>avrdude -c C:\avr_dude\jtag2updi -C C:\avr_dude\avrdude.conf -P com5 -p t404 -t avrdude error: syntax error [C:\avr_dude\avrdude.conf:7] avrdude error: unable to process system wide configuration file C:\avr_dude\avrdude.conf Wenn die comments in der config nicht mitzählen ist die Zeile 7 für die Baudrate zuständig. Die habe ich mit 115200 und 9600 probiert. Beides hat nicht gefruchtet.
Lad dir Avrdude nochmal frisch runter, da kommt original kein kaputtes Config-File mit. Rudolf M. schrieb: > -c C:\avr_dude\jtag2updi Wie bist du auf diese Idee gekommen? Ich schrieb: Εrnst B. schrieb: > "-c jtag2udpi" Das ist ein Name, keine Datei.
So wie "t404" der Marker für den Prozessor ist, sollte "jtag2updi" die Adresse für den Programmer sein. Laut Beschreibung emuliert der EXA-PROG beim Aufruf der UPDI Schnittstelle eben eine jtag2 Schnittstelle. Die AVRDUDE Datei hab ich am 3.4.2023 runtergeladen, die ist brandneu.
Ja, das ist mein Fehler, Du hast natürlich recht. Neuer Versuch: avrdude -c jtag2updi -C C:\avr_dude\avrdude.conf -P com5 -p t404 -t avrdude error: syntax error [C:\avr_dude\avrdude.conf:7] avrdude error: unable to process system wide configuration file C:\avr_dude\avrdude.conf
Ich fürchte, du hast noch eine ältere Version von avrdude im Suchpfad installiert. Rufe ihn mal so auf: C:\avr_dude\avrdude.exe -C C:\avr_dude\avrdude.conf -c jtag2updi -P com5 -p t404
Rudolf M. schrieb: > avrdude -c jtag2updi -C C:\avr_dude\avrdude.conf -P com5 -p t404 -t Warum gibst du "-C C:\avr_dude\avrdude.conf" überhaupt an? Εrnst B. schrieb: > Du brauchst eine "-C" option, wenn er sein Config-File nicht von selber > findet. d.H. Nur angeben, wenn es einen wichtigen Grund dafür gibt. "Irgendein Tutorial auf Youtube hat gesagt..." ist kein Grund. Welche Fehlermeldung kriegst du, wenn du das weglässt? Rudolf M. schrieb: > Die AVRDUDE Datei hab ich am 3.4.2023 runtergeladen, die ist brandneu. Hast du die Config-Datei irgendwie modifiziert? "ich hab sie nur kurz in Word aufgemacht und gleich wieder gespeichert" zählt auch als modifizieren. Sicherheitshalber: Εrnst B. schrieb: > Lad dir Avrdude nochmal frisch runter Wobei das hier noch eine längere Geschichte werden kann, wenn du immer nur ¼ der Antworten liest und berücksichtigst...
Vielen Dank für Eure Geduld, das ist ein großer Schritt Richtung Problemlösung. Die Kommunikation mit dem Prozessor scheint zu funktionieren. C:\AVRDUDE>avrdude.exe -C C:\avrdude\avrdude.conf -c jtag2updi -P com5 -p t404 avrdude: AVR device initialized and ready to accept instructions avrdude: device signature = 0x1e9226 (probably t404) avrdude done. Thank you. Meine Frage wäre nun wie die korrekte Syntax für das Programmieren eines hex files aussieht.
Rudolf M. schrieb: > Meine Frage wäre nun wie die korrekte Syntax für das Programmieren eines > hex files aussieht Das steht in der Anleitung von avrdude. Eventuell hilft dir AVRDUDESS auch weiter.
Rudolf M. schrieb: > Meine Frage wäre nun wie die korrekte Syntax für das Programmieren eines > hex files aussieht. Im einfachsten Fall ist es
1 | -U filename.hex |
Du kannst aber genauso gut gleich das ELF-File angeben, die Umwandlung nach Intel Hex ist unnötig. AVRDUDE versteht es seit einigen Jahren, ELF-Files direkt zu lesen. Aber: die vollständige Syntax der Option -U enthält einige Doppelpunkte, die in der oben gezeigten einfachen Form weggelassen werden können; sie lautet:
1 | -U memory:operation:filename:fileformat |
Das hat aber zur Folge, wenn du einen Dateinamen mit Doppelpunkt angeben willst, dass du dann auch alle anderen Felder schreiben musst, damit die Zuordnung der Doppelpunkte eindeutig ist:
1 | -U flash:w:C:\irgendwo\datei.hex:i |
Die Frage, warum du überhaupt
1 | -C C:\avrdude\avrdude.conf |
explizit angibst, hast du aber immer noch nicht beantwortet. Normalerweise kann man die Option -C weglassen.
Nochmals vielen Dank an Euch. Ja es ist so, die Option -C kann weggelassen werden. Ich habe das einfach mitgeschleppt so nach dem Motto 'es kann ja nicht schaden'. Der Hinweis auf AVRDUDESS ist sehr interressant und ich werde mich damit sicher noch weiter beschäftigen. Aber das ist es ja bei diesem Hobby, man stößt als Amateur auf immer neue Sachen und kommt dabei immer tiefer in Wald. Die Option -U .... funktioniert und ich bin damit am Ziel. Die weiterführende Erklärung ist für mich mit einem Fragezeichen verbunden. Ich kann mit einem elf. file nicht wirklich etwas anfangen, würde mich aber sehr interessieren, gibt es dafür eine kurze Erklärung ? Ich bin bisher mit Studio7 ausgekommen und da wird ein .hex file generiert.
Rudolf M. schrieb: > Ich bin bisher mit Studio7 ausgekommen und da wird ein .hex file > generiert. Studio 7 generiert bei C-Projekten typisch eine *.elf UND ein *.hex (und ggf. noch *.eep). Bei Assemblerprojekten wird hingegen nur *.hex (und ggf. noch *.eep) produziert.
Wieder etwas dazugelernt. Sollte ich jemals in C ankommen weiss ich was es mit dem elf file auf sich hat. Danke !
Ausführbare Programme und Bibliotheken haben unter Linux übrigens auch das Elf Format. Es ist sozusagen das Linux Pendant zu *.exe und *.dll.
Stefan F. schrieb: > Es ist sozusagen das Linux Pendant zu *.exe und *.dll. Es ist älter als Linux. ;-) (Und Linux hat anfangs noch das historische a.out benutzt – aber das nur am Rande.) C-hater schrieb: > Bei Assemblerprojekten wird hingegen nur *.hex (und ggf. noch *.eep) > produziert. Weil der Atmel-Assembler ein Absolutassembler ist. Er kann nur eine einzige Datei (ggf. mit Includes) assemblieren und produziert dabei ein Binary, das fest auf den Ziel-Adressbereich zugeordnet ist. Ursprünglich hatte er noch ein eigenes COFF-Format erzeugt (historischer Vorläufer von ELF, den Windows in abgewandelter Form noch heute benutzt), aber das haben sie offenbar irgendwann mal aufgegeben. Andere Assembler (und über den Umweg solcher Assembler auch C und Konsorten) produzieren so genannte verschiebliche Objektdateien, die noch nicht fest auf die Zieladressen zugeordnet sind. Sie werden dann vom Linker (üblicherweise unter Zuhilfenahme von Bibliotheken) zu einem finalen (auf feste Adressen gebundenen) Objekt zusammgefügt. Das Dateiformat sowohl der verschieblichen Objektdateien als auch des Ergebnisses dort ist ELF.
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.