Warum wird nicht über den USB-interrupt-getrieben?
Was ist die Logik hinter machen USB ein polling-Mechanismus eher als interrupt-getrieben? Die Antworten, die ich kann kommen mit etwas überlegung sind:
- Verlassen Kontrolle der Effizienz der Verarbeitung und Granularität OS, eher als das Gerät selbst.
- Verhindern "interrupt storms" durch fehlerhafte Geräte.
Einige Erklärungen im Netz, die ich gefunden habe sagen, dass es vor allem wegen der Natur von USB-Geräten. Sie sind meist mikrocontroller-basierte Systeme, die nicht Warteschlange größere transfers erfordern daher kurze interrupt-Intervallen und, wie in kurzen Abständen unterbrechen, werden möglicherweise nicht die effizienteste. Ist das wahr?
Könnte es andere Gründe?
- Ich überlege mir, geben Sie eine -1 für eine offensichtlich falsche Prämisse, meinst du der Controller oder der bus selbst?
- Ich meine das Teil das macht von der host-hardware zu Umfrage das USB-Gerät kontinuierlich.
- Das Teil wäre der bus - / Protokoll selbst. Es gibt keine Möglichkeit für den Gastgeber zu sagen, wenn Daten von einem Gerät, es sei denn er fragt Sie das Gerät für diese Daten, so hat es zu Umfrage kontinuierlich, wenn es ein IN-Endpunkt und eine aktive Anforderung von einem Fahrer empfangen von Daten auf dem endpoint.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die übergeordnete Prämisse der Entwicklung von USB wurde, "Billig-chips". Dies wurde durch die Verwendung von polling, die verringert die Notwendigkeit für eine höhere Schieds-Protokoll.
Firewire haben, die es erlauben interrupts von Geräten und noch DMA, war viel teurer. Also USB-gewann in der low-cost-Bereich, und firewire in low-latency - /low-overhead/... Feld. Aufgrund der USB-Geschichte mehr oder weniger gewonnen.
Scheint die anti-USB-FUD (wie in der Angst-Uncertainy-Zweifel).
Der Grund ist, dass dies vereinfacht die Dinge auf der Hardware-Ebene einiges nicht mehr zu Kollisionen, zum Beispiel. USB ist halb-duplex, um reducex die Menge von Drähten in das Kabel, so dass nur eine reden kann, sowieso.
Während die USB-polling verwendet, die auf den Draht, wenn Sie es verwenden in der software Sie werden feststellen, dass Sie haben interrupts in USB. Das einzige Problem ist eine leichte Zunahme der Latenz vernachlässigbar in den meisten Fällen verwenden. Da die polling ist meist in hardware realisiert IIRC, software wird nur benachrichtigt, wenn es neue Daten.
Auf software-Ebene gibt es die so genannten "interrupt-Endpunkte" - und ratet mal, was jedes HID-Gerät nutzt Sie: die Maus -, Tastatur-und Josticks sind VERSTECKT.