1. Trang chủ
  2. » Công Nghệ Thông Tin

PC Werkstatt Ausgabe 2000- P54 potx

15 107 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

I/O-Adresse Bezeichnung Funktion Tabelle 10.12: Die Register für den Zugriff auf den Konfigurationsbereich von PCI-Einheiten Ein Zugriff auf den Configuration Space wird dadurch ausgefüh

Trang 1

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

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

Trang 2

Bus Nr Geräte Nr Funktion Verwendung

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 beispielsweiVorgehenswei-se 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

Trang 3

00h Device ID (02-03h) Vendor ID (00h-01h)

04h Status-Register (06h-07h) Command-Register (04h-05h)

0Ch BIST (0Fh) Header Type(0Eh) Latency Timer (0Dh) Cache Line Size

(0Ch)

30h Expansion ROM Base Address (Erweiterungs-ROM)

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 Funktioeige-nen 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

Trang 4

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:

Reser- Fast /SERR Wait Parity VGA Memory Special Bus Memory I/O-viert Back Enable Cycle Error Palette Write Cycle Master Space Space

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

Trang 5

> 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 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

Parity System Master Target Signaled DEVSEL DEVSEL Data Fast Reser Error Error Abort Abort Target Timing 1 Timing 0 Parity Back-to- viert

>

> 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

Tabelle 10.15: Einstellung des DEVSEL-Timings

Trang 6

> 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

Tabelle 10.16: Die Class-Code-Register (0Dh-FEh sind reserviert) informieren über die grundsätzliche

Funktion einer PCI-Einheit

Trang 7

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

Base Class 01h – Laufwerkscontroller

Sub Class Bedeutung

01h IDE Controller, mit Programming Interface

Base Class 02h – Netzwerk-Controller

Sub Class Bedeutung

Trang 8

Fortsetzung der Tabelle:

Base Class 03h – Display Controller

Sub Class Bedeutung

80h anderer Display-Controller

Base Class 04 – Multimedia-Geräte

Sub Class Bedeutung

Base Class 05h – Memory Controller

Sub Class Bedeutung

Base Class 06h – Bridge Devices

Sub Class Bedeutung

Trang 9

Fortsetzung der Tabelle:

Base Class 07h – Communication Controller

Sub Class I/F Bedeutung

01h 01h Bi-directional Parallel Port

Base Class 08h – System-Peripherie

Sub Class I/F Bedeutung

(Programmable Interrupt Controller)

01h 02h EISA-kompatibler DMA-Controlller

Trang 10

Fortsetzung der Tabelle:

Base Class 09h – Input Devices

Sub Class I/F Bedeutung

Base Class 0Ah – Docking Stations

Sub Class I/F Bedeutung

Base Class 0Bh – Prozessorkarten

Sub Class I/F Bedeutung

Base Class 0Ch – serielle Buscontroller

Sub Class I/F Bedeutung

Tabelle 10.18: Die Class-Code-Register bestimmen den jeweiligen PCI-Gerätetyp

Trang 11

> Revision ID

Dieses Register enthält die Identifikation der Revisionsnummer für das PCI-Device

>

> 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 es sich um eine Einheit mit meh-reren Funktionen (Multifunction) handelt In diesem Fall führt das Bit 7 eine 1

>

> Latency Timer

Legt die Zeit fest, für die ein aktueller Master noch den Bus okkupieren darf, bis die Anforderung eines weiteren Masters bearbeitet wird Hierfür findet sich oftmals im BIOS-Setup ein entsprechender Eintrag mit einem vorgegebenen Wert, der 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/O-und/oder Memory-Bereiche festgelegt, die von der jeweiligen PCI-Einheit ver-wendet werden sollen

>

> Expansion ROM Base Address

Falls das PCI-Device ein ROM (z.B für ein BIOS) benötigt, wird hier die Basis-adresse für das ROM angegeben

>

> Max-Lat

Gibt einen gerätespezifischen Wert in Einheiten von 0,25 µs für den Latency-Timer vor

>

> Min-Gnt

Spezifiziert die Zeit für eine Burst-Periode einer PCI-Einheit, bezogen auf ei-nen Takt von 33 MHz

>

> Interrupt Pin

Dieses Register informiert über den verwendeten Interrupt-Kanal der PCI-Einheit Einfache – keine Multifunction Devices – dürfen nur den INTA ver-wenden

Tabelle 10.19: Der Bezug der Interrupt-Pin-Information zum jeweiligen INTx-Kanal

Trang 12

> Interrupt Line

Jede PCI-Einheit, die Interrupts verarbeiten kann, verfügt über dieses 8-Bit-Register Hier ist angegeben, über welchen ISA-IRQ-Anschluss der PCI-Interrupt 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

59h-5Fh PAM [6:0] Programmable Attribute Map R/W

Tabelle 10.20: Die PCI-Register beim Intel-Chipsatz 82430 für Pentium-PCs

Trang 13

10.5 ISA-Plug&Play

PCI ist »von Hause aus« Plug&Play-fähig, kann demnach die PCI-Einheiten automa-tisch 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 reservieren-den PC-Ressourcen per Jumper auf reservieren-den einzelnen Karten festgelegt werreservieren-den müssen Der Ü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 einen speziellen I/O-Chip, damit sie an dem defi-nierten Identifizierungs- und Konfigurationsprozess teilhaben können Das Inter-face einer derartigen Karte ist demnach völlig anders aufgebaut als das einer kon-ventionellen ISA-Karte

Leider ist der Begriff Plug&Play nicht geschützt, so dass am Markt eine Vielzahl

von Einsteckkarten existierten, die zwar diese Bezeichnung führen, aber keines-wegs dem Intel-/Microsoft-Standard gehorchen Diese Karten werden lediglich ohne Jumper oder DIP-Schalter auf herstellerspezifische Art und Weise konfigu-riert, haben im Prinzip aber nichts mit dem Intel-/Microsoft-Standard gemein Diese Software-konfigurierbaren ISA-Karten, die es schon seit vielen Jahren gibt, funktionieren vereinfacht dargestellt wie folgt: die Schalterstellungen einfach durch

ein Latch (74LS373) oder einen Registerbaustein (D-Flip-Flop, 74LS374) ersetzt.

Durch einen Software-Treiber, der sich üblicherweise in der CONFIG.SYS befindet, werden die zuvor – via Installationsprogramm – festgelegten Daten dann in das Latch geschrieben und gelten damit bis zum nächsten Bootvorgang für die ent-sprechende Karte Dieses Verfahren wird insbesondere bei Soundkarten häufig an-gewendet Eine automatische Konfigurierung der verschiedenen PC-Karten ist da-mit 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

○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○

Weder die üblichen Testprogramme wie etwa MSD noch die zu ISA-Einsteckkarten mitgelierten Installationsprogramme und auch nicht Windows 95 können bei kon-ventionellen ISA-Karten erkennen, ob und welche PC-Ressourcen von ihnen belegt werden Die Daten werden üblicherweise aus den PC-Konfigurationsdateien

○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○

(AUTOEXEC.BAT, CONFIG.SYS, *.INI) ermittelt.

Wie die typischen Diagnoseprogramme auch – beispielsweise Microsoft Diagnostic

(MSD) – kann das betreffende Installationsprogramm nur versuchen, die noch

frei-en Ressourcfrei-en zu ermitteln, was mehr oder wfrei-eniger gut funktioniert, da die (al-ten) ISA-Karten keinen allgemein gültigen Mechanismus bieten, der die tatsäch-lich festgelegten Schalterstellungen ermitteln und auch feststellen kann, von welcher Karte welche Ressourcen belegt werden Diese Datenermittlung kann nur anhand von Treibereinträgen wie in der AUTOEXEC.BAT, der CONFIG.SYS oder den

INI-Datei-en durchgeführt werdINI-Datei-en, wobei diese Einträge nicht zwangsläufig mit dINI-Datei-en

gejum-perten übereinstimmen müssen.

Zur Implementierung eines automatisch stattfindenden Konfigurierungsprozesses von ISA-Karten bedarf es daher eines standardisierten Verfahrens, ohne dass dabei – aus Kompatibilitätsgründen – elektrische Änderungen am ISA-Bus oder

zusätzli-che Signale nötig sind Intel und Microsoft haben eben dafür ISA-Plug&Play

Ngày đăng: 03/07/2014, 14:20