Forum: Mikrocontroller und Digitale Elektronik welches avrdude unter win für usbasp


von Thomas Z. (usbman)


Lesenswert?

Ich mache gerade erste Gehversuche mit avrdude und einem simplen usbasp 
und habe damit unerwartete Probleme.
Der libusb Treiber ist für das Device installiert und funktioniert, das 
habe ich mit einem kurzen Testprogramm überprüft.

Zuerst habe ich die  v6.4 probiert die bricht aber gleich ob. 
Fehlermeldung ist dass libhidapi-0.dll nicht gefunden wird.

Dann habe ich avrdude-6.3-minggw32.zip probiert. Läßt sich aufrufen 
schaltet aber nicht auf usbasp um
1
>>>: avrdude -u -c usbasp -p usb162 -P usb -B 20.96 -F -U flash:r:"test.hex":a 
2
avrdude.exe: error at C:\avrDude\avrdude.conf:370: programmer type xbee not found
3
avrdude.exe: error reading system wide configuration file "C:\avrDude\avrdude.conf"
ein usb capture mit bushound zeigt keine usbrequests.

Erst das avrdude aus dem avrdudess 2.13 Paket funktioniert wie es soll. 
Da sind auch die usbvendor requests zu sehen.

Hintergrund:

Ich plane avrdude so zu ändern, dass anstelle Vendor Device Requests 
Vendor Interface Requests benutzt werden. Dazu muss ich das Ding dann 
aber funktionsfähig kompilieren können.

von Stefan F. (Gast)


Lesenswert?

Ich benutze unter Windows die Datei, die bei der Arduino IDE 
mitgeliefert ist.

> Ich plane avrdude so zu ändern ...

Hoffentlich hast du einen guten Grund dazu. Nicht dass du deine 
Nachfolger mit dieser Sonderlocke unglücklich machst.

von Thomas Z. (usbman)


Lesenswert?

Stefan ⛄ F. schrieb:
> Hoffentlich hast du einen guten Grund dazu. Nicht dass du deine
> Nachfolger mit dieser Sonderlocke unglücklich machst.

noch ist das nur ein Testprojekt für mich selbst. Hat also keinerlei 
Folgen :-) Ich hab mir die Quellen zu usbasp angeschaut da wird 
überhaupt nicht geprüft ob bRequest 0xC0 für Vendor Device oder 0xC1 für 
Vendor Interface ist. Dem normalen usbasp ist es also egal.

Usbasp hat zunehmend Probleme weil es auf avrusb basiert. (USB3 ports) 
Das funktioniert auf modernen Rechnern nicht mehr zuverlässig.

Die zweite Idee dabei ist das Ding fit für Compound Devices zu machen, 
z.B um die ser Schnittstelle zusätzlich als VCP bereitzustellen.

Wie gesagt im Moment kämpfe ich mit dem Build der avrdude Quellen.

von Stefan F. (Gast)


Lesenswert?

Thomas Z. schrieb:
> Usbasp hat zunehmend Probleme weil es auf avrusb basiert. (USB3 ports)

Welche sind das?
Ich frage, weil mir noch keine Probleme an USB3 Port aufgefallen sind.

Dass die USB Schnittstelle vom USBASP mit der heißen Nadel gestrickt ist 
(Zenerdioden um 5V auf 3,6V herunter zu zwingen), ist mir allerdings 
bewusst.

> um die ser Schnittstelle zusätzlich als VCP bereitzustellen.

Das wäre allerdings ein ziemlich cooles Feature. Wird das open-source?

von Yalu X. (yalu) (Moderator)


Lesenswert?

Thomas Z. schrieb:
> avrdude.exe: error at C:\avrDude\avrdude.conf:370: programmer type xbee
> not found

Du benutzt avrdude 6.3 zusammen mit der avrdude.conf aus 6.4. Das kann
nicht funktionieren.

von Thomas Z. (usbman)


Lesenswert?

Stefan ⛄ F. schrieb:
> Welche sind das?
>
> Ich frage, weil mir noch keine Probleme an USB3 Port aufgefallen sind.

Es funktioniert problemlos sobald ein Hub dazwischen geschaltet ist. 
Wenn der Dongle aber direkt an einem Root Port hängt vielleicht sogar an 
einem Superspeed Port wird nicht immer zuverlässig enumeriert. Ich 
benutze seit einiger Zeit (nicht nur) deshalb einen USB3 Hub mit 
schaltbaren Ports für meine Tests.

von Thomas Z. (usbman)


Lesenswert?

Yalu X. schrieb:
> Thomas Z. schrieb:
>> avrdude.exe: error at C:\avrDude\avrdude.conf:370: programmer type xbee
>> not found
>
> Du benutzt avrdude 6.3 zusammen mit der avrdude.conf aus 6.4. Das kann
> nicht funktionieren.

mm ich bin eigentlich der Meinung dass ich die conf passend mitkopiert 
habe. Aber danke für den Hinweis werde ich testen. Weist du auch warum 
6.4 gleich abschmiert?

von Thomas Z. (usbman)


Lesenswert?

Stefan ⛄ F. schrieb:
> Das wäre allerdings ein ziemlich cooles Feature. Wird das open-source?

ja wenns dann mal funktioniert. Noch ist das aber im Teststatium. Fischl 
hat ja eine serielle Schnittstelle auf den Pinheader gelegt, die er aber 
wohl nur zum debuggen benutzt hat.

von Stefan F. (Gast)


Lesenswert?

Thomas Z. schrieb:
>> Das wäre allerdings ein ziemlich cooles Feature. Wird das open-source?
> ja wenns dann mal funktioniert.

Das freut mich!

von Yalu X. (yalu) (Moderator)


Lesenswert?

Thomas Z. schrieb:
> mm ich bin eigentlich der Meinung dass ich die conf passend mitkopiert
> habe. Aber danke für den Hinweis werde ich testen. Weist du auch warum
> 6.4 gleich abschmiert?

V6.4 unterstützt im Gegensatz zu V6.3 die Programmer-Typen "xbee" und
"jtagice3_updi" und hat entsprechende Einträge in avedude.conf. V6.3
weiß mit diesen Einträgen nichts anzufangen und bricht deswegen schon
beim Einlesen von avrdude.conf mit einer entsprechenden Fehlermeldung
ab.

von Thomas Z. (usbman)


Angehängte Dateien:

Lesenswert?

Yalu X. schrieb:
> V6.4 unterstützt im Gegensatz zu V6.3 die Programmer-Typen "xbee" und
> "jtagice3_updi" und hat entsprechende Einträge in avedude.conf. V6.3
> weiß mit diesen Einträgen nichts anzufangen und bricht deswegen schon
> beim Einlesen von avrdude.conf mit einer entsprechenden Fehlermeldung
> ab.

ok aber avrdude 6.4 lässt sich gleich gar nicht starten. Kann es sein 
dass die DLL nicht statisch gelinkt ist?

von Yalu X. (yalu) (Moderator)


Lesenswert?

Thomas Z. schrieb:
> ok aber avrdude 6.4 lässt sich gleich gar nicht starten. Kann es sein
> dass die DLL nicht statisch gelinkt ist?

Wie man das DLL-Problem löst, weiß ich nicht, da Windows-spezifisch.

Mein obiger Beitrag bezog sich auf deinen Versuch, V6.3 zu verwenden. Da
musst du eben darauf achten, dass du auch die avrdude.conf aus V6.3
verwendest. Wenn in dieser Datei irgendwo der String "xbee" auftaucht,
hast du die falsche Datei erwischt, nämlich die von V6.4.

von Axel S. (a-za-z0-9)


Lesenswert?

Thomas Z. schrieb:
> Kann es sein dass die DLL nicht statisch gelinkt ist?

Natürlich nicht. Was glaubst du wohl, was die Fehlermeldung aussagt?

Abgesehen davon: DLLs kann man gar nicht statisch (dazu) linken. Schlag 
mal nach, wofür das D in DLL steht.

von Thomas Z. (usbman)


Lesenswert?

Axel S. schrieb:
> Thomas Z. schrieb:
>> Kann es sein dass die DLL nicht statisch gelinkt ist?
>
> Natürlich nicht. Was glaubst du wohl, was die Fehlermeldung aussagt?
>
> Abgesehen davon: DLLs kann man gar nicht statisch (dazu) linken. Schlag
> mal nach, wofür das D in DLL steht.

ok ich gebe zu das war zu kurz gedacht.

von EAF (Gast)


Lesenswert?

Yalu X. schrieb:
> Wie man das DLL-Problem löst, weiß ich nicht, da Windows-spezifisch.

Aber ich!

Libusb kann mit einem/dem HID Dingen nix anfangen.(warum auch immer)
USBasb meldet sich aber als HID am System an.
Also kann die DLL nicht geladen werden.
Das sagt die Meldung auch.
Sie sagt NICHT, das die DLL NICHT gefunden wurde.
Streiche die beiden NICHT, dann ist die doppelte Verneinung weg.

Ja, Win Meldungen sind etwas konfus...

Bei meinem USBasp wird unter Win10 der WinUSB.sys Treiber aus System32 
geladen.
Dann klappts auch mit dem AVRDude

Ich hoffe, dass ich damit alle Klarheiten beseitigen konnte.

von Thomas Z. (usbman)


Angehängte Dateien:

Lesenswert?

EAF schrieb:
> USBasb meldet sich aber als HID am System an.
> Also kann die DLL nicht geladen werden.

nein ganz so einfach ist es nicht USBasp hat schon den richtigen Treiber 
(libusb), das hab ich auch gecheckt. Wie schon geschrieben ist das 
Problem spezifisch für Avrdude 6.4 die v6.3 geht und ich sehe auch die 
vendor Requests
mit denen USBasp gesteuert wird.

: Bearbeitet durch User
von bork (Gast)


Lesenswert?


von Thomas Z. (usbman)


Lesenswert?

noch ein paar Infos was ich eigentlich genau machen will:
Ich will ein Device bauen was insgesamt 3 Interfaces hat
- Interface 0 USBasp (via libusb wie bisher)
- Interface 2+3 CDC (via usbser als comport)
Das Ganze als FullSpeed Device. Über zusätzliche Software kann man das 
Device dann auch als allgemeinen SPI Flasher nutzen.
Sowas gibts auch schon https://github.com/brianpepin/avr_programmer/
Dort wird allerdings mit einem zusätzlichen HUB + FTDI gearbeitet.

von Thomas Z. (usbman)


Lesenswert?

Ich habe am  Wochenende mal ein paar Enum Versuche mit USBasp gemacht. 
Das hat schon ganz gut funktioniert. Mit Zadig kann ich das 
entsprechenden Interface 0 libusbk zuordnen. Interface 1 und Interface 2 
wird via IAD automatisch dem CDC zugeordnet. Der Treiber wird unter W10 
automatisch geladen.
So wie das aussieht muss auch nichts den Request geändert werden, 
AVRdude muss also nicht verändert werden.
Es werden im Moment nur die üblichen Baudraten von 2k4 bis 115k2 in 8N1 
unterstützt, im Endausbau wird aber auch z.B 7E2 möglich sein.

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.