ATtiny 404 und avrdude

OP #7388696
Lesenswert?

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 ?

#7388705
Lesenswert?

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.

OP #7388715
Lesenswert?

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.

#7388723
Lesenswert?

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.

OP #7388735
Lesenswert?

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.

#7388765
Lesenswert?

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...

OP #7388823
Lesenswert?

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.

Moderator Persönliche Seite #7388906
Lesenswert?

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.

OP #7389199
Lesenswert?

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.

Moderator Persönliche Seite #7389603
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren