Inhalt

7. Gerätedateien für die serielle Schnittstelle /dev/ttyS2, usw.

Gerätedateien (engl.: Devices) enthalten im Unterschied zu »normalen« Dateien keine Daten. Ein Zugriff des Betriebssystems auf eine Gerätedatei bedeutet einen Zugriff auf das entsprechende Peripheriegerät, welches durch die Gerätedatei dargestellt wird. Häufig wird zwischen Gerät und Gerätedatei gar nicht mehr unterschieden, für beide wird einfach der Begriff »Device« verwendet.

Informationen über das Anlegen von Gerätedateien im Verzeichnis /dev finden Sie im Kapitel »Creating Devices in the /dev directory« der Serial HOWTO.

7.1 Namen und Nummern von Devices am seriellen Port

Devices haben unter Linux Major und Minor Numbers. Jeder serielle Port kann durch zwei gültige Gerätedatein im /dev-Verzeichnis repräsentiert sein: ttyS und cua. Die entsprchenden Gerätetreiber (d.h. die Software, die auf diese Dateien zugreift) verhalten sich leicht unterschiedlich. Das cua-Device ist überholt und wird in Zukunft nicht mehr verwendet werden (siehe auch Die cua-Gerätedatei).

DOS/Windows verwendet den Namen »COM« für die seriellen Schnittstellen, während das setserial-Programm die Namen »tty00«, »tty01«, ... gebraucht. Verwechseln Sie diese Bezeichner nicht mit /dev/tty0, /dev/tty1, usw., die für Ihre Konsole verwendet werden, aber keine seriellen Ports sind. Die standardmäßigen DOS-Namen (COM1, usw) und I/O-Adressen sind in folgender Tabelle aufgeführt (die Werte auf Ihrem System können evtl. davon abweichen):

       set-                                              IO
DOS   serial          major minor         major minor  Adresse
COM1  tty00  /dev/ttyS0  4,  64;  /dev/cua0  5,  64      3F8
COM2  tty01  /dev/ttyS1  4,  65;  /dev/cua1  5,  65      2F8
COM3  tty02  /dev/ttyS2  4,  66;  /dev/cua2  5,  66      3E8
COM4  tty03  /dev/ttyS3  4,  67;  /dev/cua3  5,  67      2E8

In allen Linux-Distributionen sollten die ttyS-Devices bereits angelegt sein (und auch die cua-Devices, bis sie endgültig abgeschafft werden). Sie können dies durch folgende Befehle überprüfen:

ls -l /dev/cua*
ls -l /dev/ttyS*

7.2 Sollte ttySn auf /dev/modem gelinkt werden ?

Bei einigen Installationen werden zwei zusätzliche Devices angelegt, /dev/modem für das Modem und /dev/mouse für die Maus. Beides sind symbolische Links auf die entsprechende Gerätedatei in /dev, die Sie während der Installation ausgewählt haben (wenn Sie eine Bus-Maus haben ist /dev/mouse ein Link auf das Bus-Maus Device).

Es gab einige Diskussionen um den Sinn von /dev/mouse und /dev/modem. Von der Verwendung dieser symbolischen Links wird abgeraten. Insbesondere könnten sich Probleme mit den Lock-Dateien ergeben, wenn Sie das Modem für eine Einwahl von aussen zur Verfügung stellen wollen und /dev/modem verwenden. Sie können diese Links verwenden, aber stellen Sie sicher, dass sie auf das richtige Device verweisen. Andererseits müssen Sie u.U. andere Applikationen umkonfigurieren, wenn Sie diese Links verändern oder löschen.

7.3 Die cua-Gerätedatei

Jedes ttyS Device hat eine korrespondierendes cua Device. Aber das cua Device wird in Zukunft abgeschafft, und so empfiehlt es sich, ttyS zu verwenden (solange cua nicht explizit notwendig ist). Es gibt einen Unterschied zwischen cua und ttyS, aber ein findiger Programmierer kann es erreichen, dass sich ein ttyS Port wie ein cua Port verhält, so dass es keine Notwendigkeit mehr für cua gibt. Eine Ausnahme bilden einige ältere Programme, die cua verwenden müssen.

Worin besteht nun der Unterschied? Der hauptsächliche Unterschied zwischen cua und ttyS besteht darin, was in einem C-Programm passiert, wenn ein normaler open()-Aufruf versucht, einen Port zu öffnen. Ein cua Port kann einfach geöffnet werden, selbst wenn die Modem Signalleitungen überprüft werden und die DCD Leitung ein Öffnen eigentlich verbietet (weil sich niemand eingewählt hat und es daher auch kein Trägersignal gibt). Durch schlaue Programmierung kann man es aber erreichen, dass sich ein ttyS Port genauso verhält wie ein cua Port. Dies ist der Grund, warum cua früher für abgehende und ttyS für eingehende Verbindungen verwendet wurde.

Ab Linux Kernel 2.2 wird eine Warnmeldung in die Kernel-Logdatei geschrieben, wenn ein cua Port verwendet wird. Dies ist ein Zeichen dafür, dass cua Ports nicht mehr lange unterstützt werden.


Inhalt