Требования к Plug and Play

Требования к Plug and Play

Технология Plug and Play может помочь нам обнаружить аппаратный компонент в системе без необходимости физической конфигурации или вмешательства пользователя для разрешения конфликтов ресурсов.

Но мне интересно: есть ли специальные требования к оборудованию и/или программному обеспечению, чтобы Plug and Play работал? Возьмем, к примеру, USB; есть ли какие-либо требования к USB-накопителям или USB-дискам, чтобы использовать стандартные драйверы Microsoft?

решение1

"Plug and Play" — это специфичный для Windows термин, который изначально означал метод, позже устройства ISA, а затем PCI позволяли операционной системе выбирать потребляемые ими ресурсы. BIOS мог делать это также и для DOS, или отойти в сторону и позволить Windows полностью это делать.

Ресурсы — это A) адреса памяти, B) адреса ввода-вывода, C) IRQ и/или D) каналы DMA. Каждый, несколько или все из них могут использоваться устройством для связи с ЦП.

Таким образом, изначально драйвер «Plug and Play» был драйвером, который мог понимать, как инициализировать устройство, т. е. настраивать его для использования ресурсов, которые не использовались никаким другим устройством.

Еще одна важная часть Plug and Play — это стандартный метод идентификации устройства, PCI (и, возможно, ISAPNP) предусматривает, что каждое устройство должно иметь уникальный идентификатор поставщика и устройства. Это перенесено в USB. Таким образом, хостовая ОС может узнать, «что» представляет собой устройство, и загрузить соответствующий драйвер.

Теперь, когда мы переходим к устройствам, которые разработаны для «горячего подключения», это немного отличается, но, очевидно, термин «Plug and Play» все еще используется для его описания. Большинство устройств с возможностью горячего подключения «размещены» на устройстве без возможности горячего подключения. Устройства USB «размещены» на контроллере USB, который сам по себе является устройством PCI, потребляющим один или несколько ресурсов, обычно назначаемых через Plug and Play. Обмен данными с устройствами по шине USB подразумевает прохождение «через» контроллер USB. Похожая ситуация существует для устройств SCSI, IDE и SATA.

Итак, для работы горячего подключения драйверу контроллера "host" нужен механизм, чтобы сообщать драйверам, представляющим устройства "выше" него, что происходит, т. е. драйверу контроллера USB нужен способ сообщить драйверу запоминающего устройства USB, что устройство отключено. "Верхний" драйвер должен иметь код, который может завершить работу корректно, когда его просят удалить, вместо того, чтобы ожидать, что он останется резидентным до перезагрузки.

Большинство типов шин, таких как USB, SCSI, SATA, регулируются стандартами, которые драйверы должны распознавать и реализовывать.

На аппаратном уровне большинство устройств с возможностью горячего подключения спроектированы так, что часть разъема разряжает статическое электричество, а контакты, по которым подается питание, подключаются на долю секунды раньше контактов, по которым передаются данные. Внимательно посмотрите на контакты разъемов USB и SATA; вот почему некоторые из них длиннее других. Разъемы IDE НЕ делают этого и НЕ безопасны для горячего подключения.

решение2

Насколько мне известно, вся «магия» plug & play состоит всего из двух основных частей:

  • Программное обеспечение должно иметь возможность идентифицировать подключенное новое оборудование (например, часть стандарта USB).
  • Аппаратное обеспечение может быть идентифицировано. Используя специальный запрос (без использования драйверов, специфичных для поставщика), можно получить уникальный идентификатор (обычно состоящий из идентификатора поставщика и идентификатора устройства/оборудования). Операционная система может использовать их для идентификации конкретного элемента оборудования и установки правильных драйверов без предварительного запроса у пользователя.
  • (Необязательно:) В идеале оборудование и программное обеспечение (драйверы) должны работать без необходимости перезагрузки.

Для работы с предоставленными стандартными драйверами оборудование должно реализовать правильные реакции на отправляемые команды (т.е. оборудование должно говорить на правильном "языке"). В зависимости от типа оборудования это обычно стандартизируется (например,USB-накопители большой емкости).

Связанный контент