26.2. Εισαγωγή

Προειδοποίηση:

Από το FreeBSD 8.0 και μετά, τα αρχεία συσκευών των σειριακών θυρών μετονομάστηκαν από /dev/cuadN σε /dev/cuauN και από /dev/ttydN σε /dev/ttyuN. Οι χρήστες του FreeBSD 7.X θα πρέπει να προσαρμόσουν την παρακάτω τεκμηρίωση σύμφωνα με τις παραπάνω αλλαγές.

26.2.1. Ορολογία

bps

Bits Ανά Δευτερόλεπτο — ο ρυθμός μετάδοσης των δεδομένων

DTE

Data Terminal Equipment, Τερματικός Εξοπλισμός Δεδομένων — για παράδειγμα, ο υπολογιστής σας

DCE

Data Communications Equipment, Εξοπλισμός Επικοινωνίας Δεδομένων — το modem σας

RS-232

Πρότυπο της EIA για το υλικό που χρησιμοποιείται στις σειριακές επικοινωνίες

Όταν αναφερόμαστε στο ρυθμό μετάδοσης δεδομένων επικοινωνίας, δεν χρησιμοποιούμε πάντοτε τον όρο «baud». Το baud αναφέρεται στον αριθμό των μεταβάσεων του ηλεκτρικού σήματος στη μονάδα του χρόνου, ενώ κανονικά πρέπει να χρησιμοποιείται το «bps» (bits ανά δευτερόλεπτο) που είναι ο σωστός όρος (η τουλάχιστον δεν φαίνεται να ενοχλεί πολύ τους σχολαστικούς).

26.2.2. Θύρες και Καλώδια

Για να συνδέσετε ένα modem ή τερματικό στο FreeBSD σύστημα σας, θα χρειαστείτε μια σειριακή θύρα στον υπολογιστή σας, και το κατάλληλο καλώδιο για να συνδέσετε τη σειριακή συσκευή σας. Αν είστε ήδη εξοικειωμένος με το υλικό σας και το καλώδιο που απαιτείται, μπορείτε με ασφάλεια να παραλείψετε αυτή την ενότητα.

26.2.2.1. Καλώδια

Υπάρχουν αρκετοί διαφορετικοί τύποι σειριακών καλωδίων. Οι δύο πιο κοινοί τύποι για τους σκοπούς μας, είναι τα καλώδια τύπου null-modem και τα τυποποιημένα καλώδια RS-232 (γνωστά και ως «ευθείες»). Η τεκμηρίωση του υλικού σας θα πρέπει να περιγράφει τον τύπο του καλωδίου που απαιτείται.

26.2.2.1.1. Καλώδια Τύπου Null-modem

Ένα καλώδιο τύπου null-modem, μεταφέρει απευθείας κάποια σήματα όπως η «Γείωση Σήματος (SG)», αλλά αντιστρέφει τις συνδέσεις σε κάποια άλλα. Για παράδειγμα, ο ακροδέκτης «Μετάδοσης Δεδομένων» (γνωστός και ως TD) της μιας πλευράς, συνδέεται με τον ακροδέκτη «Λήψης Δεδομένων» (γνωστός και ως RD) της άλλης.

Μπορείτε επίσης να φτιάξετε το δικό σας καλώδιο τύπου null-modem (π.χ. για λόγους ποιότητας) για χρήση με τερματικά. Ο παρακάτω πίνακας δείχνει τα σήματα του RS-232 και τους αριθμούς των ακροδεκτών σε ένα συνδέτη DB-25. Σημειώστε επίσης ότι το πρότυπο ορίζει απευθείας σύνδεση των ακροδεκτών 1 της κάθε άκρης. Πρόκειται για τον ακροδέκτη της Προστατευτικής Γείωσης, αλλά συχνά η σύνδεση του παραλείπεται. Μερικά τερματικά λειτουργούν κανονικά χρησιμοποιώντας μόνο τους ακροδέκτες 2, 3 και 7, ενώ κάποιοι άλλα απαιτούν διαφορετικές ρυθμίσεις σε σχέση με τα παραδείγματα που φαίνονται παρακάτω.

Πίνακας 26.1. Καλώδιο Null-Modem DB-25 σε DB-25
ΣήμαΑκροδέκτης # Ακροδέκτης #Σήμα
SG7συνδέεται στο7SG
TD2συνδέεται στο3RD
RD3συνδέεται στο2TD
RTS4συνδέεται στο5CTS
CTS5συνδέεται στο4RTS
DTR20συνδέεται στο6DSR
DTR20συνδέεται στο8DCD
DSR6συνδέεται στο20DTR
DCD8συνδέεται στο20DTR

Παρακάτω φαίνονται δύο διατάξεις που είναι πιο κοινές στις μέρες μας.

Πίνακας 26.2. Καλώδιο Null-Modem DB-9 σε DB-9
ΣήμαΑκροδέκτης # Ακροδέκτης #Σήμα
RD2συνδέεται στο3TD
TD3συνδέεται στο2RD
DTR4συνδέεται στο6DSR
DTR4συνδέεται στο1DCD
SG5συνδέεται στο5SG
DSR6συνδέεται στο4DTR
DCD1συνδέεται στο4DTR
RTS7συνδέεται στο8CTS
CTS8συνδέεται στο7RTS

Πίνακας 26.3. Καλώδιο Null-Modem DB-9 σε DB-25
ΣήμαΑκροδέκτης # Ακροδέκτης #Σήμα
RD2συνδέεται στο2TD
TD3συνδέεται στο3RD
DTR4συνδέεται στο6DSR
DTR4συνδέεται στο8DCD
SG5συνδέεται στο7SG
DSR6συνδέεται στο20DTR
DCD1συνδέεται στο20DTR
RTS7συνδέεται στο5CTS
CTS8συνδέεται στο4RTS

Σημείωση:

Όταν ένας ακροδέκτης σε μια άκρη χρειάζεται να συνδεθεί με δύο ακροδέκτες στην άλλη, συνήθως ενώνουμε τους ακροδέκτες μεταξύ τους στη μια άκρη με ένα μικρό καλώδιο, και χρησιμοποιούμε ένα μακρύτερο καλώδιο για την ένωση με την άλλη άκρη.

Η παραπάνω διάταξη φαίνεται να είναι η πιο διαδεδομένη. Σε μια παραλλαγή (που εξηγείται στο βιβλίο Το RS-232 με Απλά Βήματα), το SG συνδέεται στο SG, το TD συνδέεται στο RD, τα RTS και CTS συνδέονται στο DCD, το DTR συνδέεται στο DSR, και αντίστροφα.

26.2.2.1.2. Τυποποιημένα Καλώδια RS-232C

Ένα τυποποιημένο σειριακό καλώδιο RS-232C, μεταφέρει όλα τα σήματα απευθείας από τη μια άκρη στην άλλη, χωρίς καμιά αλλαγή στους ακροδέκτες. Αυτό απλά σημαίνει ότι ο ακροδέκτης «Μετάδοσης Δεδομένων (TD)» της μιας άκρης, συνδέεται στον ακροδέκτη «Μετάδοσης Δεδομένων (TD)» της άλλης άκρης. Αυτό είναι και το είδος του καλωδίου που θα χρησιμοποιήσετε για να συνδέσετε ένα modem στο FreeBSD σύστημα σας, και είναι επίσης κατάλληλο για ορισμένα τερματικά.

26.2.2.2. Θύρες

Οι σειριακές θύρες είναι οι συσκευές που μεταφέρουν τα δεδομένα μεταξύ του FreeBSD συστήματος και του τερματικού. Η ενότητα αυτή περιγράφει τα είδη των θυρών που υπάρχουν, και πως τα χειρίζεται το FreeBSD.

26.2.2.2.1. Είδη Θυρών

Υπάρχουν διάφορα είδη σειριακών θυρών. Πριν αγοράσετε ή κατασκευάσετε κάποιο καλώδιο, θα πρέπει να βεβαιωθείτε ότι ταιριάζει με τη θύρα του τερματικού και του FreeBSD συστήματος σας.

Τα περισσότερα τερματικά διαθέτουν θύρες DB-25. Οι προσωπικοί υπολογιστές, συμπεριλαμβανομένων και αυτών που εκτελούν FreeBSD, μπορεί να έχουν θύρες τύπου DB-25 ή DB-9. Αν διαθέτετε κάρτα πολλαπλών σειριακών θυρών στον υπολογιστή σας, μπορεί να διαθέτει θύρες τύπου RJ-12 ή RJ-45.

Δείτε την τεκμηρίωση που συνοδεύει το υλικό σας, για τις τεχνικές προδιαγραφές της θύρας που χρησιμοποιεί. Συνήθως μπορείτε να βγάλετε συμπέρασμα αν απλώς κοιτάξετε την υποδοχή.

26.2.2.2.2. Ονόματα Θυρών

Στο FreeBSD, έχετε πρόσβαση σε κάθε σειριακή θύρα μέσω μιας καταχώρισης στον κατάλογο /dev. Υπάρχουν δύο διαφορετικά είδη καταχωρίσεων:

  • Οι θύρες που μπορούν να χρησιμοποιηθούν για είσοδο στο σύστημα, ονομάζονται /dev/ttyuN όπου το N είναι ο αριθμός της θύρας (η αρίθμηση ξεκινάει από το μηδέν). Γενικά, οι θύρες αυτές προορίζονται για σύνδεση με τερματικά. Οι θύρες εισόδου απαιτούν να είναι ενεργό το σήμα ανίχνευσης φέροντος (DCD) στη σειριακή γραμμή, προκειμένου να λειτουργήσουν σωστά.

  • Οι θύρες κλήσης ή εξόδου, ονομάζονται /dev/cuauN. Οι θύρες αυτές δεν χρησιμοποιούνται συνήθως για τερματικά, αλλά για modems. Μπορείτε να χρησιμοποιήσετε αυτή τη θύρα για κάποιο τερματικό που δεν υποστηρίζει το σήμα ανίχνευσης φέροντος.

Αν έχετε συνδέσει ένα τερματικό στην πρώτη σειριακή θύρα (που στο MS-DOS® αναφέρεται ως COM1), θα πρέπει να χρησιμοποιήσετε την συσκευή /dev/ttyu0 για να αναφερθείτε στο τερματικό. Αν το τερματικό είναι στη δεύτερη σειριακή θύρα (που είναι επίσης γνωστή ως COM2) χρησιμοποιήστε τη συσκευή /dev/ttyu1, κ.ο.κ.

26.2.3. Ρύθμιση του Πυρήνα

Το FreeBSD από προεπιλογή υποστηρίζει τέσσερις σειριακές θύρες. Στον κόσμο του MS-DOS® οι θύρες αυτές είναι γνωστές ως: COM1, COM2, COM3, και COM4. Το FreeBSD αυτή τη στιγμή υποστηρίζει «κουτές» σειριακές κάρτες πολλαπλών θυρών, όπως τις BocaBoard 1008 και 2016, όπως και πιο ευφυής κάρτες, όπως αυτές που κατασκευάζονται από την Digiboard και την Stallion Technologies. Ο προεπιλεγμένος πυρήνας ωστόσο, εκτελεί ανίχνευση μόνο για τις τυπικές σειριακές (COM) θύρες.

Για να δείτε αν ο πυρήνας σας αναγνωρίζει οποιαδήποτε από τις σειριακές θύρες, παρατηρήστε τα μηνύματα κατά τη διάρκεια εκκίνησης του συστήματος, ή χρησιμοποιήστε την εντολή /sbin/dmesg για να ξαναδείτε τα μηνύματα του πυρήνα κατά τη διάρκεια της εκκίνησης. Πιο συγκεκριμένα, αναζητήστε τα μηνύματα που ξεκινούν με τους χαρακτήρες sio.

Υπόδειξη:

Για να δείτε μόνο τα μηνύματα που περιέχουν τη λέξη sio, χρησιμοποιήστε την εντολή:

# /sbin/dmesg | grep 'sio'

Για παράδειγμα, σε ένα σύστημα με τέσσερις σειριακές θύρες, τα μηνύματα του πυρήνα που σχετίζονται με αυτές φαίνονται παρακάτω:

sio0 at 0x3f8-0x3ff irq 4 on isa
sio0: type 16550A
sio1 at 0x2f8-0x2ff irq 3 on isa
sio1: type 16550A
sio2 at 0x3e8-0x3ef irq 5 on isa
sio2: type 16550A
sio3 at 0x2e8-0x2ef irq 9 on isa
sio3: type 16550A

Αν ο πυρήνας σας δεν αναγνωρίζει όλες τις σειριακές σας θύρες, πιθανόν να χρειαστεί να τον ρυθμίσετε χρησιμοποιώντας το αρχείο /boot/device.hints. Μπορείτε επίσης να μετατρέψετε σε σχόλιο (ή και να διαγράψετε τελείως) γραμμές που αναφέρονται σε συσκευές που δεν υπάρχουν στο σύστημα σας.

Παρακαλούμε ανατρέξτε στη σελίδα manual του sio(4) για περισσότερες πληροφορίες σχετικά με τις σειριακές θύρες και τις ρυθμίσεις των καρτών πολλαπλών σειριακών θυρών. Αν χρησιμοποιείτε αρχείο ρυθμίσεων που προέρχεται από κάποια παλαιότερη έκδοση του FreeBSD, θα πρέπει να είστε ιδιαίτερα προσεκτικοί, καθώς κάποιες από τις επιλογές των συσκευών και η σύνταξη τους έχουν αλλάξει στις νεότερες εκδόσεις.

Σημείωση:

Το port IO_COM1 υποκαθιστά το port 0x3f8, IO_COM2 είναι το 0x2f8, IO_COM3 είναι το 0x3e8, και το IO_COM4 είναι το 0x2e8. Αυτές είναι και οι πιο κοινές ρυθμίσεις για τις παραπάνω θύρες. Οι γραμμές interrupt 4, 3, 5 και 9 είναι οι πλέον συνηθισμένες στις σειριακές θύρες. Σημειώστε επίσης ότι οι συνηθισμένες σειριακές θύρες δεν μπορούν να μοιράζονται το ίδιο interrupt με κάποια άλλη συσκευή σε υπολογιστές που διαθέτουν δίαυλο τύπου ISA (οι κάρτες πολλαπλών θυρών διαθέτουν ειδικά κυκλώματα που επιτρέπουν σε όλα τα 16550Α που χρησιμοποιεί η κάρτα να λειτουργούν χρησιμοποιώντας μόνο μία ή δύο γραμμές interrupt).

26.2.4. Ειδικά Αρχεία Συσκευών

Η πρόσβαση στις περισσότερες συσκευές του πυρήνα, επιτυγχάνεται μέσω «ειδικών αρχείων συσκευών», τα οποία βρίσκονται στον κατάλογο /dev/. Στις συσκευές sio η πρόσβαση επιτυγχάνεται μέσω των αρχείων /dev/ttyuN (για συσκευές εισόδου, dial-in) και /dev/cuauN (για συσκευές εξόδου, call-out). Το FreeBSD παρέχει επίσης συσκευές αρχικοποίησης (/dev/ttyuN.init και /dev/cuauN.init) και συσκευές κλειδώματος (/dev/ttyuN.lock και /dev/cuauN.lock). Οι συσκευές αρχικοποίησης χρησιμοποιούνται για την ρύθμιση των αρχικών παραμέτρων επικοινωνίας στη θύρα, κάθε φορά που ανοίγει. Τέτοιες παράμετροι είναι π.χ. το crtscts για τα modems που χρησιμοποιούν σηματοδοσία RTS/CTS για έλεγχο ροής. Οι συσκευές κλειδώματος χρησιμοποιούνται για να κλειδώνουν κάποιες ρυθμίσεις στις θύρες, ώστε να μην μπορούν να αλλαχθούν από άλλους χρήστες ή προγράμματα. Για πληροφορίες σχετικές με τις ρυθμίσεις τερματικών, την αρχικοποίηση και τα κλειδώματα συσκευών, και τη ρύθμιση παραμέτρων στα τερματικά, δείτε αντίστοιχα τις σελίδες manual termios(4), sio(4), και stty(1).

26.2.5. Ρυθμίσεις Σειριακών Θυρών

Η συσκευή ttyuNcuauN) είναι η κανονική συσκευή που μπορείτε να χρησιμοποιήσετε στις εφαρμογές σας. Όταν μια διαδικασία ανοίγει μια συσκευή, χρησιμοποιούνται κάποιες προεπιλεγμένες ρυθμίσεις I/O για το τερματικό. Μπορείτε να δείτε αυτές τις ρυθμίσεις με την εντολή:

# stty -a -f /dev/ttyu1

Αν αλλάξετε τις ρυθμίσεις σε αυτή τη συσκευή, αυτές θα παραμείνουν μέχρι το κλείσιμο της συσκευής. Όταν ανοιχθεί ξανά, θα έχει επανέλθει στις προεπιλεγμένες ρυθμίσεις. Για να αλλάξετε τις προεπιλεγμένες ρυθμίσεις, μπορείτε να ανοίξετε και να αλλάξετε τις ρυθμίσεις της συσκευής «αρχικής κατάστασης». Για παράδειγμα, για να ενεργοποιήσετε τη λειτουργία CLOCAL, να ορίσετε επικοινωνία 8bit και έλεγχο ροής μέσω XON/XOFF για τη συσκευή ttyu5, γράψτε:

# stty -f /dev/ttyu5.init clocal cs8 ixon ixoff

Η αρχικοποίηση των σειριακών συσκευών για όλο το σύστημα, ελέγχεται από το αρχείο /etc/rc.d/serial. Το αρχείο αυτό επηρεάζει τις προεπιλεγμένες ρυθμίσεις των σειριακών συσκευών.

Για να αποτρέψετε την αλλαγή συγκεκριμένων ρυθμίσεων από κάποια εφαρμογή, αλλάξτε τις ρυθμίσεις της συσκευής «κλειδώματος». Για παράδειγμα, για να κλειδώσετε την ταχύτητα της συσκευής ttyu5 στα 57600 bps, γράψτε:

# stty -f /dev/ttyu5.lock 57600

Τώρα, μια εφαρμογή που ανοίγει τη θύρα ttyu5 και επιχειρεί να αλλάξει την ταχύτητα της θύρας, θα αναγκαστεί να παραμείνει στα 57600 bps.

Φυσικά, θα πρέπει να ρυθμίσετε τις συσκευές αρχικοποίησης και κλειδώματος, ώστε να είναι εγγράψιμες μόνο από τον λογαριασμό του root.

Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την τεκμηρίωση πριν να επικοινωνήσετε με την <questions@FreeBSD.org>.

Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην <doc@FreeBSD.org>.