Autor Thema: VESA-Mode Speicherbereich; Streifen???  (Gelesen 7183 mal)

Cheebi

  • Beiträge: 91
    • Profil anzeigen
    • Cheebis Webseite
Gespeichert
« am: 23. July 2006, 04:14 »
Hallo mal wieder,

hab in letzter zeit häufig fragen, aber bin im mom halt relativ viel am tüfteln^^...
im vesamode 118h (1024x768) bekomme ich, wenn ich nach 0xa0000 und steigender adresse daten schreibe, nur einen farbigen streifen am oberen bildschirmrand angezeigt. woran liegt das? es müssten eigentlich daten über den kompletten bildschirm verteilt sein...
ich habe linear framebuffering ausgewählt. also bit14 bei der modeauswahl gesetzt.
warum werden dann daten nicht auch an höhere adresse wie zB 0xc0000 geschrieben? (zusatz info: bin im PM + A20gate enabled)

Gruß,
Cheebi
0100 1001 0100 1100 0100 0001 0010 0000 0011 1010 0010 1101 0010 1010
http://www.cheebi.de

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 23. July 2006, 10:34 »
Ab A0000 hast du grundsätzlich 64K Speicher, und da paßt dann eben bei deiner Auflösung nur soviel rein, daß du oben einen Streifen füllst. Die Bereiche direkt darüber gehören dem BIOS, es wäre also keine gute Idee, den Framebuffer dann einfach wachsen zu lassen, wenn man mehr braucht.

Langer Rede kurzer Sinn: Dein linearer Framebuffer liegt woanders. Wo genau, kannst du mit einer VESA-Funktion herausbekommen- 07h dürfte es sein, wenn ich mal einen kurzen Blick auf die Übersicht werfe.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 23. July 2006, 10:35 »
bei linearem Framebuffer musst du die Adresse an die du schreiben sollst erst aus dem Infoblock auslesen,
an a0000 ist der banked-mode buffer, in dem Modus musst du mehrere Streifen (meistens 4) einzeln beschreiben,
aber im Pmode ist das nur Performance verschwendung

lies dir am ebsten mal die Vesa Dokumentation durch, da steht das mit dem Infoblock drin

Cheebi

  • Beiträge: 91
    • Profil anzeigen
    • Cheebis Webseite
Gespeichert
« Antwort #3 am: 23. July 2006, 10:43 »
ok, dnke soweit^^

aber mal ne grundsätzliche frage, egal ob es nun etwas nützt die biosdaten zu überschreiben oder nicht. wozu brauche ich diese daten? ich meine, wenn ich nicht mehr in den RM schalte, ist es doch unnötig diese daten irgendwo im RAM gammeln zu lassen und darauf aufzupassen, dass man sie nicht überschreibt!?

cheebi
0100 1001 0100 1100 0100 0001 0010 0000 0011 1010 0010 1101 0010 1010
http://www.cheebi.de

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 23. July 2006, 10:47 »
soweit ich weis sind die auf ROMS oder EPROMS,
man kann sie also gar nicht überschreiben

Cheebi

  • Beiträge: 91
    • Profil anzeigen
    • Cheebis Webseite
Gespeichert
« Antwort #5 am: 23. July 2006, 10:49 »
hm??

heißt das, dass man bestimmte bereiche im RAM einfach nicht hat, sondern die bereiche auf irgendwelche chips verwiesen werden?? wo find ich denn mal ne übersicht über das, was das bios so belagert?
cheebi
0100 1001 0100 1100 0100 0001 0010 0000 0011 1010 0010 1101 0010 1010
http://www.cheebi.de

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 23. July 2006, 10:52 »
Naja aber der BIOS Code wird doch dennoch in den Speicher geschrieben....Sonst könnte der Prozessor den Code doch gar nicht ausführen.

Musst es selber wissen, aber wenn du später mal den V86-Mode benutzen willst oder aus irgendeinem Grund (z.B. VESA) kurz in den RM zurückgehen willst, ist das BIOS nützlich.

Gruss
Noooooooooooooooos

Cheebi

  • Beiträge: 91
    • Profil anzeigen
    • Cheebis Webseite
Gespeichert
« Antwort #7 am: 23. July 2006, 10:59 »
axo... gecheckt:
pc an : von ROM/(E)EPROM -> RAM werden die BIOSdaten geladen^^. ich dacht jetzt gerade, dass bestimmte adressen einfach nicht den RAM ansprechen, sondern direkt auf irgendwelche ROMs zugreifen.
ok.. aber im PM mit A20 hat man ja heutzutage genug platz, sodass man sich ja nicht um die paar kB BIOSmüll sorgen müsste^^
0100 1001 0100 1100 0100 0001 0010 0000 0011 1010 0010 1101 0010 1010
http://www.cheebi.de

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 23. July 2006, 11:10 »
Also garantieren kann ichs auch nicht!!!!!!!!!

Cheebi

  • Beiträge: 91
    • Profil anzeigen
    • Cheebis Webseite
Gespeichert
« Antwort #9 am: 23. July 2006, 11:23 »
das klingt am logischsten und nehm ich im mom mal als theorie... bis mein bild von der sache wieder umgestürzt wird... das is doch immer so... zB chemie.. man denkt man hat mal so n bisschen was verstanden und dann kommt plötzlich jmd. und sagt gut.. jetzt schaun wir uns das in zukunft anders an: orbitalmodell + wellenfunktionen *AHHH_SCHREI*^^
0100 1001 0100 1100 0100 0001 0010 0000 0011 1010 0010 1101 0010 1010
http://www.cheebi.de

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #10 am: 23. July 2006, 22:57 »
Das stimmt so nicht. Das BIOS ROM/EPROM wird nicht in den RAM geladen. Das ganze funktioniert etwas anders: Wenn die CPU auf eine Speicheradresse zugreifen will, dann wartet sie zuerst auf einen freien Buszyklus und legt dann die adresse auf den adressbus. Wenn die adresse zu irgendeinem an dem Bus angeschlossenem Gerät gehört, dann legt es die Daten auf den Datenbus von dem die CPU die Daten dann liest, d.h. nicht alles was über eine Adresse angesprochen werden kann muss auch im RAM liegen. Gegenbeispiele: VRAM, BIOS ROM, IOAPIC, APIC, PCI devices können auch
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #11 am: 24. July 2006, 11:06 »
Bei vielen PCs ist die Nummer eines VESA Modus anders. Schreib dir lieber eine Funktion und lese Informationen aus dem getesteten VESA Modus aus. Wenn du dann den gewünschten Modus hast, aktiviere ihn einfach. So mache ich das auch. Das ist immer noch die beste Lösung. Ach ja, prüfe von Modus 100h bis 1FFh das sind die Standardmoden.

bitmaster
In the Future everyone will need OS-64!!!

 

Einloggen