IO-Ports

Ein digitaler I/O-Port ist in den meisten Fällen eine ein Byte breite I/O-Position, die entweder in den Speicher oder als Port abgebildet wird. Wenn Sie einen Wert an diese Stelle schreiben, wird das elektrische Signal an den Ausgabe-Pins entsprechend den geschriebenen Bits geändert. Wenn Sie einen Wert aus der Eingabe-Position auslesen, wird das aktuelle logische Niveau an den Eingabe-Pins als individuelle Bit-Werte zurückgegeben.

Ein typischer Treiber ist die meiste Zeit damit beschäftigt, I/O-Ports und I/O-Speicher auszulesen und zu beschreiben. Der Zugriff auf I/O-Ports und I/O-Speicher (die oft unter dem Begriff I/O-Bereiche zusammengefaßt werden) geschieht sowohl während der Initialisierung als auch im Normalbetrieb.

Für Linux gilt: Die Dateien /proc/ioports und /proc/iomem enthalten Informationen über die registrierten Ressourcen in Textform, wobei letztere erst während der 2.3-Entwicklung eingeführt wurde.

Eine typische /proc/ioports-Datei auf einem neueren PC, auf dem ein 2.4-Kernel läuft, sieht etwa so aus:

0000-001f : dma1 0020-003f : pic1 0040-005f : timer 0060-006f : keyboard 0080-008f : dma page reg 00a0-00bf : pic2 00c0-00df : dma2 00f0-00ff : fpu 0170-0177 : ide1 01f0-01f7 : ide0 02f8-02ff : serial(set) 0300-031f : NE2000 0376-0376 : ide1 03c0-03df : vga+ 03f6-03f6 : ide0 03f8-03ff : serial(set) 1000-103f : Intel Corporation 82371AB PIIX4 ACPI 1000-1003 : acpi 1004-1005 : acpi 1008-100b : acpi 100c-100f : acpi 1100-110f : Intel Corporation 82371AB PIIX4 IDE 1300-131f : pcnet_cs 1400-141f : Intel Corporation 82371AB PIIX4 ACPI 1800-18ff : PCI CardBus #02 1c00-1cff : PCI CardBus #04 5800-581f : Intel Corporation 82371AB PIIX4 USB d000-dfff : PCI Bus #01 d000-d0ff : ATI Technologies Inc 3D Rage LT Pro AGP-133