【发布时间】:2016-05-31 12:42:10
【问题描述】:
为什么使用 libusb 需要分离内核驱动程序?为什么某些 USB IO 不能与内核驱动一起执行?
【问题讨论】:
为什么使用 libusb 需要分离内核驱动程序?为什么某些 USB IO 不能与内核驱动一起执行?
【问题讨论】:
主要是为了避免混淆 USB 设备的状态。每个界面在任何给定时间都只能有一个“用户”。
许多 USB 设备可以进入不同的执行域、缓存状态、DMA 传输等。这些类型的设备将在驱动程序中具有状态机跟踪器,并且很容易失去同步或其他类型的冲突.并非所有设备都是简单的 HID 接口(可以通过其他 API 的 btw 进行操作)
【讨论】:
为了进行通信,每个 USB 设备都有端点。这些端点就像管道,所有数据都在这些管道中流动。
一个端点只有一个方向,可供1名司机使用。
因此,您需要分离内核驱动程序才能使这些端点可用。
如果您愿意,您可以随时检测并停用使用该设备的驱动程序,以避免使用分离内核驱动程序。
【讨论】: