2010-02-16 3 views
8

Ich versuche, ein Programm zu schreiben, das eine BIOS-Option (nach dem POST) sein wird. Ich möchte, dass die Anwendung eine nette GUI hat, anstatt textbasiert zu sein (es gibt mehrere Gründe dafür, die Lokalisierung ist eine davon).Ist es möglich, Windows-Bibliotheken, die auf der Festplatte leben, von einem Programm, das im BIOS lebt, aufzurufen?

Mein Problem ist, dass wir durch die Größe der Anwendung eingeschränkt sind, die wir auf das BIOS flashen können.

Ist es möglich, mit MASM32 zu den DLLs auf der Festplatte zu "verlinken", so dass wir die Windows-APIs verwenden können, um die GUI zu entwickeln?

Oder gibt es eine API, die uns zur Verfügung steht, um die GUI zu erstellen, die in die endgültige ausführbare Datei eingebunden werden kann? (60K Größenbeschränkung auf dem endgültigen Programm ausführbar)

Jede Hilfe, die Sie geben können, wäre sehr dankbar, danke im Voraus.

Antwort

9

Es ist möglich. Alles, was Sie zu tun haben würde, ist:

  • den Prozessor in den geschützten Modus eingestellt und Speicher kartieren (flache Modell) erwartet
  • ein Dateisystem-Treiber entwickeln und dass
  • Unterstützung alle möglichen Grafikkarten laden, Mäuse, Monitore, Tastaturen etc. einschließlich potenziell Legacy-Hardware
  • die Ausführungsumgebung so einrichten, dass alle externen Referenzen der angeforderten DLL vorhanden sind, einschließlich (für Windows) KERNEL32, GDI usw.

Es gibt eine Menge dazu, und es ist nicht einfach. Ein naheliegendes Beispiel ist jedoch MenuetOS, eine beeindruckend kompakte Umgebung. Aber es ist vollständig aus einem vollständigen Überdenken der Implementierung einer GUI-Umgebung entstanden.


Ich habe BIOS-Code geschrieben, der eine GUI-Schnittstelle simuliert. Die Grafikkarte wird im Textmodus gehalten, die Schriftart wird schöner gestaltet, die Textzellentrennzeichen werden deaktiviert und die Maus wird erkannt. Mit einfachen Animationen passte das Ganze in 60 KiB oder so.

+0

Wie diese Antwort: D, wie passen Sie das in 60k? : D –

+0

Können Sie Bilder oder Unicode-Zeichen wie Chinesisch anzeigen? –

+4

Ich habe einen großartigen Code-Komprimierungsalgorithmus dafür. Aber ich habe den Dekompressor nicht ganz ausgearbeitet. :-) – wallyk

5

Nein, das ist nicht möglich. Für eine Windows-Anwendung muss das Windows-Betriebssystem ausgeführt werden. Daher muss das BIOS das Betriebssystem gestartet haben und ausgeführt werden, bevor eine Windows-GUI (oder Konsolenanwendung) verwendet werden kann. Um auf die DLL-Dateien auf dem Datenträger zugreifen zu können, benötigen Sie ein Dateisystem, das erst verfügbar ist, wenn das Betriebssystem gestartet wurde.

Allerdings sollten Sie in 60K in der Lage sein, eine recht vernünftige zeichenbasierte GUI anzupassen. Ich würde mir ansehen, wie einige der Linux-Bootloader dies tun.

0

Es gibt keine BIOS-Implementierungen, die dies unterstützen. Aber in der Theorie ist es möglich, aber bedenken Sie, dass Sie zuerst das gesamte Betriebssystem entwickeln sollten :)

+0

Ich versuche nicht, ein Betriebssystem zu erstellen, ich versuche, ein Modul zu schreiben, das im BIOS ausgeführt wird. Ich kann garantieren, dass Windows 7 auf dem Computer jedoch diesen Code im BIOS ausführen muss, bevor das Betriebssystem lädt. –

0

Ich bin mir nicht sicher, ob die Anfrage tatsächlich möglich ist. (Unter Berücksichtigung des Kontexts der Frage)

Damit dies funktioniert, müssten Sie die gesamte Microsoft Windows-Umgebung initialisieren, um die API-Funktionen zum Zeichnen einer GUI zu verwenden.

Aus Neugier, was machst du in diesem BIOS-Programm?