2016-05-31 7 views

ответ

1

Главным образом, чтобы избежать путаницы в отношении состояния USB-устройства. Каждый интерфейс может иметь только один «пользователь» в любой момент времени.

Многие USB-устройства могут вводить различные домены выполнения, состояния кеша, передачи DMA и т. Д. Эти устройства будут иметь в машине драйверы состояния-машины, и это может легко выпасть из синхронизации или других типов конфликты. Не все устройства - это простые интерфейсы HID (которые можно манипулировать с помощью другого API-интерфейса)

+0

Я первый, хотя из настоящего глобального ограничения Linux. Учитывая тот факт, что это предосторожность, чтобы избежать обхода драйвера ядра и возникновения проблем, я смог использовать userland usb linux ioctls https://www.kernel.org/doc/htmldocs/usb/usbfs-ioctl.html вместе с драйвер ядра, убедившись, что он не мешает ему (это устройство USB/последовательного преобразователя FTDI с использованием драйвера ядра ftdi_sio). Недостатком отсоединения драйвера ядра является то, что он создает события udev, что вызывает проблемы в моем случае (я их слушаю, и я не ожидаю, что устройство исчезнет, ​​пока я его использую ...). –

0

Для связи каждое устройство USB имеет конечные точки. Эти конечные точки подобны трубам, в этих трубах все данные обманывают.

У одной конечной точки есть только одно направление и ее можно использовать только одним водителем.

Поэтому вам необходимо отделить драйвер ядра, чтобы предоставить доступ к этим конечным точкам.

Если вы хотите, вы всегда можете обнаружить и деактивировать драйвер, который использует устройство, чтобы избежать использования отсоединения драйвера ядра.