Hat das BIOS irgendeine Art von generischen "Treibern"

22

Wie steuert das BIOS E / A-Geräte ohne Treiber?

Zum Beispiel, wie wird ein Bild angezeigt, während der Computer bootet, wenn das BIOS keine Treiber für die Grafikkarte hat.

Gibt es einen generischen Treiber, der für alle BIOS und Hardware-Systeme Standard ist und dem BIOS ermöglicht, grundlegende Funktionen auszuführen, unabhängig davon, welche Hardware installiert ist.

Jede Hilfe wäre dankbar.

Vielen Dank.

RJSmith92
quelle
Haben Sie ein bestimmtes Problem, das Sie lösen möchten? Wenn Sie gefragt werden, ob das BIOS ein universelles generisches Laufwerk verwendet, wird dies nicht der
Fall sein
Ich denke, es gibt ein minimales Standard-Ausgabeformat (vesa) und die Grafikkarte hat ein eigenes BIOS. Außerdem ist es nicht so, dass deine BIOS / UEFI-Firmware in Echtzeit in 3D gerendert wird.
Geselle Geek
5
@Ramhound Es ist kein Problem, das ich zu lösen versuche, es ist nur eine allgemeine Frage. Unabhängig davon, welche Grafikkarte Sie in Ihr System einsetzen, können Sie die Anzeige beim Booten immer noch sehen. Gibt es also eine standardisierte Schnittstelle, die im BIOS programmiert ist?
RJSmith92
4
Do you have a specific problem your trying to solve? Ja, sie versuchen das Problem zu lösen, eine Antwort auf die von ihnen gestellte Frage zu finden. ¬_¬
Synetech
Verwandte: superuser.com/questions/357328/...
Russell Borogove

Antworten:

13

Hat das BIOS irgendeine Art von generischen "Treibern"

Wie steuert das BIOS E / A-Geräte ohne Treiber?

Standards. Alle Komponenten implementieren eine Basisschnittstelle, und das BIOS ist darauf programmiert, diese zu verwenden. Da es sich um eine Basisschnittstelle handelt (wofür das 'B' im BIOS steht), kann es natürlich nicht alle Funktionen der Hardware nutzen. das bleibt der Software überlassen, die über Treiber direkt auf die Hardware zugreifen kann.

Ursprünglich erstellten die BIOS-Hersteller eine Reihe von APIs , die Geräte verwenden sollten, wenn sie kompatibel sein wollten. Sie taten dies über " Interrupts ", was eine Möglichkeit für ein Gerät ist, das Programm zu unterbrechen , um es wissen zu lassen, dass etwas passiert ist und umgekehrt.

Zum Beispiel, wie wird ein Bild angezeigt, während der Computer bootet, wenn das BIOS keine Treiber für die Grafikkarte hat.

Beim Pre-Boot-Display implementiert die Firmware der Grafikkarte VESA (Video Electronics Standards Association), einen Standard, der erstellt wurde, um den Zugriff auf die Grafikhardware zu vereinfachen. Das BIOS kann mit den Standardfunktionen auf die Video-Hardware zugreifen. Es ähnelt in gewisser Weise der Implementierung von DirectX als übergeordnetes API für Hardware, sodass Programmierer nicht jede einzelne Hardwarekonfiguration berücksichtigen mussten.

Gibt es eine Art von generischem Treiber, der für alle BIOS und Hardware-Komponenten verfügbar ist und dem BIOS ermöglicht, grundlegende Funktionen auszuführen, unabhängig davon, welche Hardware installiert ist.

Art von. Es ist kein Treiber, sondern eine Standard-API . Eine Reihe von Programmierfunktionen, mit denen grundlegende Dinge wie die Initialisierung eines Geräts oder die Eingabe und Ausgabe von Daten ausgeführt werden können.

Wenn Hersteller ihre Produkte verkaufen möchten, müssen sie sicherstellen, dass sie mindestens die Standard-APIs implementieren, damit sie kompatibel sind. Auf diese Weise kann das System die Hardware erkennen und bei bootkritischen Geräten auf der Basisebene darauf zugreifen, bis ein Softwaretreiber geladen werden kann, der weiß, wie er vollständig darauf zugreifen kann.

Synetech
quelle
Danke, tolle Antwort. BIOS-Interrupt-Aufrufe (welche DOS-Systeme wurden verwendet) werden also noch verwendet, bis das Betriebssystem geladen ist?
RJSmith92
1
Ja, das BIOS bietet eine Reihe verschiedener Interrupts, die verwendet werden können (obwohl nicht alle BIOS alle Funktionen bereitstellen). DOS-Systeme haben diese verwendet, aber DOS hat auch INT 21 und 2F erstellt, um übergeordnete Software-Interrupts bereitzustellen (ich vermisse die DOS- / Hardware-Assembler-Programmierung so sehr). Tatsache ist, dass es immer einige grundlegende Funktionen auf niedriger Ebene geben muss, um Kompatibilität zu gewährleisten, selbst mit EFI und allen anderen zukünftigen Funktionen. Es kann verschiedene Formen annehmen, aber ohne eine Art gemeinsame Sprache gibt es für das System keine Möglichkeit, die Hardwaregeräte zu verwenden.
Synetech
Nach meinem Verständnis werden Interrupt-Aufrufe immer noch von den Kernel- und Kernel-Level-Diensten verwendet. Ist das nicht wahr
BlueRaja - Danny Pflughoeft
@BlueRaja, möglicherweise während des Startvorgangs (sie benötigen eine Möglichkeit, auf die Hardware zuzugreifen), aber nachdem sie die Erkennungsroutinen ausgeführt haben, verwenden sie die entsprechenden Treiber (bei denen es sich nur um Programme auf niedriger Ebene handelt), um direkt auf die Hardware zuzugreifen. Selbst der Kernel würde direkten Zugriff benötigen, um die Hardware optimal nutzen zu können, z. B. um erweiterte CPU-Funktionen zu nutzen oder die Verwendung des Speichercontrollers und des Chipsatzes zu optimieren.
Synetech
22

Das BIOS in einem PC sollte eine ähnliche Funktion erfüllen wie das BIOS in einem 8-Bit-CP / M-System, das vor der Übernahme des PCs Mitte der 80er Jahre populär war. Das BIOS sollte einen minimalen Bootloader und hardwareabhängige Low-Level-Routinen für die Ein- und Ausgabe an einige Geräte (Bildschirm, Festplatte, Band, COM-Port) enthalten. Das Wissen dazu wurde in das ROM eingebaut - kein Treiber erforderlich und natürlich keine zusätzliche Hardware, die von diesem ROM unterstützt wird. (Dinge wie Energieverwaltung und ACPI kamen viel später, in den 90er Jahren, nachdem sich der PC als allgegenwärtige Plattform etabliert hatte.)

(Das CP / M-Dateisystem befand sich in einer Komponente, die von der BDOS-Festplatte geladen wurde. Ebenso ist das Wissen über das FAT-Dateisystem und dessen Schnittstellen in (mindestens einer von) zwei versteckten Dateien MSDOS.SYS oder IO.SYS nicht enthalten.) des BIOS ROM.)

Allerdings ... Das PC-BIOS unterstützte im Gegensatz zu CP / M den Begriff "Option ROMS", der auf einer Erweiterungskarte enthalten sein könnte. Es gab also zumindest einen minimalen Mechanismus, um das BIOS zu erweitern. Grafikkarten, die mit CGA beginnen (MDA, der Vorgänger von CGA, hat dies möglicherweise auch getan), verfügen über ein Options-ROM, das die E / A-Funktionen der BIOS-Schnittstelle erweitert oder hinzufügt. (Aus diesem Grund wird vor dem Start des BIOS eine NVidia-Meldung angezeigt.) Dies gilt auch für Festplattencontroller und SCSI-Karten. All das tun sie immer noch. Viele ältere Netzwerkkarten haben einen Sockel für ein Boot-ROM.

Denken Sie auch daran, dass Hersteller von PC-Klonen, die in den 80er Jahren entstanden sind, sich sehr schnell entschieden haben, nicht nur ein kompatibles BIOS-Interface bereitzustellen, sondern die gesamte PC-Plattform einschließlich der gesamten Low-Level-Hardware wie dem Timer-Chip kopieren mussten , Interrupt-Controller usw. (Dies war relativ einfach, da nur wenig von IBM proprietär war.) Dies lag daran, dass das BIOS nur langsam vorging und Programmierer direkt auf die Hardware zugegriffen haben, insbesondere für Spiele.

Daher kann zwischen Options-ROMs und diesem Konsens der Standardhardware, die die PC-Plattform bildet, sowie der Tatsache, dass sie während der gesamten Entwicklung des PCs abwärtskompatibel gehalten wurde, Folgendes geschehen, wenn das Display ohne Treiber verwendet werden soll:

  • Verwenden Sie Standard-BIOS-Schnittstellen, die von einem Options-ROM in der Video-Hardware "eingehakt" werden können
  • Sie können auch Annahmen darüber treffen, welche Hardware sich im System befindet, und direkt auf die Basishardware zugreifen

Die gesamte PC-Anzeigehardware funktioniert beim Booten weiterhin im "VGA-kompatiblen" Modus. Der ursprüngliche IBM VGA-Adapter hatte Modi, die mit früheren EGA-, CGA- und MDA-Karten kompatibel waren. Dies bedeutet, dass etwas, das über das BIOS oder außerhalb eines Betriebssystems ausgeführt wird, davon ausgehen kann, dass es weiterhin den gleichen Speicher lesen und schreiben kann, der jetzt wie 1985 mit dem Bildschirm verbunden ist.

LawrenceC
quelle
Danke für die Antwort. Das BIOS auf Erweiterungskarten muss also einem Standard entsprechen, damit es von jedem Motherboard-BIOS verwendet werden kann.
RJSmith92
1
Ich bin mir nicht sicher, ob es eher ein Standard als eine langjährige Konvention ist, aber so ähnlich. Ich denke, dass die BIOS-Boot-Spezifikation (BBS) hier ein formaler Standard ist. en.wikipedia.org/wiki/Option_ROM
LawrenceC
Ja, das ist das, wonach ich gesucht habe.
Nochmals vielen