O que é "firmware" na terminologia Linux?


14

Estou sendo confundido pelo uso de firmware no contexto do Linux.

Meu entendimento sobre firmware e driver é que firmware é o código executado apenas em um dispositivo como um IC Bluetooth, controlador de teclado ou placa de vídeo ou microcontrolador de uso único. O firmware expõe uma interface para o sistema operacional usar seus serviços.

O driver, em comparação, é o software que o kernel usa para se comunicar com as interfaces mencionadas anteriormente, fornecidas pelo firmware. Assim, um driver de vídeo, um driver de teclado, um driver de rádio bluetooth.

Então, por que continuo lendo sobre a instalação de arquivos de firmware do Linux (por exemplo, aqui ). Eles são carregados no hardware? Esses arquivos são usados ​​pelo kernel? Qual é o significado do firmware nesse contexto?


1
De um modo geral: software é um programa. O hardware é um dispositivo físico. Firmware é um programa integrado ao hardware; normalmente com a finalidade de configurar como o hardware funciona (portanto, é entre software e hardware, assim como 'firme' é entre 'suave' e 'duro' em uma escala sem cortes). Geralmente, o firmware é independente do sistema operacional (por exemplo, a configuração RAID em um controlador RAID SCSI).
precisa saber é o seguinte

Apenas para adicionar ao comentário do DopeGhoti, muitos dispositivos agora permitem o carregamento de firmware ao vivo, tornando-os mais flexíveis / evolutivos do que as implementações fixas.
Julie Pelletier

1
@DopeGhoti não apenas configura o hardware, ele roda no hardware. Algum firmware é muito complexo e basicamente executa um mini-OS.
Stephen Kitt

Concordo, apesar de afirmar que "software integrado ao hardware" implica que o hardware é aquele sobre o qual o software é executado. (:
DopeGhoti 19/04

Respostas:


21

No contexto do kernel Linux, o firmware é um software que roda em outro processador no sistema, por exemplo , um controlador sem fio, uma GPU, um controlador SCSI ... Este software costumava ser armazenado em ROM (de vários tipos) anexado ao controlador relevante , mas para reduzir custos e simplificar as atualizações, os controladores agora tendem a confiar no sistema operacional do host para carregar o firmware para eles.

Portanto, os arquivos de firmware não são usados ​​pelo kernel, eles são carregados pelo kernel em outras partes do hardware. É também isso que torna vagamente aceitável ter software sem código fonte nos sistemas FLOSS: o argumento é que ele não está sendo executado na CPU principal, mas em outro dispositivo.


1
Você está sendo muito benevolente com o uso de "vagamente aceitável".
Rui F Ribeiro

2
Nem todo mundo pode ser RMS.
precisa saber é o seguinte

Isso não é apenas no contexto do kernel Linux, é uma definição bastante geral de "firmware" no contexto de um sistema com vários processadores.
Gilles 'SO- stop be evil'

Então o / etc / lib / firmwares realmente contém firmwares e não drivers carregados pelo kernel na inicialização? Mas o controlador sem fio e as placas gráficas têm sua própria ROM com um firmware gravado pelo fabricante.
Defalt

3
@defalt sim, /lib/firmware(singular, não /etc) contém firmware usado por outros dispositivos. Muitos dispositivos (incluindo controladores sem fio e GPUs) precisam de firmware fornecido pelo sistema host, mesmo que eles tenham sua própria ROM (ou flash) contendo firmware.
Stephen Kitt
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.