Test von seriellen Schnittstellen - doc-systems.dedoc-systems.de/downloads/stepbystep/Test von...

2

Click here to load reader

Transcript of Test von seriellen Schnittstellen - doc-systems.dedoc-systems.de/downloads/stepbystep/Test von...

Page 1: Test von seriellen Schnittstellen - doc-systems.dedoc-systems.de/downloads/stepbystep/Test von seriellen... · zusammengestellt von Dr. Jörg Meese Test von seriellen Schnittstellen

zusammengestellt von Dr. Jörg Meese

serielle Schnittstelle

einfachste Schnittstelle:

ist ein I/O-Gerät

wandelt parallele Daten in serielle Daten und ändert ihre elektrische Darstellung

Der größte Teil der Elektronik eines seriellen Ports befindet sich auf einem Chip

dient der Verbindung 2er Geräte mit 2 Datenleitungen pro Übertragungsrichtung und einem gemeinsamen Massekabel, gegen das die Spannung auf jeder Leitung gemessen wird

Standard RS-232 sieht zwei Spannungen vor:

+12 V für eine binäre Null

-12 V für eine binäre Eins

zwischen den Signalen werden keine Trennzeichen gesendet Festlegung der Geschwindigkeit als Baudrate (Signale pro Sekunde)

alle Baudraten sind ganzzahlige Teiler von 115.200 (entspricht 14400 Byte) häufig anzutreffen sind 9.600 Baud für Maus, Messgeräte oder Barcodeleser

Einstellmöglichkeiten

ein Startbit am Anfang und ein oder zwei Stoppbits am Ende des Datenworts für Aufrechterhaltung der Verbindung bei Geschwindigkeitsschwankungen (Bitmuster zur Synchronisation der Gegenstellen)

das achte Bit fungiert als Prüfsumme für die anderen sieben (Quersumme aller 8 Bits gerade oder ungerade)

Flusssteuerung (flow control), falls Sender Daten schneller sendet als Empfänger sie verarbeiten kann

o hardware-flow-control über Handshake-Leitungen RTS/CTS o software-flow-control über zwei ASCII-Bytes (17=XON, 19=XOFF), dadurch nicht für

Binärdaten geeignet

Zusammenfassung der Übertragungsparameter

Baudrate: 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200

Anzahl der Datenbits: 7 oder 8

Anzahl der Stopbits: 1 1,5 oder 2

Parität: none, even, odd, mark, space

Flusssteuerung: RTS/CTS, XON,XOF oder keine

Angabe der Parameter in Kurzschreibweise

8N1 8 Datenbits, keine Parität, 1 Stoppbit (meist üblich) 7E2 7 Datenbits, gerade Parität, 2 Stoppbits

Achtung

Parameter müssen auf beiden Seiten identisch sein

ist nur ein Parameter falsch, klappt die Übertragung nicht

bei jeder Auslegung der Parameter kommt ein Bitmuster heraus

RS-232 sieht keine automatische Aushandlung der Parameter vor

Zugriff auf die serielle Schnittstelle unter Linux

nur für root und Mitglieder der Gruppe uucp

Lösung über Gruppenmitgliedschaft oder Setuid-Bit

Page 2: Test von seriellen Schnittstellen - doc-systems.dedoc-systems.de/downloads/stepbystep/Test von seriellen... · zusammengestellt von Dr. Jörg Meese Test von seriellen Schnittstellen

zusammengestellt von Dr. Jörg Meese

Test von seriellen Schnittstellen

Test auf durch Kernel erkannte Schnittstellen

jmeese@linux-doc:~> cat < /dev/ttyS0 Ctrl +D jmeese@linux-doc:~> cat < /dev/ttyS1 Ctrl +D jmeese@linux-doc:~> cat < /dev/ttyS2 cat: -: Eingabe-/Ausgabefehler

Check der Bootmeldungen auf erkannte Schnittstellen

jmeese@linux-doc:~> dmesg | grep -B1 ttyS Serial driver version 5.05c (2001-07-08) with HUB-6 MANY_PORTS MULTIPORT SHARE_IRQ SERIAL_PCI enabled ttyS00 at 0x03f8 (irq = 4) is a 16550A ttyS01 at 0x02f8 (irq = 3) is a 16550A

Anzeige der Geräte mit Zugriffsrechten

jmeese@linux-doc:~> ls -l /dev/ttyS[01] crw-rw---- 1 root uucp 4, 64 2003-03-14 14:07 /dev/ttyS0 crw-rw---- 1 root uucp 4, 65 2003-03-14 14:07 /dev/ttyS1

Auslesen der Schnittstellenparameter

jmeese@linux-doc:~> setserial -g /dev/ttyS[12] /dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3 2x 16 Byte Pufferspeicher /dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4

Test der Kommunikation über Nullmodemkabel mit 2 Terminals

jmeese:~> tty /dev/pts/0 jmeese:~> cat < /dev/ttyS0 testdatensendung

jmeese:~> tty /dev/pts/1 jmeese:~> echo testdatensendung > /dev/ttyS1 jmeese:~>

Verfolgen des Interrupt-Zählers jmeese@linux-doc:~> grep serial /proc/interrupts 4: 12 XT-PIC serial jmeese@linux-doc:~> echo testdatensendung > /dev/ttyS1 jmeese@linux-doc:~> grep serial /proc/interrupts 4: 16 XT-PIC serial (durch FIFO wird nicht für jedes Zeichen ein Interrupt benötigt, nicht verwendete Ports werden nicht angezeigt)

Verfolgen des Interrupt-Zählers (besser) jmeese:~> tty /dev/pts/0 jmeese:~> cat > /dev/ttyS0

sekündliches Drücken von “Enter” (sendet Linefeed-Zeichen)

jmeese:~> tty /dev/pts/1 jmeese:~> watch –d -n 1 cat /proc/interrupts

...

Beobachten der Zeile serial ...

physikalischer Test eines seriellen Geräts

watch –d -n 1 cat /proc/interrupts

Gerät einschalten und Interruptzähler beobachten; falls er hochzählt, macht das Gerät etwas (evtl. kann Sendevorgang des Geräts durch Drücken des „Reset“-Knopfes am Gerät oder Betätigung der “Enter”-Taste der Tastatur initiiert werden)

serielle Geräte testen mit dem Terminalprogramm minicom

linux-doc:/home/jmeese # minicom -s

Menü “Serial Port Setup”: A und E konfigurieren und Exit; Sofortübertragung jedes Tastendrucks (ATH); Sofortausgabe jedes empfangenen Zeichens