Wie funktioniert der lineare Framebuffer?



  • Moin, Moin...

    Bekannterweise unterstützt der VESA-Standard ab 2.0 einen linearen Framebuffer. Bei meiner GraKa mit zusätzlicher VESA-Erweiterung(TSR-Programm) wird die physikalische Adresse 0xf8000000 angezeigt. Wie habe ich diese Adresse zu verstehen? In der VBE-Doku steht, dass diese Adresse in den linearen Speicherbereich gemappt werden muss(z.B. mit DPMI-Funktion 0800h). Wenn ich den LFB aber z.B. in meinem kleinen, unbedeutenden, rudimentären Kernel verwenden möchte, wie muss dann vorgehen. Die Adresse kann ich ja wohl nicht direkt ansprechen und so verwenden.

    Wenn meine GraKa 64 KByte Speicher hat, ist dieser Speicher Bestandteil des CPU-RAMS oder ist der Grafikspeicher komplett unabhängig und getrennt vom Speicherraum?

    Danke im voraus...

    [ Dieser Beitrag wurde am 07.07.2003 um 07:05 Uhr von Kal El editiert. ]



  • Moin, Moin...

    Ich habe mal etwas herumexperimentiert. In meinem Bootprogramm habe ich nach dem VESA-BIOS gesucht und überprüft, ob VBE 2.0 und der lineare Framebuffer unterstützt werden. Dann habe ich mit der physikalische Adresse des Framebuffers einen Deskriptor gebastelt. Das Limit des Descriptors ist die Größe des Video-RAMs. Den Selektor für diesen Deskriptor habe ich in Register FS eingetragen und so mit FS den Zugriff auf das Video-RAM versucht. Ich habe den VESA-Modus 115h(800 x 600, 24 Bit Farbtiefe) benutzt. Tatsächlich füllte sich der Bildschirm mit der gewünschten Farbe. Die Adresse des linearen Framebuffers, die man mit der VESA-Funktion 01h ermittelt, kann man tatsächlich direkt verwenden, um auf das Video-RAM zuzugreifen.

    Ciao...


Anmelden zum Antworten