mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Windows 7/Vista - USB und AVRs


Autor: dev (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits,

nachdem ich mir nun nach einer ganze Weile des Installierens von libusb 
den PC (Windows 7 64Bit) versaut hab (kein USB mehr, nich mal im 
safe-mode), würde mich interessieren, wie gerade der aktuelle Stand ist 
bezüglich hobbymäßig den µC per USB an den PC anbinden...

Über FTDI?

Gleich nen µC nehmen der USB an Bord hat? Was aber hieße den Treiber 
selbst zu schreiben?

Oder über einen mir nicht bekannten libusb für Windows 7 Hack?

Besten Dank!

Greets
Dev

Autor: Mars (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
=>WinUSB von Microsoft schon ausprobiert?

Autor: Mars (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls du nur niedrige Datenraten benötigst, würde sich auch die 
HID-Deviceclass anbieten.

Autor: Di Pi (drpepper) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
FTDI funktioniert bei mir mit Win7 @ 64bit problemlos.

Ich glaube sogar dass der Teiber automatisch gefunden wurde.

Autor: Daniel R. (h3po)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Gleich nen µC nehmen der USB an Bord hat? Was aber hieße den Treiber
> selbst zu schreiben?

Da gibts doch normalerweise vom Hersteller des µC einen Treiber. Ich 
programmiere grade auf USB-fähigen PICs und da gibt es von Microchip 
einen fertigen Treiber, der sogar bei mir unter Win7 x64 funktioniert.

Autor: dev (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mars,

@Mars:
hab mir gerade das Whitepaper zu WinUSB durchgelesen.
Statt einen ganzen Treiber selbst implementieren zu müssen, muss man mit 
WinUSB "nur":

- den implementierten Kernel-Mode-Treiber und die WinUSB Schicht darüber 
verstehen
- die entsprechende .INF für den Treiber erstellen
- den KMDF, WinUSB + INF in ein Treiberpacket stecken und irgendwie 
signieren
- die WinUSB API anziehen (C++)
- dann in der Applikation (falls C++) sämtliche nötigen USB 
Protokollfunktionen aufrufen (SetupDiGetClassDevs(..), 
SetupDiGetDeviceInterfaceDetail(..), SetupDiEnumDeviceInterfaces(..), 
...), - oder daraus eine Bibliothek basteln, die man (wie von mir 
gewünscht) in .NET anziehen kann

Ich bin wahrscheinlich zu verwöhnt gewesen durch libusbdotnet - aber 
anstatt diese Strecke selbst zu entwickeln würde ich etwas effizienteres 
vorziehen.


Option A) ist natürlich einen USB<>RS232 Umsetzer zu kaufen und den µC 
per RS232 anzubinden. Option B) wäre das gleiche, nur per FTDI mit auf 
dem Board, wobei der Unterschied hier schon marginal ist.
Option C) wäre einen µC nehmen, bei dem der Hersteller einen Treiber 
mitliefert... Wobei es auch hier wieder nötig wäre, die Low Level 
Protokoll Funktionen zu implementieren.
Option D) wäre die HID DeviceClass - dafür müsste es eigentlich schon 
von Haus aus auch z.B. in .NET einen Zugriff auf den Endpoint geben, 
ohne sich großartig um das USB Protokoll kümmern zu müssen. Das werde 
ich mir noch anschauen.

@Di Pi, Daniel R.:
Was musstest Ihr Applikationsseitig an Logik umsetzen um einen nutzbaren 
Kommunikationskanal aufzubauen?

Gruß
dev

Autor: dev (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

für WinUSB gibt es für .NET Host Applications, die Einbindung in .NET 
ermöglichen, und noch Code-Schnipssel auf Google Code.
Eventuell schau ich mir das doch noch an, ob mit mäßigem Aufwand eine 
Kommunikation über USB zu bewerkstelligen ist.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Problem bei allen Treibern ist die Signierung. Ohne Signatur lassen sich 
unter x64 die Treiber nur mit F8 -> Deaktivieren der 
Gerätetreiber-Signatur bei jedem Start von Windows laden. Sehr 
unkomfortabel. Dann gibts noch die Möglichkeit, das System in den 
Testsigning Modus zu versetzen, um einen selbst signierten Treiber zu 
laden. Das geht wohl mit einem speziellen Programm auch für einzelne 
Treiber. Ist auch ganz schöner Bastelmurks. Also am besten was bauen, 
für das man fertige, signierte x64 Treiber bekommt.

Autor: dev (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau zu dem Schluss bin ich eben auch gekommen... für OS, die keine 
Signierung benötigen, wäre WinUSB eine nette Alternative (die .NET 
Bibliotheken sind doch schon fortgeschritten und verwendbar).

Jedoch für x64 passende INF + CAT zu basteln, OS in Testmode versetzen 
und diese Signierung zu machen... Hm, ich hab hier zwar ein Batchfile, 
das genau das mit den Libusb-Treibern macht, aber ich halts im Endeffekt 
auch für Murks.

Autor: Di Pi (drpepper) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dev schrieb:
> @Di Pi, Daniel R.:
> Was musstest Ihr Applikationsseitig an Logik umsetzen um einen nutzbaren
> Kommunikationskanal aufzubauen?

Eigentlich garnichts. Der FTDI-Treiber erzeugt wie gewohnt einen 
virtuellen COM-Port, wenn das Gerät angeschlossen ist. Danach gehts in 
jedem Programm wie gehabt (Terminal-Progs genauso wie Custom-Software).

Autor: Di Pi (drpepper) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich benutze mein kleines im Anhang befindliches Board.

C1, C3 und C4 sind optional.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, Inf basteln ist ja nur Schreibarbeit. Das cat File basteln ist 
auch nicht so viel Arbeit, braucht man halt das WDK. Aber das bringt 
alles noch nichts, weil man dann immer den Testsigning Mode bemühen 
muss. Erst mit einer Verisign Signatur und dem durchlaufenen WHQL bei MS 
kann man den Treiber ohne Verrenkungen installieren. Das kostet aber ein 
paar Hunderter.

Autor: Mars (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für Heimprojekte kann man den Check auf gültige Treibersignatur in 
Windows auch dauerhaft deaktivieren (über Gruppenrichtlinien). War auch 
das ersten nach FF installieren was ich getan habe.
Das mit Treibersignieren ist zwar lästig, die ~150$ plus Zertifikat von 
Verisign oder anderen Anbietern, sollten aber für jede Firma 
verschmerzbar sein.
Ansonsten musst du halt die Bausteine von FTDI verwenden. Die bringen 
bereits einen signierten Treiber mit. Allerdings hat man mit denen auch 
wieder andere Probleme...

Autor: Mars (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber wie ich bereits gesagt habe, solltest du mit max 64kbit je Richtung 
auskommen, kann ich dir nur HID empfehlen. Das funktioniert ohne das du 
Treiber installieren musst.

Autor: dev (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke das Thema hat sich für mich erledigt, Danke für die 
zahlreichen Rückmeldungen. Für mich als Hobbybastler mit beschränktem 
verfügbaren Zeitfenster bleibt es bei A) fertigen USB<>RS232 Adapter 
kaufen, MAX232, µC. Mit mehreren µC gleichzeitig kommunizieren zu 
wollen, welche nicht an einem Bus hängen, ist eigentlich gerade kein 
Anwendungsfall. Und wenn, die Adapter kosten ja nicht die Welt... Aber 
meist hat man entweder einen µC oder eben mehrere an einem Bus, und 
dafür reicht ja ein Zugang über einen µC.

Gruß
dev

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.