Plug and Play pode nos ajudar a descobrir um componente de hardware em um sistema sem a necessidade de configuração física ou intervenção do usuário na resolução de conflitos de recursos.
Mas eu me pergunto: existem requisitos especiais de hardware e/ou software para permitir o funcionamento do Plug and Play? Veja um exemplo de USB; há algum requisito para cartões de memória USB ou discos USB para usar os drivers padrão da Microsoft?
Responder1
"Plug and Play" é um termo específico do Windows que originalmente significava o método posterior de dispositivos ISA e PCI que permitiam ao sistema operacional escolher os recursos que consumiam. O BIOS também poderia fazer isso para o DOS, ou se afastar e deixar o Windows fazer isso completamente.
Os recursos são A) endereços de memória, B) endereços de E/S, C) IRQs e/ou D) canais DMA. Cada um, vários ou todos eles podem ser usados por um dispositivo para se comunicar com a CPU.
Então, originalmente, um driver "Plug and Play" era um driver que conseguia entender como inicializar o dispositivo, ou seja, configurá-lo para usar recursos que nenhum outro dispositivo estava usando.
Uma outra parte importante do Plug and Play é um método padrão para um dispositivo se identificar. O PCI (e possivelmente o ISAPNP) prevê que cada dispositivo tenha um fornecedor e um ID de dispositivo exclusivos. Isso foi transferido para USB. Assim, o sistema operacional host pode descobrir "o que" é o dispositivo e carregar o driver adequado.
Agora, quando entramos em dispositivos projetados para serem "hot-pluggable", isso é um pouco diferente, mas evidentemente o termo "Plug and Play" ainda é usado para descrevê-lo. A maioria dos dispositivos hot-plug são "hospedados" por um dispositivo não hot-plug. Os dispositivos USB são "hospedados" por um controlador USB, que é um dispositivo PCI que consome um ou mais recursos normalmente atribuídos via Plug and Play. Conversar com dispositivos pelo barramento USB envolve passar “através” do controlador USB. Existe uma situação semelhante para dispositivos SCSI, IDE e SATA.
Portanto, para que a capacidade de conexão automática funcione, o driver do controlador "host" precisa de um mecanismo para informar aos drivers que representam os dispositivos "acima" o que está acontecendo, ou seja, um driver de controlador USB precisa de uma maneira de informar a um driver de armazenamento em massa USB que o dispositivo foi desconectado. O driver "superior" precisa ter um código que possa terminar de forma limpa quando for solicitado que seja removido, em vez de permanecer residente até ser reinicializado.
A maioria dos tipos de barramento, como USB, SCSI, SATA, são regidos por padrões que os drivers devem reconhecer e implementar.
No nível do hardware, a maioria dos dispositivos hot-plug são projetados onde parte do conector descarrega eletricidade estática e os pinos que transportam energia se conectam uma fração de segundo antes dos pinos que transportam dados. Observe atentamente os pinos dos conectores USB e SATA; é por isso que alguns são mais longos que os outros. Os conectores IDE NÃO fazem isso e NÃO são seguros para hotplugging.
Responder2
Toda a "mágica" plug & play tem - pelo que sei - apenas duas partes principais essenciais:
- O software deve ser capaz de identificar que algum novo hardware foi conectado (parte do padrão USB, por exemplo).
- O hardware pode ser identificado. Usando uma solicitação especial (sem usar drivers específicos do fornecedor), um ID exclusivo pode ser recuperado (geralmente consistindo em um ID do fornecedor e um ID do dispositivo/hardware). O sistema operacional pode usá-los para identificar a peça específica de hardware e instalar os drivers corretos sem perguntar primeiro ao usuário.
- (Opcional:) Idealmente, o hardware e o software (drivers) devem funcionar sem a necessidade de reinicialização.
Para funcionar com os drivers padrão fornecidos, o hardware precisa implementar as reações corretas aos comandos enviados (ou seja, o hardware precisa falar a "linguagem" correta). Dependendo do tipo de hardware, isso geralmente foi padronizado (por exemplo,Dispositivos de armazenamento em massa USB).