【问题标题】:Why using the libusb requires detaching the kernel driver?为什么使用 libusb 需要分离内核驱动程序?
【发布时间】:2016-05-31 12:42:10
【问题描述】:

为什么使用 libusb 需要分离内核驱动程序?为什么某些 USB IO 不能与内核驱动一起执行?

【问题讨论】:

    标签: linux libusb


    【解决方案1】:

    主要是为了避免混淆 USB 设备的状态。每个界面在任何给定时间都只能有一个“用户”。

    许多 USB 设备可以进入不同的执行域、缓存状态、DMA 传输等。这些类型的设备将在驱动程序中具有状态机跟踪器,并且很容易失去同步或其他类型的冲突.并非所有设备都是简单的 HID 接口(可以通过其他 API 的 btw 进行操作)

    【讨论】:

    • 我首先想到了一个真正的全球 linux 限制。鉴于这是为了避免绕过内核驱动程序并引入问题的预防措施,我能够将用户区 usb linux ioctls kernel.org/doc/htmldocs/usb/usbfs-ioctl.html 与内核驱动程序一起使用,确保它不会干扰它(它是一个 FTDI使用 ftdi_sio 内核驱动程序的 USB/串行转换器设备)。分离内核驱动程序的缺点是它会创建 udev 事件,这在我的情况下会导致麻烦(我会听它们并且我不希望设备在我使用它时消失......)。
    【解决方案2】:

    为了进行通信,每个 USB 设备都有端点。这些端点就像管道,所有数据都在这些管道中流动。

    一个端点只有一个方向,可供1名司机使用。

    因此,您需要分离内核驱动程序才能使这些端点可用。

    如果您愿意,您可以随时检测并停用使用该设备的驱动程序,以避免使用分离内核驱动程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-28
      相关资源
      最近更新 更多