Εγχειρίδιο του FreeBSD
Προηγ | Κεφάλαιο 26 Σειριακές Επικοινωνίες | Επόμενο

# 26.2 Εισαγωγή

## 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

Σήμα | Ακροδέκτης # |  | Ακροδέκτης # | Σήμα
--- | --- | --- | --- | ---
SG | 7 | συνδέεται στο | 7 | SG
TD | 2 | συνδέεται στο | 3 | RD
RD | 3 | συνδέεται στο | 2 | TD
RTS | 4 | συνδέεται στο | 5 | CTS
CTS | 5 | συνδέεται στο | 4 | RTS
DTR | 20 | συνδέεται στο | 6 | DSR
DTR | 20 | συνδέεται στο | 8 | DCD
DSR | 6 | συνδέεται στο | 20 | DTR
DCD | 8 | συνδέεται στο | 20 | DTR

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

Πίνακας 26-2. Καλώδιο Null-Modem DB-9 σε DB-9

Σήμα | Ακροδέκτης # |  | Ακροδέκτης # | Σήμα
--- | --- | --- | --- | ---
RD | 2 | συνδέεται στο | 3 | TD
TD | 3 | συνδέεται στο | 2 | RD
DTR | 4 | συνδέεται στο | 6 | DSR
DTR | 4 | συνδέεται στο | 1 | DCD
SG | 5 | συνδέεται στο | 5 | SG
DSR | 6 | συνδέεται στο | 4 | DTR
DCD | 1 | συνδέεται στο | 4 | DTR
RTS | 7 | συνδέεται στο | 8 | CTS
CTS | 8 | συνδέεται στο | 7 | RTS

Πίνακας 26-3. Καλώδιο Null-Modem DB-9 σε DB-25

Σήμα | Ακροδέκτης # |  | Ακροδέκτης # | Σήμα
--- | --- | --- | --- | ---
RD | 2 | συνδέεται στο | 2 | TD
TD | 3 | συνδέεται στο | 3 | RD
DTR | 4 | συνδέεται στο | 6 | DSR
DTR | 4 | συνδέεται στο | 8 | DCD
SG | 5 | συνδέεται στο | 7 | SG
DSR | 6 | συνδέεται στο | 20 | DTR
DCD | 1 | συνδέεται στο | 20 | DTR
RTS | 7 | συνδέεται στο | 5 | CTS
CTS | 8 | συνδέεται στο | 4 | RTS

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

Η παραπάνω διάταξη φαίνεται να είναι η πιο διαδεδομένη. Σε μια παραλλαγή (που εξηγείται στο βιβλίο Το 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/ttyd`N`` όπου το `N` είναι ο αριθμός της θύρας (η αρίθμηση ξεκινάει από το μηδέν). Γενικά, οι θύρες αυτές προορίζονται για σύνδεση με τερματικά. Οι θύρες εισόδου απαιτούν να είναι ενεργό το σήμα ανίχνευσης φέροντος (DCD) στη σειριακή γραμμή, προκειμένου να λειτουργήσουν σωστά.

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

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

## 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/ttyd`N`` (για συσκευές εισόδου, dial-in) και `/dev/cuad`N`` (για συσκευές εξόδου, call-out). Το FreeBSD παρέχει επίσης συσκευές αρχικοποίησης (`/dev/ttyd`N`.init` και `/dev/cuad`N`.init`) και συσκευές κλειδώματος (`/dev/ttyd`N`.lock` και `/dev/cuad`N`.lock`). Οι συσκευές αρχικοποίησης χρησιμοποιούνται για την ρύθμιση των αρχικών παραμέτρων επικοινωνίας στη θύρα, κάθε φορά που ανοίγει. Τέτοιες παράμετροι είναι π.χ. το `crtscts` για τα modems που χρησιμοποιούν σηματοδοσία `RTS/CTS` για έλεγχο ροής. Οι συσκευές κλειδώματος χρησιμοποιούνται για να κλειδώνουν κάποιες ρυθμίσεις στις θύρες, ώστε να μην μπορούν να αλλαχθούν από άλλους χρήστες ή προγράμματα. Για πληροφορίες σχετικές με τις ρυθμίσεις τερματικών, την αρχικοποίηση και τα κλειδώματα συσκευών, και τη ρύθμιση παραμέτρων στα τερματικά, δείτε αντίστοιχα τις σελίδες manual termios(4), sio(4), και stty(1).

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

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

    # stty -a -f /dev/ttyd1

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

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

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

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

    # stty -f /dev/ttyd5.lock 57600

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

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

Προηγ | Αρχή | Επόμενο
Σειριακές Επικοινωνίες | Πάνω | Τερματικά

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

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