Diferença e relação entre firmware e driver de dispositivo

27
  1. Como o firmware e o driver de dispositivo são diferentes e relacionados? Eu acho que os dois dispositivos de controle?
  2. O firmware é sempre auto-inicializável, enquanto o driver deve ser executado / inicializado pelo sistema operacional?
Tim
fonte

Respostas:

24
  1. Firmware é o software que roda no dispositivo. Um driver é o software que informa ao sistema operacional como se comunicar com o dispositivo. Nem todos os dispositivos possuem firmware - apenas dispositivos com algum nível de inteligência.

  2. Não sei exatamente o que você quer dizer ... de um modo geral, o firmware não tem nada a ver com "inicializar" ... acho que talvez você esteja perguntando: os dispositivos com firmware sempre têm o firmware instalado no dispositivo, ou é carregado após o tempo de inicialização. Se é isso que você está perguntando, a resposta é não ...

Geralmente, os dispositivos com firmware têm o firmware programado no dispositivo (com um chip ROM ou um chip ROM programável), mas há alguns dispositivos em que o firmware é carregado no dispositivo no momento da inicialização. Posso pensar em algumas placas de rede e webcams que funcionam dessa maneira, mas tenho certeza de que há outras também.

Flimzy
fonte
Obrigado! em 2, por auto-inicialização, quero dizer que, se o firmware é executado por si só, não por outros, enquanto o driver é executado pelo SO, não por si só? Eu peguei a palavra inicialização automática em "Sem um sistema operacional, um usuário não pode executar um programa aplicativo no computador, a menos que o programa seja inicializado automaticamente" em en.wikipedia.org/wiki/Operating_system
Tim
1
O firmware é executado pelo próprio dispositivo de hardware ... Acho que responde à pergunta? Considere o seguinte: Muitos dispositivos que não são de computadores têm "firmware" - como câmeras digitais, DVD players, telefones celulares etc. Então, obviamente, nesses casos, o firmware é completamente independente no próprio dispositivo. Somente se / quando você conectar um desses dispositivos ao computador, você precisar de um driver .
Flimzy
1
Obrigado! Em en.wikipedia.org/wiki/Computer_software : "Firmware é um software de baixo nível geralmente armazenado em dispositivos de memória eletricamente programáveis. O firmware recebe esse nome porque é tratado como hardware e executado (" executado ") por outros programas de software". O firmware é executado por outros programas de software ou pelo próprio hardware?
Tim
-1 por que você diz only devices with some level of intelligence have firmware? Eu diria que é o contrário, dispositivos simples (eletrônicos) podem não ter sistemas operacionais, mas possuem firmware.
Celeritas 13/10/16
@Eleritas: porque apenas dispositivos com algum nível de inteligência têm firmware, em contraste com aqueles (como uma porta RS-232) que não possuem. Se você está comparando dispositivos que possuem um sistema operacional inteiro (telefone celular, iPod, GPS programável etc.), está falando de uma camada de abstração completamente diferente, que nada tem a ver com "drivers de dispositivo" no sentido tradicional. Essa classe de software de acesso costuma ser chamada de "driver de dispositivo", mas, na realidade, é um protocolo de aplicativo de rede implementado em cima de um driver de dispositivo (como o que se comunica com uma porta USB ou bluetooth).
Flimzy
5

O firmware implementa detalhes de baixo nível necessários para operar o hardware e fornece uma API / ABI para um nível superior. Um driver de dispositivo fornece um adaptador entre o sistema operacional e a API / ABI exposta pelo firmware.

Ignacio Vazquez-Abrams
fonte
1
Obrigado! O driver de dispositivo faz parte do sistema operacional e é executado pelo kernel do sistema operacional? O firmware faz parte do dispositivo e é executado pelo qual, o kernel do SO ou o próprio firmware?
Tim
1
O driver do dispositivo é considerado parte do sistema operacional e geralmente é executado na CPU do host. O firmware geralmente é executado pelo dispositivo; ele pode ser carregado no dispositivo pelo sistema operacional.
Ignacio Vazquez-Abrams
Essa deve ser a resposta aceita.
Eric Wang
4

A definição moderna ou o uso comum de firmware não tem nada a ver com uma funcionalidade específica de software. O firmware é simplesmente um software armazenado em chips de memória semicondutora não volátil (por exemplo, PROM, EEPROM ou flash), em vez de um dispositivo de armazenamento em massa, como um disco rígido. O software armazenado pode ser um binário vinculado monolítico ou consistir em carregador, kernel e módulos de aplicativos. (OTOH, vi algumas placas sintonizadoras de TV para PCs que exigem o carregamento de "firmware" pelo kernel do Linux para concluir a inicialização.)

A origem do termo tem a ver com lógica controlada por processador versus lógica conectada. O software armazenado nos discos rígidos pode ser facilmente modificado e atualizado. Revisões e atualizações da lógica conectada exigiam reformulação e substituição da placa ou módulo. O meio termo era um processador executando software para controlar o hardware. O software foi chamado empresa de utensílios para refletir o meio termo entre macio mercadoria contra duro lógica com fio. Originalmente, o firmware era armazenado em chips ROM, PROM ou EPROM, a fim de manter a modularidade da placa. O avanço da EEPROM e dos chips flash permitiu atualizações no circuito e a bordo do firmware.

À medida que os processadores (e periféricos) ficavam menores, mais baratos e com menos consumo de energia, as possibilidades de incorporá-los em todo tipo de dispositivo / dispositivo se expandiam. Para tornar o software para operar esses dispositivos robusto e seguro, o software é armazenado em chips de memória flash em vez de em um disco rígido; também torna o dispositivo menor e muito mais barato. O termo firmware foi expandido para abranger todo o software em dispositivos / dispositivos com processadores incorporados, mesmo que algumas partes do código armazenado não tenham relação com a substituição da lógica conectada.

serragem
fonte
Então, o que significa instalar o firmware em um armazenamento massivo? Gostou deste pacote Debian ?
xuhdev
1
@xuhdev - Esse pacote Debian consiste em arquivos que podem ser usados ​​por vários drivers de dispositivo Linux. Os arquivos são referenciados como "firmware", pois são gravados no dispositivo conectado pelo driver Linux. Os arquivos podem conter dados operacionais ou código para o uC / uP incorporado do dispositivo. Observe que esse arquivo transferido para o dispositivo é carregado na memória volátil do dispositivo e o carregamento deve ocorrer após a reinicialização de cada dispositivo ou sistema. A "instalação" deste "firmware" no armazenamento em massa do host é apenas um mecanismo processual (isto é, manipulação de pacotes).
sawdust
3

Alguém postou esta pergunta recentemente , dizendo:

O firmware é uma combinação de memória persistente, código do programa e os dados armazenados nele. Exemplos típicos de dispositivos que contêm Firmware são sistemas incorporados, como semáforos, eletrodomésticos, relógios digitais, computadores, periféricos de computadores, telefones celulares e câmeras digitais. O firmware contido nesses dispositivos fornece o programa de controle para o dispositivo.

De fato, a driverstag do SuperUser é definida:

Um driver, também chamado de driver de dispositivo ou driver de software, é um software que permite que programas de computador de nível superior interajam com um dispositivo de hardware. Quando um programa de computador solicita interação com um determinado dispositivo de hardware, o driver processa as instruções e a conversão de saída entre o dispositivo e o programa de computador que está chamando o driver.

e a firmware tag é definida:

Em geral, a diferença entre software e firmware é o nível em que ele interage com o hardware. O firmware interage no nível muito baixo do hardware, enquanto o software interage no nível alto. O firmware geralmente controla o tempo, os controles e a funcionalidade básicos do hardware.

Originalmente, eu pensava que firmwareera instalado diretamente no chip ou na placa e morava lá, e é por isso que ele precisa "piscar", enquanto você instalava umdriver em cima de um sistema operacional.

Conclusão:

Firmwarepermite que o hardware "faça" coisas e driverspermite que o software interaja com o hardware.

bgmCoder
fonte