2016-05-31 12 views

Antwort

1

Hauptsächlich um Verwirrung über den Zustand des USB-Geräts zu vermeiden. Jede Schnittstelle kann immer nur einen "Benutzer" haben.

Viele USB-Geräte können verschiedene Ausführungsdomänen, Cache-Zustände, DMA-Übertragungen usw. eingeben. Diese Geräte haben dann im Treiber Status-Machine-Tracker, und es würde leicht aus dem Gleichgewicht geraten oder andere Arten von Konflikte. Nicht alle Geräte sind einfache HID-Schnittstellen (die über andere APIs manipuliert werden können)

+0

Ich erste zwar eine echte globale Linux-Beschränkung. Angesichts der Tatsache, dass dies eine Vorsichtsmaßnahme ist, um zu vermeiden, dass der Kernel - Treiber umgangen und Probleme eingeführt werden, konnte ich Userland und USB Linux zusammen mit dem Linux - Kernel https://www.kernel.org/doc/htmldocs/usb/usbfs-ioctl.html verwenden Kernel-Treiber, indem Sie sicherstellen, dass es nicht stört (es ist ein FTDI USB/Seriell-Konverter-Gerät mit dem ftdi_sio Kernel-Treiber). Der Nachteil des Entfernens des Kernel-Treibers besteht darin, dass er udev-Ereignisse erzeugt, was in meinem Fall Probleme verursacht (ich höre sie und ich erwarte nicht, dass ein Gerät verschwindet, während ich es benutze ...). –

0

Um zu kommunizieren, hat jedes USB-Gerät Endpunkte. Diese Endpunkte sind wie Pipes, in diesen Pipes sind alle Daten travalling.

Ein Endpunkt hat nur eine Richtung und kann nur von 1 Treiber verwendet werden.

Sie müssen also den Kernel-Treiber trennen, um diese Endpunkte verfügbar zu machen.

Wenn Sie möchten, können Sie den Treiber, der das Gerät verwendet, immer erkennen und deaktivieren, um die Verwendung des Detach-Kernel-Treibers zu vermeiden.