IO-Ports

From s23
Jump to navigation Jump to search

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