FAQ |
Gut
zu wissen
Schnellinstallation:
Quick
Install
Die Plug-and-Play
(PnP) Funktion
Da diese spezifischen Parametrierungsregister in jedem System dynamisch geführt werden und kein einheitlicher, fester Speicherplatz (bsp. MEM-Adresse) vergeben wird, kann das Lesen dieser Information auch nur durch einen für alle Motherboard-Hersteller vorgegebenen Interrupt-Aufruf erfolgen, der die Registerabfrage auf einheitlicher Ebene ermöglicht indem die Inhalte in die CPU-Register BH, BL, AH übertragen werden. Per Software-Interrupt-Aufruf (bsp. INT 0x1A) werden somit bestimmte PCI-Funktion-Register abgefragt und dem Benutzer zur Verfügung gestellt. Über Status- und Command-Register können Informationen über jede verwendete PCI-Karte ausgelesen und gegebenenfalls auch gesetzt werden. Die Vendor-ID ist die Nummer des Herstellers der verwendeten Karte, die Device-ID gibt immer nur die Gerätenummer des verwendeten Produkts an. Die Vendor-ID Nummer (kurz VID) wird vom PCI-SIG (PCI Special Interest Group) vergeben, die Device-ID Nummern werden vom jeweiligen Hersteller initiiert. Die PCISIG ist ein Konsortium, welches alle Spezifikationen des PCI-Busses kontrolliert. Über diese Institution können auch die genauen Spezifikationen zum PCI-Bus bezogen werden, in der auch die genaue Erläuterung der Register und Interrupt-Aufrufe stehen. Die PCI - Spezifikation
PCI & Windows
9x
Oft sind es nur ein paar I/O-Adressen die man kennen muss um die ganze Sache schnell, bequem und erfolgreich in Betrieb zu nehmen. Die Beispiele sind so konzipiert, dass die jeweilige Messkarte initialisiert, ausgelesen und deren Ergebnisse in einer Tabelle/Liste auf der Konsole als Zahlenwert dargestellt wird. Neben kartenspezifischen Ausgaben wie Volt, mA, Pegel oder Frequenz, bleiben weitergehende Datenauswertungen und Umrechnungen der Kreativität des Programmierers überlassen. Die Sourcen sind frei verfügbar und können in eigene Softwareentwicklungen direkt übernommen werden. Wenn Sie keine KOLTER-CD besitzen, werden bei Windows-9x zu unseren PCI-Karten immer zwei Disketten ausgeliefert. Erstens: Die Windows-9x Treiber, die auch unsere ISA-bus-Karten unterstützen, zweitens: die PCI-Diskette, die unter Windows-9x weitere Treiber (wie VXD, INF) und diverse PCI-Diagnose-Tools bereitstellt. Mit den PCI-Tools können beispielsweise I/O-Adressen zur jeweiligen PCI-Karte aus dem Rechner-BIOS ausgelesen werden. Wurde die PCI-Karte richtig unter Windows-9x installiert (mit dem Hardwareassistenten), muss sie im Gerätemanager als Multifunkionskarte mit ihrer dazugehörigen I/O-Adress-Base eingetragen werden. Die Adress-Base (meistens im Bereich xx00 bis xxFF) zeigt dem Benutzer den I/O-Adressbereich, unter der die jeweilige Karte direkt angesprochen wird. Werden mehrere, gleiche Karten in einem System verwendet, ordnet der Gerätemanger (über das PCI-BIOS zuvor eingelesen) die Karten in ihrer Adresslage hintereinander an, sodass kein Adressierungskonflikt entstehen kann. Im PCI-BIOS werden zwei gleiche Karten nur durch die Device-Nummer und Adresslage unterschieden. Vendor-ID und Produkt-ID bleiben weiterhin identisch und können/sollen nicht verändert werden, da sonst eine klare Zuweisung im System nicht mehr gewärleistet ist. PCI & Windows
NT
Kartenerkennung
Eine weitere Möglichkeit: Richten Sie sich auf der Festplatte eine zweite, kleine DOS-Patition ein und installieren Sie MS-DOS 6.x zusätzlich zu Ihrem Windows-NT. Wenn Sie anschließend mit DOS anstatt Windows-NT booten, können Sie ein 16-bit Tool von der PCI-Diskette (bzw. CD) verwenden, um die Adresslage der PCI-Karte aus dem PCI-BIOS zu lesen. Das kleine 16-bit-Tool heisst PCIVIEW.EXE und kann direkt unter DOS gestartet werden (nicht aber unter Windows-NT in einer DOS-Box!!!). Die Ausgaben zeigen dem Anwender alle relevanten PCI-Einstellungen und Adressbelegungen der eingesteckten PCI-Hardware an. Unsere PCI-Karten erkennen Sie sofort an der kartenspezifischen Vendor-ID 1001h und der entsprechenden Produkt-ID. Ähnlich wie bei der separaten DOS-Partition, können Sie auch Windows-9x/ME direkt neben Windows-NT installieren. Mit dem Gerätemanager und den PCI-Tools können Sie nun ebenfalls die Adesslage ermitteln und diese ebenfalls unter NT anwenden. Da beide Betriebssysteme auf das gleiche PCI-BIOS zugreifen (ESCD) und die Adressvergabe beim Bootvorgang bereits fest zugeteilt wird, ist folglich die Eintragung zu jeder Hardware für beide Windows-Systeme gleichbedeutend. Falls Sie DOS oder Win9x nicht installieren möchten, nutzen Sie von Bluewatersystems das Windows-NT-Programm: PCIVIEW.EXE. Hiermit können Sie zur jeder Vendor-ID und Produkt-ID (damit wird die Karte im PCI-BIOS während des bootens dem System zugewiesen) die Adresslage ermitteln. Leider ist in diesem Viewer-Programm noch ein kleiner Schönheitsfehler. Sie muessen bei der Basis-Startadresse 1 abziehen, um auf die tatsächliche Adresse zugreifen zu können. Der Grund für diesen "Fehler" liegt in der PCI-Spezifikation festgelegtem Config-Command-Register, wo demnach das Bit 0 bei der Adresserkennung für I/O-Karten auf 1 gesetzt werden muss. Folglich wird auch die Adress-Base (in diesem Fall) mit 0x00006501h und nicht mit 0x00006500h angezeigt. Die Startadresse ist aber nach wie vor bei 6500h. Da unser PCI-Controller immer einen festgelegten Adressblock von 256 Bytes benötigt, ist demnach die Endadresse 65FFh. Auf die korrektur des Schönheitfehlers bei Bluewatersystems haben wir jedoch keinen Einfluss. PCIVIEW für NT kann im Internet unter http://www.bluewatersystems.com kostenlos heruntergeladen werden und gehört zum Lieferumfang des WIN-DK Treiber-Tool-Kit. Ein weiteres Kernel-Treiber-Kit
gibt es auch von NUMEGA:
Kostenlos dagegnen, bieten wir mit HWT.EXE ein Anwendungs-Tool an, um die Adresslage der Hardware zu erkennen und um eine Zugriffsanalyse auf Portebene durchzuführen. Man kann mit HWT = HardWareTest (Bild) prüfen, wie schnell der Rechner auf I/O-Ports zugreifen kann. Dazu wird in einer Zeitschleife 1 Mio Portoperationen durchgeführt und die dabei verstrichene Zeit gemessen. Gute Mainboards werden ca. 2 Mio. Portzugriffe pro Sekunde auf Windows-Plattformen aufweisen. Programmierer, die eine automatische Erkennung einer PCI- Karte unter Visual-BASIC programmieren möchten, können für einen geringen Betrag den VB6 Projekt-Source von HWT1 käuflich erwerben. Jeder weitere VB6-Source zu unseren Anwendungen kann ebenfalls erworben werden. Nun, da jetzt die Adresslage zu jeder PCI-I/O-Karte ermittelt werden kann, muss auch der Source auf diese I/O-Adressen naturgemäß angepasst werden. Nach Aufrufen des NTP-Device-Driver über den OPEN-Befehl, wird die Adresse in das NT-System erstmals wirklich übertragen. Wurde ein I/O-Zugriff einmal ausgeführt (PCI-Karte über input oder output angesprochen), ist die Adresslage nun auch in der Windows-NT-Diagnose plötzlich eingetragen. Warum Windows-NT das nicht schon beim booten erledigt, bleibt wohl ein Geheimnis. Bei Windows 9x/ME geht es, bei NT4 geht es nicht, bei 2000 und XP geht es dann wieder. Nach aufrufen der Windows-NT-Diagnose >> Ressourcen >> I/O-Port, ist die nun folgende Liste um den Eintrag der Karte erweitert worden: Es werden die I/O-Adresse (Start...Ende), der Portiodriver und das Bussystem angezeigt. Da wir bei der Port-Programmierung keinen Unterschied zwischen PCI- und ISA-Adressen machen, kann es vorkommen, dass der Bus-Typ bei PCI auch als ISA anzeigt wird, was jedoch nicht weiter von Bedeutung ist, da der Teribr für beide Bus-Arten ausgelegt ist. Clickt man nun auf diesen Eintrag (Doppelklick) werden die Eigenschaften angezeigt. Hier werden jetzt u.a. die Adresslage (Startadresse) und Byte-Länge des Adressbereichs angezeigt. Offenbar kann aber die Windows-NT-Diagnose auch nicht richtig addieren, da die Länge von FFh bytes auf 6500h im Ergebnis auf 65FEh kommt. Dieser Fehler war jedenfalls bei den NT-Service-Packs SP3 und SP4 zu beobachten. PCI & Windows
2000 / XP
Neuer Treiber
für Windows 2000 und XP
Digitale Signierung
Literaturquelle: PCI Hardware
and Software von Edward Solari and George Willse.
Weitere Links zu PCI:
PnP
und PCI-Bus mit Tücken ?
In der Regel dauert es dann nur wenige Minuten, bis das System vollständig unbrauchbar ist. Durch ausführen des Setup wird irgend ein unbrauchbarer oder falscher Treiber mitinstalliert und die gesamte Installation von Windows haut es förmlich aus den Angeln. Nach einem erneuten Start fährt das System entweder gar nicht mehr hoch oder nur im ärmlichen "abgesicherten Mode". Also ohne jeglichen Treiber versteht sich ?!?. Anschließend wird herumexperimentiert um die ganze Sache irgendwie wieder in Bertieb zu nehmen. Eine völlige Neuinstallation ist hier oftmals die einzige Abhilfe. Gelungene Software/Hardwareinstallationen liegen weit unter 10%, aber das ist ja mittlerweile Jedem bekannt. Ein häufiges Aufrufen des Hardwareassistenten bringt oftmals nur den Gerätemanager aus dem Gleichgewicht. Man findet dann plötzlich 6 CD-ROM Laufwerke mit netten, gelben Ausrufungszeichen oder blaue Bildschirme mit Schutzverletzungen mit VXD und IOS-Meldungen ... PCI
und Messtechnik
Warum ? PCI-Steckplätze besitzen äußerst hohe Taktraten, die zum Teil bis in den hohen GHz-Bereich auf allen Leitungen messbar sind. Diese unerwünschten EM-Störungen hindern empfindliche A/D- und I/O-Messkarten an einer präzisen Messung, da direkte Einstreuungen bzw. Überkopplungen vom Daten/Adress-Bus auf analoge Leitungen, das Nutzsignal schwerwiegend beeinflussen können. Um kapazitive und induktive Störungen zu vermeiden, müsste man die Schaltung komplett abschirmen, alle Datenleitungen und Stromversorgungen extrem filtern und den Analog-Digitalwandler am besten 1 Meter entfernt über den PCI-Slot aufbauen (kleiner Witz am Rande). Eine weitaus sinnvollere Methode ist natürlich bei der Entwicklung ein besonders sorgfältiges Layoutdesign zu wählen, dass wie ein Tiefpass für schnelle Transienten wirkt, um dem GHz-Gau entgegenzuwirken. Ist
PCI wirklich schneller ?
Die Low-Power-Schottky-Zeiten sind beim PCI-bus endgültig abgemeldet. Diese "langsamen" 74LSxxx ICs können bei der hohen Busgeschwindigkeit einfach nicht mehr mithalten, da sie Daten, Adressen und Steuersignale auf den internen Bussen verschleifen und somit keine einwandfreie Zuordnung der Daten zum Zeitpunkt eines reads oder writes erfolgen kann. Theoretisch ist ein PCI-Adressbus-Zyklus 60ns lang (bei 33 MHz Bus-CLK), jedoch konnten bei drei verschiedenen Motherboards auch drei unterschiedliche Zeiten ( 42, 56 und 70ns) gemessen werden. Somit ist der PCI-bus wie auch sein Vorgänger (VL-Bus) ein "hochdynamischer Frequenzbreigenerator", aus dem es die Daten zu fischen gilt. Der Unterschied zum ISA-Bus besteht darin, dass bei der Dekodierung von I/O-Adressen, genügend Zeit zu Verfügung stand und somit das Restrisiko einer Datenüberschneidung (Wechsel von Adressbus auf Datanbus durch ALE) sehr gering war. Beim PCI-bus ist jedoch gerade dieser "Vorteil" äußerst kritisch zu sehen, da die Chips bis an ihre Leistungsgrenzen ausgereitzt werden. Einer der größten Irrtümer ist, das der PCI-bus ein schneller I/O-bus sei. Ein ausdekodierter I/O-read- oder I/O-write ist zwar nur ca. 60ns lang, jedoch erlauben die PCI-frames keine höhere bzw. redundante Datenrate von weniger als 0,5...2 us. Selbst bei einer so einfachen Normierung konnten sich die Motherboard- und Chiphersteller nicht einigen. Im Klartext: Eine Endlosschleife, die nur aus I/O-Schreibzyklen besteht, vermag gerade mal eine Frequenz von max. 2..3 MHz (bei den schnellsten Motherboards) zu erzeugen. Die I/O-Frequenz (worst-case) ist dabei noch nicht einmal von der CPU oder der CPU-Geschwindigkeit abhängig. Interne System-Timer, PCI-matches und -bridges, Parametrierungs-Frames und BIOS-Operationen verlangsamen den I/O-Prozess derart, dass höhere Datenraten nicht erzielt werden können. Einziger Vorteil gegenüber ISA ist der nun vorherrschende 32-bit-Bus, mit dem jetzt quasi 4x 8-bit mit 2 MHz übertragen werden können. Die so oft propagierte, aber falsche Annahme, macht Schule in den Medien und stellt den PCI-Bus in ein Licht, das er nicht verdient. Ein Datendurchsatz von 132 Mb/sek. ist theoretisch nur auf den internen PCI-Bus-Leitungen (direkt auf dem Motherboard selbst) oder als DMA-Block bzw. Memory-Pages möglich (umständlich i.d. Programmierung). Eine Ausnahme bildet zur Zeit der AGP-Bus, der jedoch bislang nur für Graphikkarten entwickelt wurde und einen Datentransfer von angeblich > 100 MHz zulässt. Alle anderen Daten, Adressen und I/O-Signale müssen sich durch eine oder mehrere PCI-bridges schlängeln und werden somit immer abgebremst am Slot mit einer Latenzzeit von ca. 0,5...2 us zur Verfügung stehen.
KOLTER ELECTRONIC ist nicht für die Inhalte fremder Seiten verantwortlich. Es gelten ausschließlich die AGB der Firma KOLTER ELECTRONIC. Für die Richtigkeit der Angaben wird keine Gewähr übernommen. Alle Preisangaben sind gewerblich. Das Zahlungsmittel ist EURO. Alle Rechte vorbehalten. (c) copyright H.Kolter |