Il BIOS ha una sorta di "driver" generici


22

In che modo il BIOS controlla i dispositivi I / O senza alcuna forma di driver?

Ad esempio, come viene visualizzata un'immagine mentre il computer si sta avviando se il BIOS non ha alcun driver per la scheda grafica.

Esiste una sorta di driver generico standard in tutti i BIOS e hardware che consente al BIOS di eseguire funzioni di base indipendentemente dall'hardware installato.

Qualsiasi aiuto sarebbe apprezzato.

Grazie.


Hai un problema specifico che stai cercando di risolvere? Se
stai

Penso che esista un formato di output standard minimo (vesa) e che la scheda video abbia un proprio BIOS. Inoltre, non è come il tuo firmware bios / uefi è reso, in tempo reale in 3d.
Journeyman Geek

5
@Ramhound Non è un problema che sto cercando di risolvere, è solo una domanda generale. Qualunque sia la scheda grafica che si inserisce nel sistema, è comunque possibile vedere la dispaly durante l'avvio, quindi esiste un'interfaccia standard programmata nel BIOS?
RJSmith92,

4
Do you have a specific problem your trying to solve? Sì, stanno cercando di risolvere il problema di trovare una risposta alla domanda che hanno posto. ¬_¬
Synetech,

Risposte:


13

Il BIOS ha una sorta di "driver" generici

In che modo il BIOS controlla i dispositivi I / O senza alcuna forma di driver?

Standard. Tutti i componenti implementano un'interfaccia di base e il BIOS è programmato per usarlo. Naturalmente, poiché è un'interfaccia di base (è ciò che rappresenta la "B" nel BIOS), non può sfruttare tutte le funzionalità dell'hardware; che viene lasciato al software da implementare tramite driver che possono accedere direttamente all'hardware.

Inizialmente, i produttori di BIOS hanno creato una serie di API che i dispositivi avrebbero dovuto utilizzare se volessero essere compatibili. Lo hanno fatto tramite " interruzioni ", che è un modo per un dispositivo di interrompere il programma per far sapere che è successo qualcosa e viceversa.

Ad esempio, come viene visualizzata un'immagine mentre il computer si sta avviando se il BIOS non ha alcun driver per la scheda grafica.

Nel caso del display pre-boot, il firmware dell'adattatore video implementa VESA (Video Electronics Standards Association) che è uno standard creato per semplificare l'accesso all'hardware del display. Il BIOS sa come accedere all'hardware video utilizzando le funzioni standard fornite. È in qualche modo simile al modo in cui DirectX è stato implementato come API di livello superiore per l'hardware in modo che i programmatori non dovessero tenere conto di ogni singola configurazione hardware.

Esiste una sorta di driver generico posizionato su tutti i BIOS e hardware che consente al BIOS di eseguire le funzioni di base indipendentemente dall'hardware installato.

Una specie di. Non è un driver, ma un'API standard ; un insieme di funzioni di programmazione che possono essere utilizzate per eseguire operazioni di base come inizializzare un dispositivo o dati di input e output.

Se i produttori vogliono vendere i loro prodotti, dovranno assicurarsi di implementare almeno le API standard in modo che siano compatibili. In questo modo, il sistema può rilevare l'hardware e, nel caso di dispositivi critici per l'avvio, può accedervi a un livello base fino a quando non è possibile caricare un driver software che sa come accedervi completamente.


Grazie, ottima risposta. Quindi le chiamate di interruzione del BIOS (quali sistemi DOS erano soliti utilizzare) vengono ancora utilizzate fino al caricamento del sistema operativo?
RJSmith92,

1
Sì, il BIOS fornisce una serie di interrupt diversi che possono essere utilizzati (sebbene non tutti i BIOS forniranno tutte le funzioni). I sistemi DOS li hanno usati, ma DOS ha anche creato INT 21 e 2F per fornire interruzioni software di livello superiore per fare le cose (mi manca così tanto la programmazione di assemblatori DOS / hardware). Il fatto è che ci sarà sempre bisogno di alcune funzionalità di base a basso livello necessarie per fornire compatibilità, anche con EFI e qualsiasi altra cosa accada in futuro. Può assumere forme diverse, ma senza una sorta di linguaggio comune, non ci sarebbe modo per il sistema di utilizzare i dispositivi hardware.
Synetech,

Comprendo che le chiamate di interruzione sono ancora utilizzate dal kernel e dai servizi a livello di kernel. Non è vero?
BlueRaja - Danny Pflughoeft,

@BlueRaja, forse durante l'avvio (hanno bisogno di un modo per accedere all'hardware), ma dopo aver eseguito le routine di rilevamento, usano i driver appropriati (che sono solo programmi di basso livello) per accedere direttamente all'hardware. Anche il kernel avrebbe bisogno dell'accesso diretto per ottenere il massimo dall'hardware, ad esempio sfruttando le funzioni avanzate della CPU o ottimizzando l'uso del controller di memoria e del chipset.
Synetech,

22

Il BIOS in un PC doveva svolgere una funzione simile al BIOS in un sistema CP / M a 8 bit, popolare prima che il PC prendesse il controllo a metà degli anni '80. Il BIOS doveva contenere un bootloader minimo e routine di basso livello dipendenti dall'hardware per eseguire l'input e l'output su alcuni dispositivi (schermo, disco, nastro, porta COM). La conoscenza per fare questo è stata integrata nella ROM - nessun driver necessario e, naturalmente, nessun hardware aggiuntivo supportato da questa ROM. (Cose come la gestione dell'alimentazione e ACPI sono arrivate molto più tardi, negli anni '90, dopo che il PC si era affermato come una piattaforma onnipresente.)

(Il "filesystem" CP / M era in un componente caricato dal disco chiamato BDOS - allo stesso modo, la conoscenza del filesystem FAT e le sue interfacce sono in (almeno uno dei) due file nascosti MSDOS.SYS o IO.SYS - non parte della ROM BIOS.)

Tuttavia ... Il BIOS del PC, a differenza di CP / M, supportava l'idea di "Option ROMS" che poteva essere inclusa in una scheda di espansione. Quindi c'era almeno un meccanismo minimo per estendere il BIOS. Le schede video che iniziano con CGA (anche MDA, il predecessore di CGA, potrebbe averlo fatto) avrebbero una ROM opzionale che estende o aggiunge funzioni I / O all'interfaccia BIOS. (Questo è il motivo per cui viene visualizzato un messaggio NVidia prima dell'avvio del BIOS.) Allo stesso modo dei controller rigidi e delle schede SCSI. Tutti ancora fanno. Molte schede di rete meno recenti hanno un socket per una ROM di avvio.

Tieni presente anche che i produttori di cloni di PC che sono sorti molto rapidamente negli anni '80 hanno deciso di non fornire solo un'interfaccia BIOS compatibile, ma alla fine hanno dovuto copiare la piattaforma PC nel suo insieme, incluso tutto l'hardware di basso livello come il chip timer , controller di interruzione, ecc. (Questo è stato relativamente facile poiché poco era di proprietà IBM.) Questo perché il BIOS era lento nel fare le cose e i programmatori accedevano direttamente all'hardware, in particolare per i giochi.

Pertanto, tra le ROM opzionali e questo consenso sull'hardware standard che costituisce la piattaforma PC, oltre al fatto che è stato mantenuto compatibile con le versioni precedenti durante l'evoluzione del PC, qualcosa che desidera utilizzare il display senza un driver può:

  • utilizzare interfacce BIOS standard, che possono essere "agganciate" da una ROM opzionale nell'hardware video
  • o fare ipotesi su quale hardware sia presente nel sistema e accedere direttamente all'hardware di base

Tutto l'hardware di visualizzazione del PC funziona ancora in modalità "VGA compatibile" all'avvio. L'adattatore IBM VGA originale aveva modalità compatibili con le precedenti schede EGA, CGA e MDA. Tutto ciò significa che qualcosa in esecuzione dal BIOS o al di fuori di un sistema operativo può supporre che possa ancora leggere e scrivere la stessa memoria collegata al display ora come potrebbe nel 1985, per convenzione.


Grazie per la risposta. Quindi il BIOS sulle schede di espansione deve seguire una sorta di standard in modo che ogni BIOS della scheda madre possa usarlo?
RJSmith92,

1
Non sono sicuro che si tratti di una convenzione piuttosto che di una convenzione di vecchia data, ma qualcosa del genere. Immagino che BIOS Boot Specification (BBS) sia uno standard formale qui. en.wikipedia.org/wiki/Option_ROM
LawrenceC

Sì, questo è il tipo di cosa che stavo cercando. Grazie ancora
RJSmith92
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.