Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
151,38 KB
Nội dung
Teil 5 · Interfaces und Peripherie 796 10.4.4 Die PCI-Bus-Register Für die Kommunikation mit PCI-Einheiten sind gegenüber ISA zwei spezielle Adres- sen im I/O-Adressraum vorgesehen, die jeweils 32 Bit breit sind und den Zugriff auf den Configuration Space erlauben: CONFIG ADDRESS und CONFIG DATA. I/O-Adresse Bezeichnung Funktion 0CF8h Config Address Adresse 0CFAh Config Data Daten Tabelle 10.12: Die Register für den Zugriff auf den Konfigurationsbereich von PCI-Einheiten Ein Zugriff auf den Configuration Space wird dadurch ausgeführt, dass zunächst die Adresse an 0CF8h übergeben wird. Ein Schreibbefehl auf die Adresse 0CFAh (Config Data) überträgt daraufhin den gewünschten Wert an die spezifizierte Stelle im Gerätekonfigurationsbereich. Ein Lesezyklus funktioniert nach dem gleichen Prinzip. Das Config-Address-Register hat die folgende Belegung: Config Address Register (0CF8h): Bit 31 Bit 30-24 Bit 23-16 Bit 15-11 Bit 10-8 Bit 7-2 Bit 1 Bit 0 Enable Reserviert Bus-Nr. Geräte-Nr. Funktion Register 0 0 Mit einer »1« im Enable-Bit wird ein Konfigurationszyklus eingeleitet. Mit einer 0 wird hingegen ein I/O-Zyklus – kein PCI-spezifischer – durchgeführt. Die Bits 30-24 sind für das Lesen reserviert und liefern immer eine 0. Mit den Bits 23-16 wird einer von 256 theoretisch möglichen PCI-Bussen (meist ist nur einer vorhanden) ausgewählt. Die Auswahl einer PCI-Einheit erfolgt mit Gerä- te-Nr. und die Bits 10-8 (Funktion) selektieren eine spezielle Funktion bei einer PCI-Multifunktionseinheit. Mit den Bits 7-2 wird das gewünschte Register im Configuration Space selektiert (siehe folgendes Kapitel). Wie die Zuordnung von Bus- und Gerätenummer für ein Intel-Mainboard aussehen kann, zeigt die folgende Tabelle. 797 Bus Nr. Geräte Nr. Funktion Verwendung 00 00 00 System-Controller 00 07 00 PCI-ISA-Bridge 00 07 01 IDE Bus Master 00 0E – PCI-Slot 1 00 0F – PCI-Slot 2 00 10 – PCI-Slot 3 Tabelle 10.13: PCI-Bus-Geräteadressen und ihre Funktionen bei einem Intel-Chipsatz Für PCs gibt es einen zweiten Konfigurationszugriff, wobei hier der Configuration Space einer PCI-Einheit in einen 4 Kbyte großen Adressbereich zwischen C000h- CFFFh eingeblendet wird. Das Register unter der I/O-Adresse 0CF8h wird dann als Configuration Space Enable bezeichnet und stellt sich wie folgt dar. Configuration Space Enable Register (0CF8h): Bit 7-4 Bit 3-1 Bit 0 Key Function Special Cycle Enable, SCN Die Abbildung des Konfigurationsbereiches, was nur bei SCN=1 möglich ist, erfolgt nach dem Schreiben einer Function Number in die Bits 3-1. Diese Nummer be- stimmt, welche PCI-Einheit in welchem Bereich eingeblendet wird, wobei diese Zuordnung festliegt (z.B. 0: C000h-C0FFh, 1: C100h-C1FFh, 15: CF00h-CFFFh). Das Schreiben eines beliebigen, von 0 abweichenden Wertes in die Key-Positionen be- endet den Vorgang. Die dritte Möglichkeit, auf den Configuration Space zuzugreifen, bietet die Soft- ware-Schnittstelle des BIOS (Interrupt 1Ah), was auch die üblichere Vorgehenswei- se ist. Wie dies im Einzelnen funktioniert, ist beispielsweise im Buch PC Hardware Referenz (Markt&Technik) erläutert. 10.4.5 Der Konfigurationsbereich – Configuration Space Peripheral Component Interconnect definiert einen Konfigurationsbereich (Configu- ration Space) von 256 Byte, womit eine automatische Konfigurierung der PCI-Ein- heiten zu erreichen ist. Jede PCI-konforme Einheit verfügt über einen eigenen Konfigurationsbereich, wobei die hier festgelegten Parameter in der Regel während des Bootvorganges oder nach einem Systemreset aus einem externen EEPROM auf der PCI-Karte gelesen werden. Bussysteme Teil 5 · Interfaces und Peripherie 798 00h Device ID (02-03h) Vendor ID (00h-01h) 04h Status-Register (06h-07h) Command-Register (04h-05h) 08h Class Code (0Ah-0Bh) Revision ID (08h) 0Ch BIST (0Fh) Header Type(0Eh) Latency Timer (0Dh) Cache Line Size (0Ch) 10h Base Address Register 0 14h Base Address Register 1 18h Base Address Register 2 1Ch Base Address Register 3 20h Base Address Register 4 24h Base Address Register 5 28h Reserviert 2Ch Reserviert 30h Expansion ROM Base Address (Erweiterungs-ROM) 34h Reserviert 38h Reserviert 3Ch Max-Lat Min-Gnt Interrupt Pin Interrupt Line Tabelle 10.14: Der Aufbau des Headers im Konfigurationsbereich Dieser Konfigurationsadressraum wird in einen Header-Bereich und in einen geräte- abhängigen Bereich unterteilt. PCI-Geräte müssen generell nur diejenigen Register unterstützen, die für ihre Funktion benötigt werden. Der Konfigurationsbereich muss dabei zu jeder Zeit und nicht nur beim Booten adressierbar sein. Vorgeschrieben ist für jedes PCI-Device der Header-Bereich von 64 Bytes und die weiteren 192 Bytes sind geräteabhängig und können von den Herstellern für eige- ne Funktionen eingesetzt werden. In diesem Bereich befinden sich beispielsweise bei einem PCI-Mainboard die Register für die Cache- und die DRAM-Speicher- steuerung, für die Bridges und zahlreiche weitere. Vendor- und Device-IDs Alle PCI-Geräte müssen die Vendor- (Herstellerkennung) und Device-ID (Geräte- kennung) sowie das Status- und Kommando-Feld unterstützen, alle anderen Felder sind optional und können auch in Abhängigkeit von der jeweiligen Gerätefunktion als Reserviert angesehen werden. Für die Herstelleridentifizierung (Vendor-ID) wird von der PCI Special Interest Group (PSIG) eine eindeutig identifizierbare Nummer vergeben, während die Nummern für die Geräteidentifizierung und die Revisionsnummer vom Hersteller des PCI- Gerätes selbst festgelegt werden können. 799 Command-Register Mit dem Kommando-Register (Command) wird die Steuerung des jeweiligen PCI- Gerätes beeinflusst. Hier wird festgelegt, wie es auf PCI-Zyklen zu reagieren hat. Nach dem Schreiben einer 0 in dieses Register wird die PCI-Einheit vom Bus logisch abgekoppelt und reagiert dann nur noch auf Konfigurationszugriffe. Command Register: 15-10 9 8 7 6 5 4 3 2 1 0 Reser- Fast /SERR Wait Parity VGA Memory Special Bus Memory I/O- viert Back Enable Cycle Error Palette Write Cycle Master Space Space to Snoop Back >> >> > Bit 0: I/O-Space Mit einer 1 wird es dem Gerät ermöglicht, auf den I/O-Bereich zuzugreifen, eine 0 hingegen unterbindet dies. >> >> > Bit 1: Memory Space Mit einer 1 wird es dem Gerät ermöglicht, auf den Memory-Bereich zuzugrei- fen, eine 0 hingegen unterbindet dies. >> >> > Bit 2: Bus Master Mit einer 1 wird das Gerät als Master des Systems konfiguriert, eine 0 bewirkt die passive Teilnahme des Gerätes an den PCI-Buszyklen. >> >> > Bit 3: Special Cycle Eine 1 erlaubt die Teilnahme des Gerätes am Special Cycle Mode, (Sonderzyklen) eine 0 bewirkt dessen Ausschluss. Mögliche Zyklen sind beispielsweise Shutdown (CPU schaltet ab) oder auch speziell an die jeweilige CPU-Architektur angepasste (x86) und somit herstellerspezifische Funktionen. >> >> > Bit 4: Memory Write Invalidate Enable Ist dieses Bit gleich 1, darf der jeweils aktuelle PCI-Master des Systems ein Memory-Schreib-Kommando mit Invalidate (Ungültigkeitserklärung) ausfüh- ren, andernfalls (0) wird ein konventioneller Speicherzugriff ausgeführt. >> >> > Bit 5: VGA Palette Snoop Steuert den Zugriff auf das Paletten-Register einer VGA-kompatiblen Grafik- karte. Eine Funktion, die beispielsweise für die Kommunikation einer PCI- Grafikkarte mit einer ISA-Videokarte, die beide mit Hilfe des Feature-Connectors verbunden sind, benötigt wird. Mit einer 1 wird der Zugriff verwehrt. >> >> > Bit 6: Parity Error Ist dieses Bit gleich 0, reagiert das Gerät generell nicht auf Parity-Fehler, an- dernfalls (1) wird eine festgelegte (gerätespezifische) Funktion ausgeführt. >> >> > Bit 7: Wait Cycle Control Falls das PCI-Device Wartezyklen in den PCI-Bus-Datenverkehr einfügt, wird dies mit einer 1 festgelegt. Bussysteme Teil 5 · Interfaces und Peripherie 800 >> >> > Bit 8: /SERR Enable Mit einer 1 wird festgelegt, dass das Gerät die System Error Function (/SERR) ausführen kann. Nach einem Reset ist dieses Bit gleich 0, und falls das Gerät die System Error Function nicht verwenden soll, wird es auf 0 belassen. >> >> > Bit 9: Fast Back-to Back Cycle Bei gesetztem Bit (1) ist festgelegt, dass ein PCI-Master schnelle Zyklen auf mehrere PCI-Devices ausführen kann. >> >> > Bit 10-15: Reserviert In der PCI-Version 2.0 werden diese Bits nicht für PCI-Einheiten verwendet. Status-Register Das Status-Register einer PCI-Einheit informiert über den aktuellen Stand der PCI- Aktivität. Welche Bits im Einzelnen unterstützt werden, ist auch hier von der je- weiligen PCI-Gerätefunktion abhängig. 15 14 13 12 11 10 9 8 7 6-0 Parity System Master Target Signaled DEVSEL DEVSEL Data Fast Reser Error Error Abort Abort Target Timing 1 Timing 0 Parity Back-to- viert Abort Back >> >> > Bit 0-6: Reserviert Die Bits sind reserviert und werden bis zur PCI-Version 2.0 nicht für PCI-Ein- heiten verwendet. Reservierte und nicht unterstützte Bereiche enthalten übli- cherweise jeweils eine 0. >> >> > Bit 7: Fast Back-to-Back Das Bit signalisiert, ob Fast-Back-to-Back-Zyklen unterstützt werden (1) oder nicht (0). >> >> > Bit 8: Data Parity Dieses Bit wird nur von PCI-Busmastern verwendet und ist dann gesetzt, wenn Parity Error (PERR) aktiviert worden ist. >> >> > Bit 9, 10: DEVSEL Timing Die beiden Bits definieren das Timing des /DEVSEL-Signals (Device Select). DEVSEL Timing 1 DEVSEL Timing 0 Timing 0 0 Fast 0 1 Medium 1 0 Fast Tabelle 10.15: Einstellung des DEVSEL-Timings 801 >> >> > Bit 11: Signaled Target Abort Falls ein Bus-Zyklus vom PCI-Target abgebrochen worden ist, setzt es dieses Bit. >> >> > Bit 12: Target Abort Alle PCI-Busmaster müssen dieses Bit unterstützen und setzen es, wenn ein Target (Slave) eine Übertragung abgebrochen hat. >> >> > Bit 13: Master Abort Entspricht in der Funktion dem Bit 12 mit dem Unterschied, dass ein Master eine Übertragungsunterbrechung mit diesem Bit signalisiert. >> >> > Bit 14: System Error Dieses Bit wird immer dann von einer PCI-Einheit gesetzt, wenn ein System- fehler (Signal /SERR) aufgetreten ist. >> >> > Bit 15: Parity Error Beim Auftreten eines Paritätsfehlers setzt die PCI-Einheit dieses Bit. Class Codes Die Class-Code-Register (ab 0Ah) können vom Bus nur gelesen werden und geben Aufschluss über die grundsätzliche Funktion des PCI-Gerätes, wie es in der folgen- de Tabelle angegeben ist. Class Code Bedeutung 00h Rückwärtskompatibilität 01h Laufwerks-Controller 02h Netzwerk-Controller 03h Display Controller 04h Multimedia-Gerät 05h Memory Controller 06h Bridge Devices 07h Communication Controller 08h System-Peripherie 09h Input Devices 0Ah Docking Stations 0Bh Prozessoren 0Ch Serielle Buscontroller FFh keine Gerätezuordnung Tabelle 10.16: Die Class-Code-Register (0Dh-FEh sind reserviert) informieren über die grundsätzliche Funktion einer PCI-Einheit Bussysteme Teil 5 · Interfaces und Peripherie 802 Die Class-Code-Register werden jeweils in drei 8-Bit-Felder (Upper, Middle, Lower,) aufgeteilt: die Base Class, die Sub Class für eine genauere Bestimmung des Device- Typs und das Register Level Programming Interface (I/F), das bei einigen Einheiten stets fest als 00h definiert ist (vergl. Tabellen). Byte Offset Typ Bedeutung Upper 0Bh Base Class Identifizierung des Gerätetyps Middle 0Ah Sub Class Definiert spezielle Unterklassen Lower 09h Register Level Optionale Funktionen Programming Interface Tabelle 10.17: Beispiele für Sub Classes innerhalb der Base Classes Base Class 00h – Kompatibilität Sub Class Bedeutung 00h alle Geräte außer VGA 01h VGA-kompatibles Gerät Base Class 01h – Laufwerkscontroller Sub Class Bedeutung 00h SCSI Bus Controller 01h IDE Controller, mit Programming Interface 02h Floppy Disc Controller 03h IPI Bus Controller 80h anderer Laufwerkscontroller Base Class 02h – Netzwerk-Controller Sub Class Bedeutung 00h Ethernet Controller 01h Token Ring Controller 02h FDDI Controller 03h ATM Controller 80h anderer Netzwerk-Controller 803 Fortsetzung der Tabelle: Base Class 03h – Display Controller Sub Class Bedeutung 00h VGA Controller 01h XGA Controller 80h anderer Display-Controller Base Class 04 – Multimedia-Geräte Sub Class Bedeutung 00h Video Device 01h Audio Device 80h anderes Multimedia-Gerät Base Class 05h – Memory Controller Sub Class Bedeutung 00h RAM Controller 01h FLASH Controller 80h anderer Memory Controller Base Class 06h – Bridge Devices Sub Class Bedeutung 00h Host Bridge 01h PCI/ISA Bridge 02h PCI/EISA Bridge 03h PCI/MCA Bridge 04h PCI/PCI Bridge 05h PCMCIA Bridge 06h NuBus Bridge 07h CardBus Bridge 80h anderer Bridge-Baustein Bussysteme Teil 5 · Interfaces und Peripherie 804 Fortsetzung der Tabelle: Base Class 07h – Communication Controller Sub Class I/F Bedeutung 00h 00h XT kompatibler Controller 00h 01h 16450 Controller 00h 02h 16550 Controller 01h 00h SPP (Standard) 01h 01h Bi-directional Parallel Port 01h 02h ECP Parallel Port 80h 00h anderer Controller Base Class 08h – System-Peripherie Sub Class I/F Bedeutung 00h 00h 8259 Interrupt Controller 00h 01h ISA-kompatibler PIC (Programmable Interrupt Controller) 00h 02h EISA-kompatibler PIC 01h 00h 8237 DMA Controller 01h 01h ISA-kompatibler DMA-Controller 01h 02h EISA-kompatibler DMA-Controlller 02h 00h generic 8454 Timer (Standard) 02h 01h ISA-kompatibler Timer 02h 02h EISA-kompatibler Timer 03h 00h generic Real Time Clock 03h 01h ISA RTC (Real Time Clock) 80h 00h anderes Device 805 Fortsetzung der Tabelle: Base Class 09h – Input Devices Sub Class I/F Bedeutung 00h 00h Keyboard Controller 01h 00h Digitizer 02h 00h Mouse Controller 80h 00h anderes Input Device Base Class 0Ah – Docking Stations Sub Class I/F Bedeutung 00h 00h generic Docking Station 80h 00h andere Docking Station Base Class 0Bh – Prozessorkarten Sub Class I/F Bedeutung 00h 00h 386-CPU 01h 00h 486-CPU 02h 00h Pentium-CPU 10h 00h Alpha-CPU 40h 00h Coprozessor Base Class 0Ch – serielle Buscontroller Sub Class I/F Bedeutung 00h 00h Firewire 01h 00h Access-Bus 02h 00h SSA Tabelle 10.18: Die Class-Code-Register bestimmen den jeweiligen PCI-Gerätetyp Bussysteme [...]... Tabelle 10.20: Die PCI-Register beim Intel-Chipsatz 82430 für Pentium-PCs 807 5 · Interfaces und Peripherie Teil 10.5 ISA-Plug&Play PCI ist »von Hause aus« Plug&Play-fähig, kann demnach die PCI-Einheiten automatisch konfigurieren, d.h die PC- Ressourcen konfliktfrei auf die einzelnen PCI-Devices verteilen Bei ISA-Karten ist dies bekanntermaßen nicht möglich, da die zu reservierenden PC- Ressourcen per... Burst-Periode einer PCI-Einheit, bezogen auf einen Takt von 33 MHz > Interrupt Pin Dieses Register informiert über den verwendeten PCI-Interrupt-Kanal der PCIEinheit Einfache – keine Multifunction Devices – dürfen nur den INTA verwenden Wert Kanal 0 keiner 1 INTA 2 INTB 3 INTC 4 INTD Tabelle 10.19: Der Bezug der Interrupt-Pin-Information zum jeweiligen INTx-Kanal 806 Bussysteme > Interrupt Line Jede PCI-Einheit,... Identifikation der Revisionsnummer für das PCIDevice > BIST: Built In Self Test Das Register steuert den Selbsttest der PCI-Einheit Falls keiner implementiert ist, liefert das Register immer 0 Bei der Ausführung des Tests nimmt die Einheit nicht am PCI-Datenverkehr teil > Header Type Das Header-Byte identifiziert in den Bits 0-6 die Belegung der Bytes 10h-3Fh im PCI Configuration Space und gibt an, ob... Hier ist angegeben, über welchen ISA-IRQ-Anschluss der PCIInterrupt abgebildet wird Device Space Wie erwähnt, ist lediglich der Header des Configuration Space eindeutig definiert Wie die übrigen 192 Byte (Device Space) verwendet werden (40h-FFh), hängt von den jeweiligen PCI-Einheiten ab Im Folgenden sind als Beispiel die Register, wie sie beim PCI-Chipsatz Intel 82430 vorhanden sind, angegeben Offset... immer zu den üblichen PCI-Taktzyklen addiert wird > Cache Line Size Dieses Register spezifiziert die Cache-Line-Größe in Einheiten zu jeweils 32 Bit > Base Address Register 0-5 In diesen Registern werden die Basisadressen für einen oder mehrere I/Ound/oder Memory-Bereiche festgelegt, die von der jeweiligen PCI-Einheit verwendet werden sollen > Expansion ROM Base Address Falls das PCI-Device ein ROM (z.B... Übergang von einem anderen Bussystem hin zu PCI ist zwar dadurch erleichtert worden, dass ein PCI-Mainboard oft noch einige ISA-Slots besitzt, gleichwohl ist ISA eben nicht Plug&Play-fähig Aus diesem Grunde wurde von Intel und Microsoft im Jahre 1993 ISA-Plug&Play definiert, was auch ISA-Karten zu dieser Fähigkeit verhelfen soll, was nach der Vorstellung von PCI erfolgte ISA-Plug&Play-Karten besitzen... der Regel nicht notwendig, denn das Betriebssystem erkennt beim Bootvorgang, unabhängig davon, ob der PC nun über ein Plug&Play-BIOS verfügt oder ob ISA-Plug&Play-Karten vorhanden sind, und verwaltet die Ressourcen daraufhin konfliktfrei Bild 10.15: Die Anzeige während der PC- Initialisierung bei einem PC mit Plug&Play-BIOS 809 5 · Interfaces und Peripherie ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○... Driver-Verzeichnis auf der Original-NT-CD Es gibt eine ganze Reihe von PCs, die zwar ein PCI-BIOS besitzen, jedoch keine ISAPlug&Play-Unterstützung Erst ab dem Jahre 1996 wurden die meisten PCs mit einem BIOS ausgeliefert, das auch diese Funktionalität bietet Ob dies gegeben ist, lässt sich bereits nach dem Einschalten des PC anhand einer Meldung wie Award Plug and Play BIOS Version v.1.0A (vergl Bild 10.15)... andererseits ein Plug&Play-BIOS im PC voraussetzt Eine konventionelle ISA-Karte – auch als Legacy ISA bezeichnet – kann daher nicht einfach ohne Änderungen des ISA-Interfaces für ISA-Plug&Play verwendet werden Das erste Betriebssystem, welches ISA-Plug&Play standardmäßig unterstützt, ist Windows 95 Da weder Intel noch Microsoft erwarten konnten, dass die Anwender ihren konventionellen PC, der eben nicht über... Dieses Verfahren wird insbesondere bei Soundkarten häufig angewendet Eine automatische Konfigurierung der verschiedenen PC- Karten ist damit jedoch kaum möglich, da das herstellerspezifische Installationsprogramm keine zuverlässige Information darüber erhalten kann, welche Ressourcen des PC bereits belegt sind und welche nicht ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ . 07 00 PCI-ISA-Bridge 00 07 01 IDE Bus Master 00 0E – PCI-Slot 1 00 0F – PCI-Slot 2 00 10 – PCI-Slot 3 Tabelle 10.13: PCI-Bus-Geräteadressen und ihre Funktionen bei einem Intel-Chipsatz Für PCs. – Bridge Devices Sub Class Bedeutung 00h Host Bridge 01h PCI/ISA Bridge 02h PCI/EISA Bridge 03h PCI/MCA Bridge 04h PCI/PCI Bridge 05h PCMCIA Bridge 06h NuBus Bridge 07h CardBus Bridge 80h anderer. festgelegt, dass ein PCI-Master schnelle Zyklen auf mehrere PCI-Devices ausführen kann. >> >> > Bit 10-15: Reserviert In der PCI-Version 2.0 werden diese Bits nicht für PCI-Einheiten