Разница между родными драйверами портов и драйверами устройств?

612
smeeb

Мне пришло в голову, что я на самом деле не понимаю разницу между родными драйверами портов (то есть родными драйверами последовательных / параллельных / USB / и т. Д. В каждой ОС) и драйверами внешних аппаратных устройств.

Например, если в моей ОС уже есть драйвер USB (для связи с USB-устройствами через интерфейс / порт USB), то почему моя новая блестящая веб-камера (или принтер) поставляется с собственным драйвером устройства?

Это то, что «драйверы порта / интерфейса» имеют дело с настройкой электрических соединений с внешними / периферийными устройствами, и что драйверы устройств используют эти драйверы для подачи определенных команд ввода-вывода устройствам? Так что может быть что-то вроде:

enter image description here

Я прав здесь или далеко от базы? Другими словами, в приведенном выше сценарии используются ли два драйвера (один для устройства и один для порта USB)?

  • Если так, то каково разделение труда между двумя водителями?
  • Кроме того, почему большинство ОС имеют собственные драйверы портов (последовательный порт, USB и т. Д.), И почему такие вещи, как клавиатура, мышь, веб-камеры, принтеры и т. Д., Имеют свои собственные драйверы устройств?
0

1 ответ на вопрос

1
Ale..chenski

Вы не слишком далеки от базы, но и не совсем правы. Каждое USB-устройство объявляет себя членом определенного предопределенного класса устройств - HID, COM, Mass Storage, веб-камеры и т. Д. Таким образом, эти устройства указывают ОС на то, что они соответствуют определенным четко определенным функциям. Операционная система загрузит универсальный драйвер для этого класса, и вы должны ожидать базовые функциональные возможности от этого устройства.

Однако многие производители устройств хотят отличаться от других и включают в себя некоторые расширенные функции, такие как автофокус, или специальные кнопки, или дополнительные форматы и т. Д. В этом случае производитель предоставит свой собственный драйвер, который зависит от VID / PID. Если этот драйвер установлен, ОС будет загружать его каждый раз, так что у вас будет новая блестящая функциональность с вашего нового устройства. Способ реализации пользовательского драйвера может отличаться. Это может быть полностью настраиваемый драйвер, или это может быть какая-то модификация драйвера по умолчанию с использованием метода, известного как «драйвер фильтра» в мире Microsoft, что-то похожее на вашу картинку. Как драйверы для конкретного продукта реализованы в Android / Linux, лучше спросить у людей на соответствующих форумах.