PCI
Der PCI-Bus (Peripheral Component Interconnect) ist ein weitgehend CPU-unabhängiges hochperformantes Bussystem für Computer und wurde im Jahre 1991 in seiner ursprünglichen Form von Intel konzipiert und im Laufe der Jahre stetig weiterentwickelt.
Für die Implementierung der PCMCIA-Sockets sind vor allem die Zugriffsmöglichkeiten auf vom PCI-Bus verwaltete Geräte relevant. Dies geschieht über den sogenannten "Configuration Space", welcher für jedes Gerät existiert. Unter Verwendung der PCI-Adresse (3-Tupel mit Busnummer, Gerätenummer und Funktionsnummer) kann man über das Schreiben dieser Adresse in das CONFIG_ADDRESS (0xcf8h) Register entsprechend die Konfigurationsdaten des PCI-Gerätes über das Register CONFIG_DATA (0xcfch) auslesen. Die PCI Implementierung in JX stellt hierzu bereits geeignete Methoden zur Verfügung, wodurch der Zugriff auf die Geräteinformationen für den Programmierer sehr abstrakt möglich ist.
PCMCIA
Bei PCMCIA handelt es sich eigentlich um eine Organisation, die Personal Computer Memory Card Inteface Association, welche im Jahre 1989 gegründet wurde und sich mit der Standardisierung vom Memory Cards beschäftigt - später wurden auch I/O-Karten mit hinzugenommen.
Es lassen sich, bedingt durch die Entwicklung im Laufe der Jahre, zwei Kartentypen unterscheiden, PC Cards und die weiterentwickelten CardBus-Karten. Beide Kartentypen sind mit heutigen PCMCIA-Sockets verwendbar, jedoch sind die verwendeten Zugriffsmechanismen sehr unterschiedlich.
Nachfolgende einige Kennzahlen zur Verdeutlichung der Unterschiede der beiden Kartentypen.
Unterschiede zwischen PCMCIA und Card-Bus
|
Parameter
|
PCMCIA
|
Card-Bus
|
|
Schnittstelle
|
68 Pins
|
68 Pins
|
|
Takt (max.)
|
asynchron
|
33 MHz
|
|
Bandbreite
|
8-20 MByte/s
|
132 MBytes/s
|
|
Datenbusbreite
|
16 Bit
|
32 Bit
|
|
Adressierung
|
26 Bit
|
32 Bit
|
|
Spannung
|
5V, 3,3V
|
3,3V
|
|
Interruptkanäle
|
1
|
1
|
|
Konfiguration
|
Attributspeicher
|
Configuration Space
|
|
Karteninformationen
|
CIS
|
Configuration Space
|
Im Rahmen von AKBPII wurde im ersten Schritt die Treiberunterstützung zur Verwendung der PCMCIA-Sockets implementiert. Die Sockets werden vom PCI-Bus direkt als PCI-Geräte gefunden und können über den PCI-typischen "Configuration Space" eingestellt werden.
Laut PCMCIA-Standard bieten sich 2 Möglichkeiten zum Zugriff auf die Steckkarten an: Memory Mapping beziehungsweise I/O Ports und die Kartenregister.
In der ursprünglichen Form des PCMCIA Standards wurde Memory Mapping angewandt, was jedoch die Verwendung spezieller Treiber nötig machte, da die normalen Gerätetreiber, zum Beispiel der Treiber der seriellen Schnittstelle, nicht über Memory Mapping ansprechbar war.
Aus diesem Grund wurde in der Version 2.0 des PCMCIA-Standards die Möglichkeit geschaffen, I/O-Adressbereiche der Steckkarten in den I/O Systemadressbereich einzublenden, wodurch die Wiederverwendbarkeit bereits vorhandener Treiber ermöglicht wurde.
Für den weitern Zugriff auf die Karteninformationen und -funktionen der in diesen Sockets eingelegten Steckkarten, welche zur Identifizierung der Karte dienen, bieten die beiden Kartentypen unterschiedliche Konzepte an.
Bei PC Cards liegen diese Informationen in der CIS (Card Information Structure) im Attribute Memory (Attributspeicher) der Karte. PC-Cards verwenden laut Spezifikation zwei voneinander getrennte Speicher, den Attributspeicher, in welchem Konfigurationsinformationen hinterlegt sind und das Common Memory, in welchem die eigentlichen Nutzdaten der Steckkarten vorzufinden sind.
Aufbau einer PCCard:
Die im Attributspeicher verfügbare CIS ist eine verkettete Liste von Tupeln, wobei ein Tupel eine maximale Länge von 255 Bytes aufweisen kann und einen definierten Aufbau hat. Im ersten Byte steht der TPL-CODE, eine eindeutige ID zur Identifizierung der nachfolgenden Information. Das zweite Byte (TPL-LINK) legt die Länge der nachfolgenden Nutzinformationen fest, fungiert also als eine Art Zeiger auf das nachfolgende Tupel. Im Rahmen des Auslesens der CIS werden Informationen über den E/A- bzw. Speicherbedarf der Karte, die benötigte Spannung und die Interruptanforderungen ausgelsen.
Card-Bus-Karten, welche zeitlich gesehen nach dem PCI-Bus entwickelt wurden, sind PCI-Geräten sehr ähnlich und werden daher vom PCI-Bus nach erfolgter Initialisierung auch als solche erkannt. Die Konfiguration der Card-Bus-Karten erfolgt PCI-typisch über den "Configuration Space".
Nachfolgend der Configuration Space der verwendeten Texas Instruments 1520 Sockets.