Im Katalog suchen

Linux - Wegweiser für Netzwerker

Online-Version

Copyright © 2001 by O'Reilly Verlag GmbH & Co.KG

Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

Wünschen Sie mehr Informationen zu der gedruckten Version des Buches Linux - Wegweiser für Netzwerker oder wollen Sie es bestellen, dann klicken Sie bitte hier.


vorheriges Kapitel Inhaltsverzeichnis Stichwortverzeichnis nächstes Kapitel



Hilfsmittel zur Konfiguration

Nun befassen wir uns eine Weile mit den beiden nützlichsten Konfigurations-Hilfsmitteln für serielle Geräte: setserial und stty.

Der Befehl setserial

Der Kernel gibt sich alle Mühe, selbst herauszufinden, wie Ihre serielle Hardware für einen reibungslosen Betrieb konfiguriert werden muß. Das ist wegen der Vielzahl unterschiedlicher Konfigurationen serieller Geräte aber ein schwieriges Unterfangen. Wo die Probleme liegen, hatten wir bereits bei den internen Modems kurz besprochen. Sie verwenden zwar einen UART mit 16-Byte-Puffer, der Gerätetreiber im Kernel meint aber, er hätte es nur mit einem 16450 zu tun. Wenn er nicht ausdrücklich darüber informiert wird, daß es sich um einen 16550 handelt, wird der Kernel vom erweiterten Puffer keinen Gebrauch machen. Ein anderes Beispiel sind die einfachen 4-Port-Karten, die IRQ-Sharing unterstützen, d.h., alle seriellen Geräte können sich einen Interrupt teilen. In diesem Fall muß der Kernel ausdrücklich darüber informiert werden, welcher Interrupt genutzt werden soll und daß Interrupts mehrfach genutzt werden können.

Mit dem Befehl setserial können serielle Treiber zur Laufzeit des Systems konfiguriert werden. Normalerweise wird er während des Bootens von einem Skript aus gestartet. In einigen Distributionen hat das Skript den Namen 0setserial, in anderen rc.serial. Es ist verantwortlich dafür, den seriellen Gerätetreiber so zu initialisieren, daß er mit allen angeschlossenen seriellen Geräten zurechtkommt, die nicht dem üblichen Standard entsprechen.

Die allgemeine Syntax von setserial ist:

setserial device [parameters]
Dabei bezeichnet “device” ein serielles Gerät wie z.B. ttyS0.

Der setserial-Befehl verfügt über eine große Anzahl von Parametern. Die gebräuchlichsten sind in Tabelle 4.1 beschrieben. Informationen zu den anderen Parametern finden Sie in der Manpage von setserial.

Tabelle 4.1: setserial-Kommandozeilenparameter

Parameter Beschreibung
port port_number

Gibt die I/O-Portadresse des seriellen Geräts an. Portnummern sollten in hexadezimaler Notation angegeben werden, z.B. 0x2f8.

irq num

Gibt die Nummer des IRQs an, den das serielle Gerät verwendet.

uart uart_type

Gibt den UART-Typ des seriellen Geräts an. Übliche Werte sind 16450, 16550 usw. Ein Wert von none schaltet dieses serielle Gerät ab.

fourport

Die Angabe dieses Parameters teilt dem seriellen Kernel-Treiber mit, daß sich dieser Port an einer AST-Fourport-Karte befindet.

spd_hi

Programmiert den UART auf eine Geschwindigkeit von 57,6 Kbps, wenn ein Prozeß 38,4 Kbps verlangt.

spd_vhi

Programmiert den UART auf eine Geschwindigkeit von 115 Kbps, wenn ein Prozeß 38,4 Kbps verlangt.

spd_normal

Programmiert den UART auf die Standardgeschwindigkeit von 38,4 Kbps, wenn eine Anfrage vorliegt. Dieser Parameter bewirkt die Umkehrung des Effekts eines spd_hi oder spd_vhi, das auf dem angegebenen seriellen Gerät vollzogen wird.

auto_irq

Dieser Parameter veranlaßt den Kernel, den IRQ des angegebenen Geräts automatisch zu ermitteln. Dieser Versuch kann auch fehlschlagen, weshalb es sich bei der automatischen Ermittlung eher um ein Raten handelt. Ist Ihnen der IRQ des seriellen Geräts bekannt, sollten Sie besser den Befehl irq verwenden.

autoconfig

Dieser Parameter muß immer in Verbindung mit dem port-Parameter angegeben werden und veranlaßt den Kernel, den UART-Typ an der angegebenen Portadresse automatisch herauszufinden. Ist auch auto_irq angegeben, versucht der Kernel, auch den IRQ automatisch zu ermitteln.

skip_test

Dieser Parameter veranlaßt den Kernel, auf den UART-Typ-Test während der automatischen Konfiguration zu verzichten. Das ist insbesondere dann notwendig, wenn der UART vom Kernel nicht korrekt erkannt wird.

Tabelle 4.1 zeigt, wie ein typisches, einfaches Beispiel einer rc-Datei zur Konfiguration Ihrer seriellen Ports zur Boot-Zeit aussehen könnte. Bei den meisten Linux-Distributionen wird ein solches Beispiel noch etwas ausführlicher gestaltet sein.

Beispiel 4.1: rc.serial-Datei mit setserial-Anweisungen

# /etc/rc.serial - serial line configuration script. 
# 
# Configure serial devices 
/sbin/setserial /dev/ttyS0 auto_irq skip_test autoconfig 
/sbin/setserial /dev/ttyS1 auto_irq skip_test autoconfig 
/sbin/setserial /dev/ttyS2 auto_irq skip_test autoconfig 
/sbin/setserial /dev/ttyS3 auto_irq skip_test autoconfig 
# 
# Display serial device configuration 
/sbin/setserial -bg /dev/ttyS*

Das Argument -bg /dev/ttyS* in der letzten Anweisung gibt eine hübsch formatierte Zusammenstellung der Hardwarekonfiguration aller aktiven seriellen Geräte aus. Die Ausgabe sieht etwa wie in Tabelle 4.2 aus.

Beispiel 4.2: Ausgabe des Befehls setserial -bg /dev/ttyS

/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A 
/dev/ttyS1 at 0x02f8 (irq = 3) is a 16550A

Der Befehl stty

Der Name stty bedeutet wahrscheinlich “set tty” (“Setze tty”); dieser Befehl kann aber auch dazu benutzt werden, um eine Terminal-Konfiguration anzuzeigen. Verglichen mit setserial, bietet stty vielleicht eine noch verwirrendere Fülle an Konfigurationsmöglichkeiten. Die wichtigsten davon werden wir gleich behandeln, die anderen können Sie in der Manpage zu stty nachlesen.

Der stty-Befehl wird meistens dazu verwendet, um Terminal-Parameter zu konfigurieren, z.B. ob Zeichen zurückgesendet (echo) werden sollen oder welche Taste ein Abbruchsignal erzeugen soll. Wir hatten bereits früher erwähnt, daß serielle Geräte tty-Geräte sind und der stty-Befehl daher auch für sie geeignet ist.

Eine der wichtigeren Anwendungen von stty ist die Aktivierung des Hardware-Hand­shakes serieller Geräte. Über Hardware-Handshakes hatten wir schon vorher kurz gesprochen. Standardmäßig ist der Hardware-Handshake serieller Geräte nichtaktiviert, so daß man mit dieser Voreinstellung mit dreiadrigen seriellen Kabeln arbeiten kann. Mit solche Kabeln läßt sich kein Hardware-Handshake realisieren; wäre er standardmäßig aktiviert, könnte auf dem Kabel nicht ein einziges Zeichen übertragen werden.

Wenn Ihr Modem den Hardware-Handshake unterstützt, sollten Sie sicherstellen, daß dieser auch aktiviert ist (sehen Sie in Ihrem Modem-Handbuch nach, welche Kommandos Sie dafür brauchen). Überraschenderweise versuchen die wenigsten Kommunika­tionsprogramme dies einzustellen, weshalb Sie es unter Umständen per Hand tun ­müssen. Auch Ihren seriellen Port müssen Sie auf Hardware-Handshake umstellen. Im stty-Befehl verwenden Sie dafür das crtscts-Flag. Diesen Befehl führen Sie am besten während des Bootens in der Datei rc.serial (oder einer vergleichbaren) aus, indem Sie Befehle, wie die in Tabelle 4.3 gezeigten, verwenden.

Beispiel 4.3: stty-Befehle in der Datei rc.serial

# 
stty crtscts < /dev/ttyS0 
stty crtscts < /dev/ttyS1 
stty crtscts < /dev/ttyS2 
stty crtscts < /dev/ttyS3 
#

Das stty-Kommando arbeitet standardmäßig immer mit dem aktuellen Terminal. Durch Eingabeumleitung (“<”) kann man aber jedes tty-Gerät mit dem stty-Befehl manipulieren. Es kommt häufig vor, daß man vergißt, wann man “<” oder “>” anzuwenden hat. Modernere Varianten des stty-Befehls haben in dieser Hinsicht eine viel übersichtlichere Syntax. Um das zu zeigen, formulieren wir unser Konfigurationsbeispiel etwas um. Das Ergebnis zeigt Tabelle 4.4.

Beispiel 4.4: stty-Befehle mit moderner Syntax in der Datei rc.serial

# stty crtscts -F /dev/ttyS0 
stty crtscts -F /dev/ttyS1 
stty crtscts -F /dev/ttyS2 
stty crtscts -F /dev/ttyS3 
#

Wir erwähnten bereits, daß stty auch dazu verwendet werden kann, die aktuelle Terminal-Konfiguration eines tty-Geräts anzuzeigen. Um sich alle aktiven Einstellungen eines tty-Geräts anzusehen, gehen Sie wie folgt vor:

$ stty -a -F /dev/ttyS1

Die Ausgabe des Befehls (siehe Tabelle 4.5) zeigt den Status aller Flags für das angegebene Gerät an. Ein Flag mit einem Minuszeichen (wie in –crtscts) bedeutet, daß dieses Flag abgeschaltet ist.

Beispiel 4.5: Ausgabe von stty -a

speed 19200 baud; rows 0; columns 0; line = 0; 
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; 
         eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; 
         werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; 
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts 
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon 
        -ixoff -iuclc -ixany -imaxbel 
-opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 
         bs0 vt0 ff0 
-isig -icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop 
         -echoprt echoctl echoke

Eine Beschreibung der wichtigsten Flags ist in Tabelle 4.2 enthalten. Ohne Minuszeichen wird ein Flag in einer stty-Anweisung immer aktiviert, mit Minuszeichen deak­tiviert. Um z.B. den Hardware-Handshake am ttyS0-Gerät abzuschalten, geben Sie ­folgendes ein:

$ stty -crtscts -F /dev/ttyS0

Tabelle 4.2: Die wichtigsten stty-Flags zur Konfiguration serieller Geräte

Flags Beschreibung
N

Setzt die Übertragungsgeschwindigkeit auf N Bits pro Sekunde.

crtsdts

Aktiviert bzw. deaktiviert das Hardware-Handshaking.

ixon

Aktiviert bzw. deaktiviert XON/XOFF.

clocal

Aktiviert bzw. deaktiviert Modem-Kontrollsignale wie DTR/DTS und DCD. Wichtig für dreiadrige serielle Kabel, da sie diese Signale nicht bereitstellen.

cs5 cs6 cs7 cs8

Setzt die Anzahl der Datenbits auf 5, 6, 7 bzw. 8.

parodd

Aktiviert ungerade Parität. Ein negiertes Flag bedeutet gerade Parität.

parenb

Aktiviert Paritätstest. Ist dieses Flag negiert, wird keine Parität verwendet.

cstopb

Aktiviert die Verwendung von zwei Stopbits pro Zeichen. Bei negiertem Flag wird ein Stopbit pro Zeichen verwendet.

echo

Aktiviert bzw. deaktiviert die Rücksendung (Echo) des empfangenen Zeichens zum Sender.

Im folgenden Beispiel werden einige dieser Flags kombiniert, um das serielle Gerät ttyS0 auf 19.200 bps, 8 Datenbits, keine Parität, Hardware-Handshaking und deaktiviertes Echo einzustellen:

$ stty 19200 cs8 -parenb crtscts -echo -F /dev/ttyS0





vorheriges Kapitel Inhaltsverzeichnis Stichwortverzeichnis nächstes Kapitel


Weitere Informationen zum Linux - Wegweiser für Netzwerker

Weitere Online-Bücher & Probekapitel finden Sie in unserem Online Book Center


O'Reilly Home|O'Reilly-Partnerbuchhandlungen|Bestellinformationen
Kontakt|Über O'Reilly|Datenschutz

© 2001, O'Reilly Verlag