Auslesen des PCI Config Space



  • Aber so richtig unplausibel ist die Bildschirmausgabe ja nicht. Zumindest ist nicht alles völlig blödsinnig, 0x8086 als Vendor bekommst Du ja. Ich würde den Fehler an der Stelle vermuten, wo Du die anderen Werte liest.



  • Hallo Mr X,

    ich habe mein Programm mal auf dem Laptop starten lassen.

    Hier werden mir wohl alle Geräte mit Sub Class 12 (0xC) und Class Code 0x3 angezeigt.

    Insgesamt vier Geräte. 3x UHCI und 1x xHCI
    UHCI mit einer 16 Bit Base Adresse (0x1821; 0x1841 und 0x1861) und
    xHCI mit einer 32 Bit Base Adresse (0xF6504000)

    Kann das vielleicht nur an Virtual PC liegen? 😕
    Jedes mal das Programm auf Disk ziehen und umstöpseln ist nicht gerade
    hilfreich und ziemlich zeitaufwändig 🙄

    Aber es geht schonmal... 👍

    Nicky



  • Virtual PC gibt die Hardware deines PCs nicht wieder, sondern hat seine eigene, die er emuliert.



  • Sollten aber nicht gerade deshalb die Geräte auf gleiche Weise
    zu finden sein wie auf echter Hardware?



  • Nein, eben deshalb ist es andere Hardware (nämlich immer die gleiche, je nach Emulator). Hier ist eine Übersicht über die Hardware von VPC: http://www.lowlevel.eu/wiki/Microsoft_Virtual_PC



  • Hallo,

    das Auslesen klappt nun sehr gut. 👍

    Nach einigen Test mit Virtual PC und Virtual Box habe ich herausgefunden, das
    die Basisadresse beim Linear Frame Buffer meiner Grafikkarte bei

    VPC : 0xF8000000
    VBOX: 0xE0000008

    liegt. Diesen Wert finde ich auch im Register Basis Adresse der VGA Karte im PCI Bus.
    Ich möchte dort gern den Wert 0x1000000 (16MB) schreiben, da ich nicht immer mit 4GB Ram ausgestattet bin 😞

    Nach dem Schreiben erhalte ich jedoch beim nochmaligen Auslesen des Registers immer den Wert 0x0.

    Nach meine Lektüre ist es durchaus möglich andere Werte einzutragen.

    Ist es bei Grafikkarten vielleicht nicht "vorgesehen" einen anderen Wert einzutragen?

    Hat jemand einen Tipp für mich?

    Gruß, Nicky



  • Ich möchte dort gern den Wert 0x1000000 (16MB) schreiben, da ich nicht immer mit 4GB Ram ausgestattet bin

    Auch wenn Du nur ein Byte RAM hättest - der virtuelle Adressraum ist 4 GiB groß beim x86. Mit Paging stellt sich die Frage daher eigentlich nicht.



  • Soll ich mit Paging den Bereich umleiten?



  • Du kannst ihn umleiten, musst Du aber nicht. Wie gesagt, der Adressraum ist hinreichend groß und der Speicher, den Du hier beschreibst, ist der der VGA. Der ist bloß in den normalen Adressraum gemappt.


  • Mod

    Unterscheide zwischen dem physischen und dem virtuellen Adressraum.



  • Hätte ich das mal eher gewußt...
    Ich bin immer davon ausgegangen das man physisch auch den Speicher haben muss den man ansprechen will.

    Bin jetzt jedenfalls am schreiben der Ausgaberoutine im 256 Farbmodus.

    Danke nochmal 👍


Anmelden zum Antworten