Die folgenden Begriffe werden oft verwendet, wenn es um serielle Kommunikation geht:
Bits pro Sekunde (bps) ist die Einheit für die Übertragungsgeschwindigkeit.
Eine Datenendeinrichtung (Data Terminal Equipment) ist einer der beiden Endpunkte bei der seriellen Kommunikation. Zum Beispiel ein Computer.
Datenübertragungseinrichtung (Data Communications Equipment) ist der andere Endpunkt bei der seriellen Kommunikation. Typischerweise ein Modem.
Der originale Standard, der serielle Datenübertragung definiert. Er wird heutzutage als TIA-232 bezeichnet.
In diesem Abschnitt wird der Begriff „Baud“ nicht für Übertragungsgeschwindigkeiten gebraucht. Baud bezeichnet elektrische Zustandswechsel pro Zeiteinheit, die Taktfrequenz, während „bps“ der richtige Begriff für die Übertragungsgeschwindigkeit ist.
Um ein Modem oder einen Terminal an ein FreeBSD-System anzuschließen, muss der Computer über eine serielle Schnittstelle verfügen. Zusätzlich wird das passende Kabel benötigt, um das Gerät mit der Schnittstelle zu verbinden. Benutzer, die mit seriellen Geräten und den nötigen Kabeln schon vertraut sind, können diesen Abschnitt überspringen.
Es gibt verschiedene serielle Kabel. Die zwei häufigsten sind Nullmodemkabel und Standard-RS-232-Kabel. Die Dokumentation der Hardware sollte beschreiben, welcher Kabeltyp benötigt wird.
Ein Nullmodemkabel verbindet einige Signale, wie die Betriebserde, eins zu eins, andere Signale werden getauscht: Die Sende- und Empfangsleitungen werden zum Beispiel gekreuzt.
Nullmodemkabel für die Anbindung eines Terminals können auch selbst hergestellt werden. Die folgende Tabelle enthält die Signalnamen von RS-232C sowie die Pinbelegung für einen Stecker vom Typ DB-25. Obwohl der Standard eine direkte Verbindung von Pin 1 zu Pin 1 (Protective Ground) vorschreibt, ist diese in vielen Fällen nicht vorhanden. Einige Terminals benötigen nur die Pins 2, 3 und 7 für eine korrekte Funktion, während andere eine unterschiedliche Konfiguration als die in den folgenden Beispielen gezeigte benötigen.
Signal | Pin # | Pin # | Signal | |
---|---|---|---|---|
SG | 7 | verbunden mit | 7 | SG |
TD | 2 | verbunden mit | 3 | RD |
RD | 3 | verbunden mit | 2 | TD |
RTS | 4 | verbunden mit | 5 | CTS |
CTS | 5 | verbunden mit | 4 | RTS |
DTR | 20 | verbunden mit | 6 | DSR |
DTR | 20 | verbunden mit | 8 | DCD |
DSR | 6 | verbunden mit | 20 | DTR |
DCD | 8 | verbunden mit | 20 | DTR |
Die folgenden zwei Schemata werden heutzutage ebenfalls häufig eingesetzt:
Signal | Pin # | Pin # | Signal | |
---|---|---|---|---|
RD | 2 | verbunden mit | 3 | TD |
TD | 3 | verbunden mit | 2 | RD |
DTR | 4 | verbunden mit | 6 | DSR |
DTR | 4 | verbunden mit | 1 | DCD |
SG | 5 | verbunden mit | 5 | SG |
DSR | 6 | verbunden mit | 4 | DTR |
DCD | 1 | verbunden mit | 4 | DTR |
RTS | 7 | verbunden mit | 8 | CTS |
CTS | 8 | verbunden mit | 7 | RTS |
Signal | Pin # | Pin # | Signal | |
---|---|---|---|---|
RD | 2 | verbunden mit | 2 | TD |
TD | 3 | verbunden mit | 3 | RD |
DTR | 4 | verbunden mit | 6 | DSR |
DTR | 4 | verbunden mit | 8 | DCD |
SG | 5 | verbunden mit | 7 | SG |
DSR | 6 | verbunden mit | 20 | DTR |
DCD | 1 | verbunden mit | 20 | DTR |
RTS | 7 | verbunden mit | 5 | CTS |
CTS | 8 | verbunden mit | 4 | RTS |
Wird ein Pin eines Kabels mit zwei Pins des anderen Kabels verbunden, werden dazu in der Regel zuerst die beiden Pins mit einem kurzem Draht verbunden. Danach wird dieser Draht mit dem Pin des anderen Endes verbunden.
Die eben besprochenen Schemata scheinen die beliebtesten zu sein. Weitere Varianten verbinden SG mit SG, TD mit RD, RTS und CTS mit DCD, DTR mit DSR, und umgekehrt.
Ein Standard-RS-232C-Kabel verbindet alle Signale direkt. Das Signal „Transmitted Data“ wird mit dem Signal „Transmitted Data“ der Gegenstelle verbunden. Dieses Kabel wird benötigt, um ein Modem mit einem FreeBSD-System zu verbinden. Manche Terminals benötigen dieses Kabel ebenfalls.
Über serielle Schnittstellen werden Daten zwischen dem FreeBSD-System und dem Terminal übertragen. Dieser Abschnitt beschreibt die verschiedenen Schnittstellen und wie sie unter FreeBSD angesprochen werden.
Da es verschiedene Schnittstellen gibt, sollte vor dem Kauf oder Selbstbau eines Kabels sichergestellt werden, dass dieses zu den Schnittstellen des Terminals und des FreeBSD-Systems passt.
Die meisten Terminals besitzen DB-25-Stecker. Personal Computer haben DB-25- oder DB-9-Stecker. Eine serielle Multiportkarte hat vielleicht RJ-12- oder RJ-45-Anschlüsse.
Die Dokumentation der Geräte sollte Aufschluss über den Typ der benötigten Anschlüsse geben. Oft hilft es, wenn Sie sich den Anschluss einfach ansehen.
Unter FreeBSD wird jede serielle Schnittstelle
(Port) über einen Eintrag in /dev
angesprochen. Es gibt dort zwei verschiedene
Einträge:
Schnittstellen für eingehende Verbindungen werden
/dev/ttyu
genannt. Dabei ist N
N
die Nummer
der Schnittstelle, deren Zählung bei Null beginnt.
Allgemein wird diese Schnittstelle für Terminals
benutzt. Diese Schnittstelle funktioniert nur, wenn ein
„Data Carrier Detect“ Signal
(DCD) vorliegt.
Für ausgehende Verbindungen wird in FreeBSD 8.X und
neueren Versionen
/dev/cuau
verwendet. FreeBSD 7.X und ältere Versionen verwenden
N
/dev/cuad
.
Dieser Port wird normalerweise nur von
Modems genutzt. Er kann allerdings auch für
Terminals benutzt werden, die das
„Data Carrier Detect“ Signal nicht
unterstützen.N
Wenn ein Terminal an die erste serielle Schnittstelle
(COM1
) angeschlossen ist, wird er
über /dev/ttyu0
angesprochen.
Wenn er an der zweiten seriellen Schnittstelle
(COM2) angeschlossen ist, verwenden Sie
/dev/ttyu1
, usw.
In der Voreinstellung benutzt FreeBSD vier serielle
Schnittstellen, die unter MS-DOS® als
COM1
, COM2
,
COM3
und COM4
bekannt sind. Momentan unterstützt FreeBSD einfache
Multiportkarten, wie bspw. die BocaBoard 1008 und 2016 und
bessere wie die von Digiboard und Stallion Technologies. In
der Voreinstellung sucht der Kernel allerdings nur nach den
Standardanschlüssen.
Um zu überprüfen, ob der Kernel die seriellen
Schnittstellen erkennt, achten Sie auf die Meldungen beim
Booten, oder schauen sich diese später mit
/sbin/dmesg
an. Achten Sie
auf Meldungen die mit uart
beginnen:
#
/sbin/dmesg | grep 'uart'
Wenn der Kernel nicht alle seriellen Schnittstellen
erkennt, müssen Sie /boot/device.hints
konfigurieren. Wenn Sie diese Datei editieren, können Sie
die Einträge für Geräte, die auf dem System nicht vorhanden
sind, auskommentieren oder komplett entfernen.
port IO_COM1
ist ein Ersatz für
port 0x3f8
, IO_COM2
bedeutet port 0x2f8
, IO_COM3
bedeutet port 0x3e8
und IO_COM4
steht für port 0x2e8
. Die angegebenen
IO-Adressen sind genau wie die Interrupts 4, 3, 5 und 9
üblich für serielle Schnittstellen. Beachten Sie, dass sich
normale serielle Schnittstellen auf ISA-Bussen
keine Interrupts teilen können.
Multiportkarten besitzen zusätzliche Schaltkreise, die es
allen 16550As auf der Karte erlauben, sich einen oder zwei
Interrupts zu teilen.
Die meisten Geräte im Kernel werden durch
Gerätedateien in /dev
angesprochen. Die
sio
Geräte werden durch
/dev/ttyuN
für eingehende Verbindungen und durch
/dev/cuau
für
ausgehende Verbindungen angesprochen. Zum Initialisieren der
Geräte stellt FreeBSD die Dateien
N
/dev/ttyu
und
N
.init/dev/cuau
zur Verfügung.
Zusätzlich existieren Dateien für das Sperren von
Gerätedateien (Locking).
Dabei handelt es sich um die Dateien
N
.init/dev/ttyuN.lock
und
/dev/cuau
.
Diese Dateien werden benutzt, um Kommunikationsparameter beim
Öffnen eines Ports vorzugeben. Für Modems, die zur
Flusskontrolle N
.lockRTS/CTS
benutzen, kann damit
crtscts
gesetzt werden. Die Geräte
/dev/ttyldN
und
/dev/cualaN
(locking
devices) werden genutzt, um bestimmte Parameter festzuschreiben und
vor Veränderungen zu schützen. Weitere Informationen
zu Terminals finden Sie in termios(4), sio(4) erklärt
die Dateien zum Initialisieren und Sperren der Geräte,
stty(1) beschreibt schließlich
Terminal-Einstellungen.
Anwendungen benutzen normalerweise die Geräte
ttyu
oder
N
cuau
. Das
Gerät besitzt einige Voreinstellungen für Terminal-I/O,
wenn es von einem Prozess geöffnet wird. Mit dem folgenden
Kommando können Sie sich diese Einstellungen ansehen:N
#
stty -a -f /dev/ttyu1
Wenn diese Einstellungen verändert werden, bleiben sie
nur solange wirksam, bis das Gerät geschlossen wird.
Wenn das Gerät danach wieder geöffnet wird, sind die
Voreinstellungen wieder wirksam. Um die Voreinstellungen
dauerhaft zu ändern, öffnen Sie das Gerät, das zum Initialisieren
dient und verändern dessen Einstellungen. Um beispielsweise
für ttyu5
den CLOCAL
Modus, 8-Bit Kommunikation und XON/XOFF
Flusssteuerung einzuschalten, setzen Sie das folgende
Kommando ab:
#
stty -f /dev/ttyu5.init clocal cs8 ixon ixoff
In /etc/rc.d/rc.serial
werden die
systemweiten Voreinstellungen für serielle Geräte
vorgenommen.
Um zu verhindern, dass Einstellungen von Anwendungen
verändert werden, können Sie die Geräte zum
Festschreiben von Einstellungen („locking devices“)
benutzen. Wenn sie beispielsweise die Geschwindigkeit von
ttyu5
auf 57600 bps festlegen wollen,
benutzen Sie das folgende Kommando:
#
stty -f /dev/ttyld5 57600
Eine Anwendung, die ttyu5
öffnet,
kann nun nicht mehr die Geschwindigkeit ändern und muss
57600 bps benutzen.
Die Geräte zum Initialisieren und Festschreiben von
Einstellungen sollten selbstverständlich nur von
root
beschreibbar sein.
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an
<de-bsd-translators@de.FreeBSD.org>.