Wie findet man raus welche Speicherbereiche auf ein Geraet gemappt (?) sind?Es gibt die Standardgeräte, welche man immer an den selben Stellen im I/O- bzw. Speicheradressraum findet. Das wären zB der ISA DMA Controller, der VRAM im Textmodus, PIC, PIT, Floppy Controller, ...
Wie kann man diese "verknuepfung" zwischen Geraet und Speicher aufheben bzw. herstellen?Das macht normalerweise das BIOS für dich (durch ISA PnP und PCI) kann aber auch geändert werden (zumindest bei PCI bin ich da sicher).
Was fuer I/O-Ports sind fuer was genau gut?Um mit der Hardware zu kommunizieren.
wie komme ich an die Vendor-ID eines Speziellen PCI-Geraetes heran?siehe hier (http://www.osdev.org/wiki/PCI)
ZitatWas fuer I/O-Ports sind fuer was genau gut?Um mit der Hardware zu kommunizieren.
Zitatwie komme ich an die Vendor-ID eines Speziellen PCI-Geraetes heran?siehe hier (http://www.osdev.org/wiki/PCI)
Gibt es vllt eine Liste mit Ports und was sich hunter ihnen verbirgt? also wozu "sie gut sind"?
Man stelle sich folgende Situation vor: Ich moechte herausfinden ob in meinem PC ein bestimmtes PCI-Geraet vorhanden ist (Ein Geraet eines bestimmten Herstellers, um bei der Vendor-ID zu bleiben). Ich moechte nun rausfinden ob das Geraet vorhanden ist. Vllt gibst da auch ein Beispiel fuer?Du liest einfach den Konfigurationsraum jedes "möglichen" Device (-> PCI device structure), d.h. du gehst von bus 0 device 0 function 0 bist bus 256 device 32 function 8 und schaust ob das device existiert (device.id != 0xFFFF && device.id != 0).
int bus, device;
unsigned int indowrd, outdword;
for (bus = 0 ; bus <= 0xff ; bus++) {
for (device = 0 ; device < 0x1f ; device++) {
outdword = 0x80000000 | (bus << 16) | (device << 11);
out32(0xcf8, outdowrd);
indword = in32(0xcfc) & 0xffff;
if (indword != 0 && indword != 0xffff) {
dealWithIt(bus, device);
}
}
}
Aber was ist denn die Function-Nummer? Dachte das ist etwas Geraetespezifisches was bei jedem Geraet ein anderes Verhalten ausloesen kann. Oder irre ich mich da?
Wie finde ich denn ueber den Header type heraus ob ein bestimmtes Geraet Funktionen unterstuetzt?Bit 7 (höchstes Bit) im Byte 14 muss gesetzt sein, damit es ein Multifunction device ist.
[...] damit werde ich dann wohl weitaus bequemer [...]*hust* grub *hust*
*hust* grub *hust*Du, taljeth usw. lebt wohl nach dem Lied "Das ist alles nur geklaut, alles gar nicht meine ..." :-P