Le BIOS a-t-il une sorte de «pilotes» génériques

22

Comment le BIOS contrôle-t-il les périphériques d'E / S sans aucune forme de pilote?

Par exemple, comment une image s'affiche-t-elle pendant le démarrage de l'ordinateur si le BIOS n'a pas de pilote pour la carte graphique.

Existe-t-il une sorte de pilote générique standard dans tous les BIOS et le matériel qui permet au BIOS d'exécuter des fonctions de base, quel que soit le matériel installé?

Toute aide serait appréciée.

Merci.

RJSmith92
la source
Avez-vous un problème spécifique que vous essayez de résoudre? Si vous demandez si le BIOS utilise un lecteur générique universel, ce n'est pas le cas
Ramhound
Je pense qu'il y a un format de sortie standard minimal (vesa) et la carte vidéo a son propre bios. De plus, ce n'est pas comme si votre firmware bios / uefi était rendu en temps réel en 3D.
Journeyman Geek
5
@Ramhound Ce n'est pas un problème que j'essaie de résoudre, c'est juste une question générale. Quelle que soit la carte graphique que vous mettez dans votre système, vous pouvez toujours voir l'affichage pendant le démarrage, donc y a-t-il une interface standardisée qui est programmée dans le BIOS?
RJSmith92
4
Do you have a specific problem your trying to solve? Oui, ils essaient de résoudre le problème de trouver une réponse à la question qu'ils ont posée. ¬_¬
Synetech
Connexes: superuser.com/questions/357328/…
Russell Borogove

Réponses:

13

Le BIOS a-t-il une sorte de «pilotes» génériques

Comment le BIOS contrôle-t-il les périphériques d'E / S sans aucune forme de pilote?

Normes. Tous les composants implémentent une interface de base, et le BIOS est programmé pour l'utiliser. Bien sûr, car il s'agit d'une interface de base (c'est ce que signifie le «B» dans le BIOS), elle ne peut pas tirer parti des capacités complètes du matériel; qui est laissé au logiciel à mettre en œuvre via des pilotes qui peuvent accéder directement au matériel.

À l'origine, les fabricants de BIOS ont créé un ensemble d' API que les appareils devaient utiliser s'ils voulaient être compatibles. Ils l'ont fait via des « interruptions », ce qui est un moyen pour un appareil d' interrompre le programme pour lui faire savoir que quelque chose s'est produit et vice versa.

Par exemple, comment une image s'affiche-t-elle pendant le démarrage de l'ordinateur si le BIOS n'a pas de pilote pour la carte graphique.

Dans le cas de l'affichage avant démarrage, le micrologiciel de l'adaptateur vidéo implémente VESA (Video Electronics Standards Association), une norme qui a été créée pour simplifier l'accès au matériel d'affichage. Le BIOS sait comment accéder au matériel vidéo en utilisant les fonctions standard fournies. Il est quelque peu similaire à la façon dont DirectX a été implémenté en tant qu'API de niveau supérieur pour le matériel afin que les programmeurs n'aient pas à tenir compte de chaque configuration matérielle unique.

Existe-t-il une sorte de pilote générique qui est installé sur tous les BIOS et le matériel qui permet au BIOS d'effectuer des fonctions de base quel que soit le matériel installé.

Sorte de. Ce n'est pas un pilote, mais une API standard ; un ensemble de fonctions de programmation qui peuvent être utilisées pour effectuer des tâches de base telles que l'initialisation d'un périphérique ou l'entrée et la sortie de données.

Si les fabricants veulent vendre leurs produits, ils devront s'assurer qu'ils implémentent au moins les API standard afin qu'ils soient compatibles. De cette façon, le système peut détecter le matériel et dans le cas de périphériques critiques au démarrage, ils peuvent y accéder à un niveau de base jusqu'à ce qu'un pilote logiciel qui sache comment y accéder complètement puisse être chargé.

Synetech
la source
Merci, bonne réponse. Ainsi, les appels d'interruption du BIOS (quels systèmes DOS utilisaient) sont toujours utilisés jusqu'à ce que le système d'exploitation soit chargé?
RJSmith92
1
Oui, le BIOS fournit un tas d'interruptions différentes qui peuvent être utilisées (bien que tous les BIOS ne fournissent pas toutes les fonctions). Les systèmes DOS les utilisaient, mais DOS a également créé INT 21 et 2F pour fournir des interruptions logicielles de niveau supérieur pour faire les choses (la programmation de l'assembleur DOS / matériel me manque tellement). Le fait est qu'il faudra toujours des fonctionnalités basiques de bas niveau pour assurer la compatibilité, même avec EFI et tout ce qui arrivera à l'avenir. Cela peut prendre différentes formes, mais sans une sorte de langage commun, le système n'aurait aucun moyen d'utiliser les périphériques matériels.
Synetech
Je crois comprendre que les appels d'interruption sont toujours utilisés par le noyau et les services de niveau noyau. N'est-ce pas vrai?
BlueRaja - Danny Pflughoeft
@BlueRaja, peut-être au démarrage (ils ont besoin d' un moyen d'accéder au matériel), mais après avoir exécuté les routines de détection, ils utilisent les pilotes appropriés (qui ne sont que des programmes de bas niveau) pour accéder directement au matériel. Même le noyau aurait besoin d'un accès direct pour tirer le meilleur parti du matériel, par exemple en tirant parti des fonctions avancées du processeur ou en optimisant l'utilisation du contrôleur de mémoire et du chipset.
Synetech
22

Le BIOS dans un PC était censé remplir une fonction similaire à celle du BIOS dans un système CP / M 8 bits, populaire avant que le PC ne prenne le relais au milieu des années 80. Le BIOS devait contenir un chargeur de démarrage minimal et des routines de bas niveau dépendant du matériel pour effectuer des entrées et des sorties sur quelques périphériques (écran, disque, bande, port COM). Les connaissances nécessaires pour ce faire ont été intégrées à la ROM - aucun pilote requis et, bien sûr, aucun matériel supplémentaire pris en charge par cette ROM. (Des choses comme la gestion de l'alimentation et ACPI sont venues beaucoup plus tard, dans les années 90, après que le PC s'est imposé comme une plate-forme omniprésente.)

(Le "système de fichiers" CP / M était dans un composant chargé sur le disque appelé BDOS - de même, la connaissance du système de fichiers FAT et de ses interfaces se trouve dans (au moins l'un de) deux fichiers cachés MSDOS.SYS ou IO.SYS - ne fait pas partie de la ROM du BIOS.)

Cependant ... Le BIOS du PC, contrairement au CP / M, supportait la notion d '"Option ROMS" qui pourrait être incluse sur une carte d'extension. Il y avait donc au moins un mécanisme minimal pour étendre le BIOS. Les cartes vidéo commençant par CGA (MDA, le prédécesseur de CGA peut aussi l'avoir fait) auraient une ROM optionnelle qui étendrait ou ajouterait des fonctions d'E / S à l'interface du BIOS. (C'est pourquoi vous voyez un message NVidia avant le démarrage de votre BIOS.) Les contrôleurs durs et les cartes SCSI également. Tout cela continue. De nombreuses cartes réseau plus anciennes ont un socket pour une ROM de démarrage.

Gardez également à l'esprit que les fabricants de clones PC apparus dans les années 80 ont très rapidement décidé de ne pas fournir uniquement une interface BIOS compatible, mais ont fini par devoir copier la plate-forme PC dans son ensemble, y compris tout le matériel de bas niveau tel que la puce de minuterie , contrôleur d'interruption, etc. (Cela a été relativement facile car il était peu propriétaire d'IBM.) Cela était dû au fait que le BIOS était lent à faire les choses et que les programmeurs accédaient directement au matériel, en particulier pour les jeux.

Ainsi, entre les ROM optionnelles et ce consensus de matériel standard qui forme la plate-forme PC, ainsi que le fait qu'elle ait été maintenue rétrocompatible tout au long de l'évolution du PC, quelque chose souhaitant utiliser l'affichage sans pilote peut:

  • utiliser des interfaces BIOS standard, qui peuvent être «accrochées» par une ROM optionnelle dans le matériel vidéo
  • ou faire des hypothèses sur le matériel dans le système et accéder directement au matériel de base

Tout le matériel d'affichage PC fonctionne toujours en mode "compatible VGA" au démarrage. L'adaptateur IBM VGA d'origine avait des modes compatibles avec les cartes EGA, CGA et MDA antérieures. Tout cela signifie que quelque chose qui s'exécute à partir du BIOS ou à l'extérieur d'un système d'exploitation peut supposer qu'il peut toujours lire et écrire la même mémoire connectée à l'écran maintenant qu'elle le pouvait en 1985, par convention.

LawrenceC
la source
Merci d'avoir répondu. Donc, le BIOS sur les cartes d'extension doit suivre une sorte de norme pour que tout bios de la carte mère puisse l'utiliser?
RJSmith92
1
Je ne sais pas si c'est autant une norme plutôt qu'une convention de longue date, mais quelque chose comme ça. Je suppose que la spécification de démarrage du BIOS (BBS) est quelque chose d'une norme formelle ici. en.wikipedia.org/wiki/Option_ROM
LawrenceC
Oui, c'est le genre de chose que je cherchais. Merci encore
RJSmith92