Почему использование libusb требует отсоединения драйвера ядра? Почему не возможно выполнять некоторые USB-модули вместе с драйвером ядра?Почему использование libusb требует отсоединения драйвера ядра?
ответ
Главным образом, чтобы избежать путаницы в отношении состояния USB-устройства. Каждый интерфейс может иметь только один «пользователь» в любой момент времени.
Многие USB-устройства могут вводить различные домены выполнения, состояния кеша, передачи DMA и т. Д. Эти устройства будут иметь в машине драйверы состояния-машины, и это может легко выпасть из синхронизации или других типов конфликты. Не все устройства - это простые интерфейсы HID (которые можно манипулировать с помощью другого API-интерфейса)
Для связи каждое устройство USB имеет конечные точки. Эти конечные точки подобны трубам, в этих трубах все данные обманывают.
У одной конечной точки есть только одно направление и ее можно использовать только одним водителем.
Поэтому вам необходимо отделить драйвер ядра, чтобы предоставить доступ к этим конечным точкам.
Если вы хотите, вы всегда можете обнаружить и деактивировать драйвер, который использует устройство, чтобы избежать использования отсоединения драйвера ядра.
Я первый, хотя из настоящего глобального ограничения Linux. Учитывая тот факт, что это предосторожность, чтобы избежать обхода драйвера ядра и возникновения проблем, я смог использовать userland usb linux ioctls https://www.kernel.org/doc/htmldocs/usb/usbfs-ioctl.html вместе с драйвер ядра, убедившись, что он не мешает ему (это устройство USB/последовательного преобразователя FTDI с использованием драйвера ядра ftdi_sio). Недостатком отсоединения драйвера ядра является то, что он создает события udev, что вызывает проблемы в моем случае (я их слушаю, и я не ожидаю, что устройство исчезнет, пока я его использую ...). –