Forum: Mikrocontroller und Digitale Elektronik ATtiny 404 und avrdude


von Rudolf M. (rudolf_58)


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 ?

von Εrnst B. (ernst)


Lesenswert?

Welche Version von AVRDude hast du installiert?
Hast du die Config-Datei von Hand verändert, oder eine andere als die 
mitgelieferte reinkopiert?

von Rudolf M. (rudolf_58)


Lesenswert?

Die Version ist die 7.1. Die config ist die mitgelieferte, darin findet 
sich auch der 404 in einer Zeile jenseits der 10tausender Zeile.

von Εrnst B. (ernst)


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.

: Bearbeitet durch User
von Rudolf M. (rudolf_58)


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.

von Εrnst B. (ernst)


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.

von Rudolf M. (rudolf_58)


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.

von Εrnst B. (ernst)


Lesenswert?

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.

von Rudolf M. (rudolf_58)


Lesenswert?

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.

von Rudolf M. (rudolf_58)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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

von Εrnst B. (ernst)


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

von Rudolf M. (rudolf_58)


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.

von Stefan F. (Gast)


Lesenswert?

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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von Rudolf M. (rudolf_58)


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.

von C-hater (c-hater)


Lesenswert?

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.

von Rudolf M. (rudolf_58)


Lesenswert?

Wieder etwas dazugelernt. Sollte ich jemals in C ankommen weiss ich was 
es mit dem elf file auf sich hat. Danke !

von Stefan F. (Gast)


Lesenswert?

Ausführbare Programme und Bibliotheken haben unter Linux übrigens auch 
das Elf Format. Es ist sozusagen das Linux Pendant zu *.exe und *.dll.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

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.