Test von seriellen Schnittstellen - doc-systems.dedoc-systems.de/downloads/stepbystep/Test von...
Click here to load reader
Transcript of Test von seriellen Schnittstellen - doc-systems.dedoc-systems.de/downloads/stepbystep/Test von...
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
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