Forum: Compiler & IDEs Diamex EXA-Prog mit avrdude unter Linux


von N. G. (newgeneration) Benutzerseite


Lesenswert?

Hallo zusammen,

eben liegt ein neuer [Diamex EXA-Prog Programmer]. Dieser soll laut 
Herstellerseite unter anderem die typischen AVRs über ISP programmieren 
können. Dafür ist laut Dokumentation und auch laut diesem 
Beitrag "Re: Diamex EXA-PROG mit AVRDUDE uter Linux (Mint)" das 
STK500-Protokoll zu verwenden.

Stecke ich den Programmer an, meldet sich dieser brav als solcher an
1
Okt 02 22:32:03 infinitypro kernel: usb 3-3.2: new full-speed USB device number 17 using xhci_hcd
2
Okt 02 22:32:03 infinitypro kernel: usb 3-3.2: New USB device found, idVendor=16c0, idProduct=2a9b, bcdDevice=45.80
3
Okt 02 22:32:03 infinitypro kernel: usb 3-3.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
4
Okt 02 22:32:03 infinitypro kernel: usb 3-3.2: Product: EXA-PROG
5
Okt 02 22:32:03 infinitypro kernel: usb 3-3.2: Manufacturer: ERFOS
6
Okt 02 22:32:03 infinitypro kernel: usb 3-3.2: SerialNumber: 58466-86580-826
7
Okt 02 22:32:03 infinitypro kernel: cdc_acm 3-3.2:1.0: ttyACM0: USB ACM device
Es erscheint natürlich auch die Datei _/dev/ttyACM0_, die von 
Mitgliedern der Gruppe uucp schreib- und lesbar ist (ich bin Mitglied 
dieser Gruppe):
1
$ ls -l /dev/ttyACM0
2
crw-rw---- 1 root uucp 166, 0  2. Okt 22:32 /dev/ttyACM0
3
$ groups
4
power adbusers users uucp wheel
So weit sieht erst einmal alles richtig aus. Nun das eigentliche 
Problem:

Nutze ich ein avrdude aus meinen Paketquellen (Arch Linux, Version 8.0), 
so wird meistens beim Aufruf sofort das USB-Gerät ab- und wieder 
angemeldet, was avrdude entsprechend quittiert:
1
$ avrdude -c stk500v2 -P /dev/ttyACM0
2
OS error: cannot open port /dev/ttyACM0: Input/output error
3
Error: unable to open port /dev/ttyACM0 for programmer stk500v2
4
5
Avrdude done.  Thank you.
6
$ journalctl -e | tail -9
7
Okt 02 22:37:37 infinitypro kernel: usb 3-3.2: reset full-speed USB device number 20 using xhci_hcd
8
Okt 02 22:37:37 infinitypro kernel: usb 3-3.2: USB disconnect, device number 20
9
Okt 02 22:37:37 infinitypro kernel: usb 3-3.2: new full-speed USB device number 21 using xhci_hcd
10
Okt 02 22:37:37 infinitypro kernel: usb 3-3.2: New USB device found, idVendor=16c0, idProduct=2a9b, bcdDevice=45.80
11
Okt 02 22:37:37 infinitypro kernel: usb 3-3.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
12
Okt 02 22:37:37 infinitypro kernel: usb 3-3.2: Product: EXA-PROG
13
Okt 02 22:37:37 infinitypro kernel: usb 3-3.2: Manufacturer: ERFOS
14
Okt 02 22:37:37 infinitypro kernel: usb 3-3.2: SerialNumber: 58466-86580-826
15
Okt 02 22:37:37 infinitypro kernel: cdc_acm 3-3.2:1.0: ttyACM0: USB ACM device
Man erkennt, dass das USB-Gerät einen Reset durchläuft und als neues 
Gerät (Nummer 21 statt 20) auftaucht. Dass avrdude das nicht mag, ist 
nachvollziehbar.

Kennt jemand diesen Fehlerfall und weiß Rat?

Vielen Dank im Voraus!

[Diamex EXA-Prog Programmer]: 
https://www.diamex.de/dxshop/EXA-PROG-AVR-ISP-und-UPDI-STM32-NXP-ESP

von Frank K. (fchk)


Lesenswert?

Das deutet auf einen Fehler in der Firmware hin. Der Controller stürzt 
ab und startet neu.

Ich habe mit den Herstellertools immer die besseren Erfahrungen gemacht. 
Auch wenn diese meist teurer sind.

fchk

von Dieter S. (ds1)


Lesenswert?

Ich kenne den Diamex EXA-PROG unter Windows. Nur um sicher zu sein, das 
Testprogramm (Exa_Tool_135.exe oder ähnlich) funktioniert?

Und die DIP Schalter stehen auf den richtigen Positionen? Je nach 
Einstellung verwendet der EXA-PROG unterschiedliche Protokolle zur 
Kommunikation mit dem PC.

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Manchmal ist das Problem viel banaler - wenn das verwendete USB-Kabel 
nicht das beste ist, kann das auch lustige Nebeneffekte produzieren.

von N. G. (newgeneration) Benutzerseite


Lesenswert?

Hallo zusammen und danke für eure Beiträge!

ich habe auf Anraten das Ganze einmal unter Windows probiert. Dafür habe 
ich zwei Tests durchgeführt:
Zuerst einmal habe ich das mitgelieferte Self-Test-Programm ausgeführt, 
welches augenscheinlich alle Pins auf Funktion überprüft. Dabei wurden 
keine Fehler gefunden. Das Programm zeigt auch an, dass die aktuellste 
Firmware installiert sei.
Anschließend habe ich das gute alte AVR Studio 4.19 installiert, welches 
ja eine native Unterstützung des STK500 (den der Programmer emuliert) 
bietet. Damit kann ich ohne Probleme die Signatur/Fueses/etc auslesen 
und den Controller programmieren (in der gleichen Schaltung wie beim 
Versuch unter Linux, daran liegt es also nicht). Die DIP-Schalter passen 
demnach auch (1 oben, 2-4 unten: entspricht 5V-Programmierung mittels 
STK500-ISP-Protokoll). Auch das Kabel sollte demnach ausgeschlossen 
werden.

Kann sich jemand vorstellen, warum das unter Windows geht, unter Linux 
aber nicht?

Viele Grüße!

von Stephan S. (uxdx)


Lesenswert?

Merkwürdig, dass /dev/ttyACM0 bei Dir in der Gruppe uucp ist. Bei mir 
(sowohl Ubuntu als auch LinuxMint als auch Debian) sind die (und 
/dev/ttyUSBx) immer in der Gruppe dialout. Der input/output-error würde 
dazu passen.

Wie wird das denn aktiviert: mittels udev-Regel?

Edit: Sehe gerade, Du nutzt Arch, da kann das anders sein. Schau Dir 
trotzdem mal die udev-Regel an, falls da eine genutzt wird.

: Bearbeitet durch User
von Dieter S. (ds1)


Lesenswert?

Warum "-c stk500v2" und nicht "-c stk500", das könnte eventuell das 
Problem sein.

: Bearbeitet durch User
von N. G. (newgeneration) Benutzerseite


Lesenswert?

Hallo und danke für eure Beiträge!

Stephan S. schrieb:
> Edit: Sehe gerade, Du nutzt Arch, da kann das anders sein. Schau Dir
> trotzdem mal die udev-Regel an, falls da eine genutzt wird.

Tatsächlich ist es korrekt; Arch nutzt die Gruppe uucp (wobei mir 
weder Grund noch Histroie dafür bekannt sind). Siehe 
https://wiki.archlinux.org/title/Users_and_groups#User_groups. Probiere 
ich das Ganze ohne Mitglied der Gruppe zu sein, dann kommt auch ein 
anderer Fehler (permission denied statt Input/output error).
1
OS error: cannot open port /dev/ttyACM0: Permission denied
2
Error: unable to open port /dev/ttyACM0 for programmer stk500v2
3
4
Avrdude done.  Thank you.

Dieter S. schrieb:
> Warum "-c stk500v2" und nicht "-c stk500", das könnte eventuell das
> Problem sein.
Anscheinend führt ein "stk500" dazu, dass er zuerst das 
STK500v2-Protokoll versucht und, falls das nicht zum Erfolg führt, auch 
das STK500v1-Protokoll (zumindest erkläre ich es mir selbst anhand der 
Ausgaben so, ich habe nicht in den Code geschaut):
1
OS error: cannot open port /dev/ttyACM0: Input/output error
2
OS error: cannot open port /dev/ttyACM0: Input/output error
3
Error: probing stk500v2 failed, as did stk500v1; perhaps try -c stk500v1
4
Error: unable to open port /dev/ttyACM0 for programmer stk500
Auch ein Test mit "stk500v1" brachte den gleichen Fehler und natürlich 
damit auch keinen Erfolg.

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.