O BIOS possui algum tipo de 'driver' genérico

22

Como o BIOS controla dispositivos de E / S sem qualquer forma de driver?

Por exemplo, como uma imagem é exibida enquanto o computador está inicializando, se o BIOS não possui drivers para a placa gráfica.

Existe algum tipo de driver genérico padrão em todos os BIOS e hardware que permite que o BIOS execute funções básicas, independentemente do hardware instalado.

Qualquer ajuda seria apreciada.

Obrigado.

RJSmith92
fonte
Você tem um problema específico que está tentando resolver? Se o seu perguntando se existe BIOS usa uma unidade genérica universal isso não acontecer
Ramhound
Eu acho que existe um formato de saída padrão mínimo (vesa) e a placa de vídeo tem sua própria bios. Além disso, não é como o seu firmware bios / uefi é renderizado em tempo real em 3d.
Journeyman Geek
5
@ Ramhound Não é um problema que estou tentando resolver, é apenas uma pergunta geral. Qualquer que seja a placa gráfica que você coloca no seu sistema, você ainda pode ver a exibição durante a inicialização, então há alguma interface padronizada programada no BIOS?
RJSmith92
4
Do you have a specific problem your trying to solve? Sim, eles estão tentando resolver o problema de encontrar uma resposta para a pergunta que fizeram. # 1
Synetech 15/10/13
Relacionados: superuser.com/questions/357328/...
Russell Borogove

Respostas:

13

O BIOS possui algum tipo de 'driver' genérico

Como o BIOS controla dispositivos de E / S sem qualquer forma de driver?

Padrões. Todos os componentes implementam uma interface básica e o BIOS está programado para usá-lo. Obviamente, por ser uma interface básica (é o que o 'B' do BIOS significa), ela não pode tirar proveito de todos os recursos do hardware; isso é deixado para o software implementar por meio de drivers que podem acessar o hardware diretamente.

Originalmente, os fabricantes de BIOS criaram um conjunto de APIs que os dispositivos deveriam usar se desejassem ser compatíveis. Eles fizeram isso através de " interrupções ", que é uma maneira de um dispositivo interromper o programa para que ele saiba que algo aconteceu e vice-versa.

Por exemplo, como uma imagem é exibida enquanto o computador está inicializando, se o BIOS não possui drivers para a placa gráfica.

No caso da tela de pré-inicialização, o firmware do adaptador de vídeo implementa o VESA (Video Electronics Standards Association), um padrão criado para simplificar o acesso ao hardware da tela. O BIOS sabe como acessar o hardware de vídeo usando as funções padrão fornecidas. É um pouco semelhante à maneira como o DirectX foi implementado como uma API de nível superior para o hardware, para que os programadores não precisassem dar conta de todas as configurações de hardware.

Existe algum tipo de driver genérico padronizado em todos os BIOS e hardware que permite que o BIOS execute funções básicas, independentemente do hardware instalado.

Tipo de. Não é um driver, mas uma API padrão ; um conjunto de funções de programação que podem ser usadas para executar ações básicas, como inicializar um dispositivo ou dados de entrada e saída.

Se os fabricantes quiserem vender seus produtos, eles precisarão garantir pelo menos a implementação das APIs padrão para que sejam compatíveis. Dessa forma, o sistema pode detectar o hardware e, no caso de dispositivos críticos para inicialização, eles podem acessá-los em um nível básico até que um driver de software que saiba acessá-los completamente possa ser carregado.

Synetech
fonte
Obrigado, ótima resposta. Portanto, as chamadas de interrupção do BIOS (que sistemas DOS costumavam usar) ainda são usadas até o carregamento do SO?
RJSmith92
1
Sim, o BIOS fornece várias interrupções diferentes que podem ser usadas (embora nem todos os BIOS ofereçam todas as funções). Os sistemas DOS os usavam, mas o DOS também criou o INT 21 e 2F para fornecer interrupções de software de nível superior para fazer as coisas (sinto muita falta da programação do DOS / hardware assembler). O fato é que sempre haverá necessidade de algumas funcionalidades básicas e de baixo nível necessárias para fornecer compatibilidade, mesmo com a EFI e o que mais vier no futuro. Pode assumir formas diferentes, mas sem algum tipo de linguagem comum, não haveria como o sistema usar os dispositivos de hardware.
21413 Synetech
Pelo que entendi, as chamadas de interrupção ainda são usadas pelo kernel e pelos serviços no nível do kernel. Isso não é verdade?
BlueRaja - Danny Pflughoeft 15/10
@BlueRaja, talvez durante a inicialização (eles precisam de alguma maneira de acessar o hardware), mas depois de executar as rotinas de detecção, eles usam os drivers apropriados (que são apenas programas de baixo nível) para acessar diretamente o hardware. Até o kernel precisaria de acesso direto para obter o máximo do hardware, por exemplo, aproveitando as funções avançadas da CPU ou otimizando o uso do controlador de memória e do chipset.
21413 Synetech
22

O BIOS em um PC deveria desempenhar uma função semelhante à do BIOS em um sistema CP / M de 8 bits, popular antes do PC assumir o controle em meados dos anos 80. O BIOS pretendia conter um carregador de inicialização mínimo e rotinas de baixo nível dependentes de hardware para fazer entrada e saída em alguns dispositivos (tela, disco, fita, porta COM). O conhecimento para fazer isso foi incorporado à ROM - nenhum driver é necessário e, é claro, nenhum hardware adicional suportado por essa ROM. (Coisas como gerenciamento de energia e ACPI surgiram muito mais tarde, nos anos 90, depois que o PC se estabeleceu como uma plataforma onipresente.)

(O "sistema de arquivos" do CP / M estava em um componente carregado em disco chamado BDOS - da mesma forma, o conhecimento do sistema de arquivos FAT e suas interfaces está em (pelo menos um dos) dois arquivos ocultos MSDOS.SYS ou IO.SYS - não faz parte da ROM do BIOS.)

No entanto ... O BIOS do PC, ao contrário do CP / M, suportava a noção de "Option ROMS", que poderia ser incluída em uma placa de expansão. Portanto, havia pelo menos um mecanismo mínimo para estender o BIOS. As placas de vídeo que começam com CGA (o MDA, o antecessor da CGA, também pode ter feito isso) teriam uma ROM opcional que estendia ou adicionava funções de E / S à interface do BIOS. (É por isso que você vê uma mensagem da NVidia antes da inicialização do BIOS.) O mesmo aconteceu com os controladores rígidos e as placas SCSI. Tudo isso ainda faz. Muitas placas de rede antigas possuem um soquete para uma ROM de inicialização.

Lembre-se também de que os fabricantes de clones de PCs que surgiram nos anos 80 rapidamente decidiram não fornecer apenas uma interface BIOS compatível, mas acabaram tendo que copiar a plataforma do PC como um todo, incluindo todo o hardware de baixo nível, como o chip de timer. , controlador de interrupção etc. (Isso foi relativamente fácil, pois pouco disso era propriedade da IBM.) Isso ocorreu porque o BIOS demorou a fazer as coisas e os programadores acessaram o hardware diretamente, principalmente para jogos.

Portanto, entre as ROMs opcionais e esse consenso de hardware padrão que forma a plataforma do PC, além do fato de ter sido mantido compatível com versões anteriores durante toda a evolução do PC, algo que deseje usar a tela sem um driver pode:

  • use interfaces BIOS padrão, que podem ser "conectadas" por uma ROM opcional no hardware de vídeo
  • ou faça suposições sobre qual hardware está no sistema e acesse diretamente o hardware básico

Todo o hardware da tela do PC ainda funciona no modo "compatível com VGA" na inicialização. O adaptador IBM VGA original tinha modos compatíveis com as placas EGA, CGA e MDA anteriores. Tudo isso significa que algo em execução no BIOS ou fora de um sistema operacional pode assumir que ainda pode ler e gravar a mesma memória conectada ao monitor agora como em 1985, por convenção.

LawrenceC
fonte
Obrigado pela resposta. Portanto, o BIOS das placas de expansão deve seguir algum tipo de padrão para que qualquer BIOS da placa-mãe possa usá-lo?
RJSmith92
1
Não tenho certeza se é tanto uma norma quanto uma convenção de longa data, mas algo assim. Eu acho que a BIOS Boot Specification (BBS) é uma espécie de padrão formal aqui. pt.wikipedia.org/wiki/Option_ROM
LawrenceC
Sim, esse é o tipo de coisa que eu estava procurando. Obrigado novamente
RJSmith92 15/13