Welche Speicherbereiche verwendet das BIOS?
-
Hi,
welche Speicherbereiche werden vom BIOS verwendet, also z.B. 0:0 bis 3f:f für Interruptvektortabelle. Darf man die 0:0 bis 3f:f überschreiben, wenn man in protected mode umschaltet? Welchen(Welche) Speicherbereich(e) sollte man meiden? Hab erst vor kurzem angefangen mit OS-Programmierung und wollte mir nun ein Konzept basteln, wo mein Kernel seine Daten abspeichert, bin aber teilweise mit der Hardware in Konflikt bekommen, weil ich mich wie gesagt nicht sehr auskenne. Oder wie kann ich die Geräte z.B. GraKa anweisen ihre Puffer woanders hinzulegen oder ist die Adresse statisch?
MfG
LokalMatador
-
Hi.
Wenn du saemtliche Interrupts im RealMode ausschaltest, bzw. in den ProtectedMode schaltest, und nicht mehr auf das BIOS und seine Funktionen zurueckgreifen willst, kannst du im Grunde genommen im RealMode-Speicher (die 640KByte o.Ae. bis hoechstens A0000h) rumschreiben, wie du lustig bist.
Ab A0000h hat die primaere VGA-Grafikkarte im Grafikmodus FrameBuffer. Je nach Modus/Einstellung kann der zwischen A0000h bis C0000h liegen. Wenn man AFAIK die Grafikkarte praktisch abschaltet, kann man den FrameBuffer auch als "normalen Speicher" verwenden - ist aber IMHO ein wenig unsinnig. Weiter verschieben kannst du den FrameBuffer nicht.
Ab C0000h bis FFFF0h liegen normalerweise BIOS-Shadows o.Ae. Maps in den Speicher. Wenn du nicht etwas bestimmtes mit den dort liegenden Daten anfangen willst, solltest du da die Finger von lassen. Von E0000h bis F0000h (dahinter liegt das BIOS-ROM) liegt zwar meist praktisch eh nichts, so dass du diesen Adressraum praktisch ummappen kannst (so wie EMS unter DOS das macht), bringt aber IMHO auch nicht viel.Zusammengefasst: Alles unterhalb von 1MB, aber ueberhalb von A0000h im phys. Adressraum kannst du nicht als gemeine Datenablage misbrauchen.
Praktisch kannst du das dank Intels Paging-System aber so drehen, das du og. physikalische Adressen dahin packst, wo sie dich nicht stoeren.Wenn du noch wissen willst, welche Hardware sonst noch Speicheradressen belegt, kannst du den PCI-Controller befragen. Entweder ueber das PCI-BIOS oder wenn du das schon verstuemmelt hast, direkt feststellen welche Southbridge verbaut wurde und direkt ansprechen.
-
Noch als Nachtrag: die Interruptvektorentabelle schaut im PM soundso ganz anders aus und kann an einer beliebigen Stelle im Speicher liegen.