Autor Thema: Nicht benutzbarer Speicher  (Gelesen 4437 mal)

[MM]

  • Beiträge: 130
    • Profil anzeigen
    • www.mmcoding.eu
Gespeichert
« am: 16. October 2005, 20:25 »
Hallo,

ich habe eben nach lager Fehlersuche festgestellt, dass ich den Speicher so ab 0xE0000 nicht beschreiben kann (alle Bits bleiben immer gesetzt).
Ich dachte immer, dass im Protected Mode der einzige nicht benutzbare Speicher der von 0xA0000-0xDFFFF wäre, wo die Grafikkarte ihren Speicher reinmapt.
Jetzt entdecke ich aber bei mir in den Unterlagen, dass angeblich von 0xCC000-0xEFFFF irgend welche ROM-Erweiterungen sind, was zwar mein Problem erklären würde, sich aber mit dem Bereich der Grafikkarte überschneidet.
Der Fehler tritt nicht mehr auf, wenn ich den bereich 0xA0000-0xFFFFF meide.
Meine Fragen sind nun: Wie groß ist dieser Bereich genau, gibt es davon noch mehr und ist der Bereich überall gleich groß?
Und wo wir schonmal dabei sind, noch eine Frage, die mich schon immer interessiert hat: Kann man der Grafikkarte auch sagen, dass sie den Grafikkartenspeicher an eine andere Adresse mappen soll?

MM

n3Ro

  • Beiträge: 288
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 16. October 2005, 20:54 »
Schau einfach mal ans Ende dieses Threads:
http://www.lowlevel.brainsware.org/forum/viewtopic.php?t=552
Agieren statt Konsumieren!

[MM]

  • Beiträge: 130
    • Profil anzeigen
    • www.mmcoding.eu
Gespeichert
« Antwort #2 am: 17. October 2005, 13:57 »
OK, das erklärt zumindest meine Hauptfragen.
Aber was ist damit den Videospeicher an eine andere Stelle zu mappen? Ist das möglich? Und dabei eventuell auch gleich noch den gemappten Bereich vergrößern?
Ich weiß, dass man der Karte sagen kann, welche Bank in den Speicher gemappt werden soll, aber gibts da noch mehr Funktionen?

MM

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #3 am: 17. October 2005, 15:32 »
<TABLE border=1>
  <TBODY>
  <TR>
    <TD>0x0000 - 0x0040</TD>
    <TD>Hier befinden sich die Interrupt Service Routine Vectors (ISR
      vectors). Hier sollten wie bessern nicht machen (zumindest solange nicht,
      bis wir genau wissen, was wir tun!)</TD></TR>
  <TR>
    <TD>0x0040 - 0x0100</TD>
    <TD>Der BIOS-Datenbereich (hierfür gilt das gleiche wie für oben)</TD></TR>
  <TR>
    <TD>0x0100 - 0x07C0</TD>
    <TD>Dieser Bereich ist frei verfügbar.</TD></TR>
  <TR>
    <TD>0x07C0 - 0x07E0</TD>
    <TD>Hierhin wird der Bootsektor geladen. Dieser Bereich sollte nicht vom
      Bootsektor aus berührt werden, aber sobald das OS geladen ist und der BS
      nicht mehr ausgeführt wird, ist er frei verfügbar.</TD></TR>
  <TR>
    <TD>0x07E0 - 0xA000</TD>
    <TD>Dieser Bereich ist wieder frei verfügbar.</TD></TR>
  <TR>
    <TD>0xA000 - 0xC000</TD>
    <TD>Hier befindet sich das Video-Subsystem. Dieser Bereich wird auch
      besser in Ruhe gelassen, solange, bis wird Zeichen ohne BIOS-Interrupts
      direkt ausgeben möchten.</TD></TR>
  <TR>
    <TD>0xC000 - 0xFFFF</TD>
    <TD>Diesen ganzen Bereich nimmt der ROM eine (ROM Bios, etc.) In diesen
      Bereich kann nicht geschrieben werden.</TD></TR></TBODY></TABLE>
Dies ist der html Code der dein Problem erklärt. Habe nicht herausgefunden wie ich hier html anzeige deswegen als Code.
In the Future everyone will need OS-64!!!

[MM]

  • Beiträge: 130
    • Profil anzeigen
    • www.mmcoding.eu
Gespeichert
« Antwort #4 am: 17. October 2005, 18:06 »
Sehr hübsch, aber darüber bin ich inzwischen durch den anderen Thread ausreichend informiert.
Mich würde viel mehr das mit dem Grafikspeicher interessieren.
(wobei dies eventuell in einen neuen Thread gehören sollte, oder?)

MM

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #5 am: 17. October 2005, 18:17 »
oops.  :oops:  Habe ich irgendwie nicht mitbekommen. Aber dabei kann ich dir leider nicht helfen. Ich glaube das geht garnicht der Grafikkarte anderen Speicher als Grafikspeicher zu zuweisen. (bin mir aber nicht sicher). Das meintest du doch oder?
In the Future everyone will need OS-64!!!

n3Ro

  • Beiträge: 288
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 17. October 2005, 19:44 »
Über die VGA-Register kannst du den Bereich und die Größe des Videospeichers innerhalb der gegebenen Grenzen verändern und somit bis zu 128kb Videospeicher benutzen, jedoch nur für die "alten" VGA Modes. Das der Speicherbereich von 0xa0000 - 0xbffff der GraKa gehört ist aber glaub ich nicht änderbar. Wie man den Rom Bereich verschiebt, weiß ich leider nicht, dennoch glaube ich das es a) nicht möglich bzw. b) nicht viel Sinn hat.
Wie das bei neuen Modi aussieht, wenn man Lineare Framebuffer woanders im Speicher benutzt kann ich auch nicht sagen, da kann sich jede GraKa anders verhalten und leider gibt es von den 2 "großen" Herstellern auch keine Specs (die haben ja leider Angst man könnte denen was abschauen)
Agieren statt Konsumieren!

[MM]

  • Beiträge: 130
    • Profil anzeigen
    • www.mmcoding.eu
Gespeichert
« Antwort #7 am: 17. October 2005, 19:57 »
Naja, wäre schon praktisch, wenn man was mit großer Grafik machen will, dass man dann einfach 1mb RAM als Map benutzt und sich dann das Umschalten der Speicherbanken sparen könnte...
Oder geht das auch anders effizienter als nur über das doch recht kleine Fenster bei 0xA0000 auf den Grafikspeicher zuzugreifen (ohne Grafikkartenfunktionen wie Line und Fill meine ich)?

MM

n3Ro

  • Beiträge: 288
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 17. October 2005, 20:00 »
Das geht mit Linearen Framebuffer, aber wie gesagt funktioniert das bei jeder GraKa anders :?
Agieren statt Konsumieren!

 

Einloggen