Bits per Second (Bit per Secondo) - la frequenza alla quale vengono trasmessi i dati
Data Terminal Equipment (Attrezzatura per il Terminale Dati) - ad esempio, il tuo computer
Data Communications Equipment (Attrezzatura per le Comunicazioni Dati) - il tuo modem
Standard EIA per le comunicazioni tra hardware seriale
Nel parlare della velocità di comunicazione, questa sezione non usa il termine «baud». Il baud si riferisce al numero di transizioni degli stati elettrici che possono essere effettuati in un periodo di tempo, mentre i «bps» (bit per secondo) sono il termine corretto da usare (o almeno non sembra irritare troppo i perfezionisti).
Per collegare un modem o un terminale alla tua macchina FreeBSD, avrai bisogno di una porta seriale sul tuo computer e del cavo appropriato per il tuo dispositivo seriale. Se sei già pratico con l'hardware ed i cavi necessari, puoi saltare tranquillamente questa sezione.
Ci sono parecchi tipi diversi di cavi seriali. I due tipi più comuni per i nostri scopi sono i cavi null-modem ed i cavi standard («dritti») RS-232. La documentazione per il tuo hardware dovrebbe descrivere il tipo di cavi necessari.
Un cavo null-modem porta segnali dritti, come il «Segnale di Massa», e segnali incrociati. Per esempio, il pin di «Trasmissione Dati» su un capo è il pin di «Ricezione Dati» sull'altro capo.
Puoi costruirti un cavo null-modem da usare con i terminali (es., se vuoi una migliore qualità). Questa tabella mostra i segnali dell'RS-232C e i numeri dei pin su un connettore DB-25. Nota che lo standard richiede il segnale dritto sul pin 1 chiamato Massa di Protezione, anche se questo è spesso omesso. Alcuni terminali funzionano usando solo i pin 2, 3 e 7, mentre altri richiedono configurazioni diverse come mostrate negli esempi qui sotto.
Segnale | Pin # | Pin # | Segnale | |
---|---|---|---|---|
SG | 7 | si connette a | 7 | SG |
TD | 2 | si connette a | 3 | RD |
RD | 3 | si connette a | 2 | TD |
RTS | 4 | si connette a | 5 | CTS |
CTS | 5 | si connette a | 4 | RTS |
DTR | 20 | si connette a | 6 | DSR |
DTR | 20 | si connesso a | 8 | DCD |
DSR | 6 | si connette a | 20 | DTR |
DCD | 8 | si connette a | 20 | DTR |
Ecco altri due comuni schemi.
Segnale | Pin # | Pin # | Segnale | |
---|---|---|---|---|
RD | 2 | si connette a | 3 | TD |
TD | 3 | si connette a | 2 | RD |
DTR | 4 | si connette a | 6 | DSR |
DTR | 4 | si connette a | 1 | DCD |
SG | 5 | si connette a | 5 | SG |
DSR | 6 | si connette a | 4 | DTR |
DCD | 1 | si connette a | 4 | DTR |
RTS | 7 | si connette a | 8 | CTS |
CTS | 8 | si connette a | 7 | RTS |
Segnale | Pin # | Pin # | Segnale | |
---|---|---|---|---|
RD | 2 | si connette a | 2 | TD |
TD | 3 | si connette a | 3 | RD |
DTR | 4 | si connette a | 6 | DSR |
DTR | 4 | si connette a | 8 | DCD |
SG | 5 | si connette a | 7 | SG |
DSR | 6 | si connette a | 20 | DTR |
DCD | 1 | si connette a | 20 | DTR |
RTS | 7 | si connette a | 5 | CTS |
CTS | 8 | si connette a | 4 | RTS |
Quando un pin di un capo si connette a una coppia di pin dell'altro capo, questo è solitamente fatto ponendo un cavetto tra la coppia di pin nel loro connettore e collegando questi con un altro cavo al singolo pin dell'altro capo.
Queste sembrano essere le implementazioni più popolari. In altre varianti (spiegate nel libro RS-232 Made Easy) SG è connesso a SG, TD a RD, RTS e CTS a DCD, DTR a DSR, e vice-versa.
Le porte seriali sono i dispositivi attraverso i quali vengono trasferiti i dati tra il computer FreeBSD ed il terminale. Questa sezione descrive il tipo di porte che esistono e come vengono indicate in FreeBSD.
Esistono parecchi tipi di porte seriali. Prima di comprare o costruire un cavo, avrai bisogno di assicurarti che sia adatto alle porte sul terminale e sul sistema FreeBSD.
La maggior parte dei terminali avrà porte DB-25. I personal computer, compresi i PC con FreeBSD, avranno porte DB-25 o DB-9. Se hai una scheda seriale multiporta nel tuo PC, potresti avere porte RJ-12 o RJ-45.
Guarda la documentazione fornita con l'hardware per le specifiche del tipo di porta usata. Spesso basta anche un'ispezione visiva della porta.
In FreeBSD, si accede ad ogni porta seriale attraverso una voce
nella directory /dev
. Ci sono due differenti
tipi di voci:
Le porte di ingresso vengono dette
/dev/ttydN
dove N
è il numero di porta,
cominciando da zero. Generalmente, puoi usare la porta di
ingresso per i terminali. Le porte di ingresso richiedono che
la linea fornisca un segnale detto data carrier detect (DCD) per
funzionare correttamente.
Le porte di uscita vengono dette
/dev/cuadN
.
In genere non si usano porte di uscita per i terminali, ma solo
per i modem. Puoi usare la porta di uscita se il cavo seriale
o il terminale non supportano il segnale di carrier
detect.
Le porte di uscita sono chiamate
/dev/cuaaN
in
FreeBSD 5.X e precedenti.
Se hai connesso un terminale sulla prima porta seriale
(COM1
in MS-DOS®), allora userai
/dev/ttyd0
per riferirti al terminale. Se il
terminale è sulla seconda porta seriale (anche nota come
COM2
), usa
/dev/ttyd1
, e così via.
FreeBSD supporta quattro porte seriali di default. Nel mondo
MS-DOS®, queste sono note come COM1
,
COM2
, COM3
, e
COM4
. FreeBSD attualmente supporta
schede d'interfaccia seriale multiporta «stupide»,
come le BocaBoard 1008 e 2016, così come le schede multiporta
intelligenti come quelle fatte dalla Digiboard
e dalla Stallion Technologies. Ad ogni modo, il kernel di default
usa solo le porte COM standard.
Per vedere se il tuo kernel riconosce una delle tue porte seriali,
guarda i messaggi mentre il kernel viene avviato, o usa il comando
/sbin/dmesg
per far scorrere di nuovo i
messaggi di avvio del kernel. In particolare, cerca dei messaggi
che inizino con i caratteri sio
.
Per vedere solo i messaggi che hanno la parola
sio
, usa il comando:
#
/sbin/dmesg | grep 'sio'
Ad esempio, su un sistema con quattro porte seriali, questi sono i messaggi dati dall'avvio del kernel specifici delle porte seriali:
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
Se il tuo kernel non riconosce tutte le tue porte seriali,
probabilmente devi configurare il kernel sistemando il
file /boot/device.hints
. Inoltre puoi
commentare o rimuovere completamente le righe dei dispositivi
che non hai.
Su FreeBSD 4.X devi editare il tuo file di configurazione del kernel. Per informazioni dettagliate sulla configurazione del kernel, guarda Capitolo 8, Configurazione del Kernel di FreeBSD. Le righe dei dispositivi interessati dovrebbero essere simili a queste:
device sio0 at isa? port IO_COM1 irq 4 device sio1 at isa? port IO_COM2 irq 3 device sio2 at isa? port IO_COM3 irq 5 device sio3 at isa? port IO_COM4 irq 9
Guarda la pagina man di sio(4) per informazioni aggiuntive sulla configurazione delle porte seriali e delle schede multiporta. Stai attento se stai usando un file di configurazione già usato per una versione differente di FreeBSD, poiché i flag dei dispositivi e la sintassi sono cambiati tra una versione e l'altra.
port IO_COM1
è una sostituzione per
port 0x3f8
, IO_COM2
è
0x2f8
, IO_COM3
è
0x3e8
, e IO_COM4
è
0x2e8
, che sono indirizzi comuni per le rispettive
porte seriali; gli interrupt 4, 3, 5, e 9 sono linee di richiesta di
interrupt piuttosto comuni. Da notare anche che le normali porte
seriali non possono condividere degli interrupt
sui bus ISA dei PC (le schede multiporta hanno dell'elettronica
integrata che permette a tutte le 16550A sulla scheda di condividere
uno o due linee di richiesta dell'interrupt).
Alla maggior parte dei dispositivi nel kernel si accede attraverso
«file speciali di dispositivo», che si trovano
nella directory /dev
. Ai dispositivi
sio
si accede attraverso i
/dev/ttydN
(ingresso) e /dev/cuadN
(uscita). FreeBSD fornisce anche dei dispositivi di inizializzazione
(/dev/ttydN.init
e
/dev/cuadN.init
su
FreeBSD 6.X,
/dev/ttyidN
e
/dev/cuaidN
su
FreeBSD 5.X e precedenti) e
dispositivi di blocco
(/dev/ttydN.lock
e
/dev/cuadN.lock
su
FreeBSD 6.X,
/dev/ttyldN
e
/dev/cualdN
su
FreeBSD 5.X e precedenti). I
dispositivi di inizializzazione vengono usati per inizializzare
i parametri delle porte di comunicazione ogni volta che una porta
viene aperta, come crtscts
per i modem che usano
le segnalazioni RTS/CTS
per il controllo di flusso.
I dispositivi di blocco vengono usati per fissare i flag sulle porte
ed evitare che altri utenti o programmi cambino certi parametri;
guarda le pagine man di termios(4), sio(4), e stty(1)
per maggiori informazioni sulle impostazioni dei terminali, sui
dispositivi di blocco ed inizializzazione, e sull'impostazione delle
opzioni del terminale, rispettivamente.
FreeBSD 5.0 include il file system devfs(5)
che crea automaticamente nodi per i dispositivi necessari.
Se stai usando una versione di FreeBSD con il
devfs
abilitato puoi saltare tranquillamente
questa sezione.
Uno script di shell di nome MAKEDEV
nella
directory /dev
gestisce i file di dispositivo.
Per usare MAKEDEV
nella creazione del
file di dispositivo per COM1
(porta 0),
fai cd
su /dev
e dai il
comando MAKEDEV ttyd0
. Allo stesso modo, per
creare il file di dispositivo per COM2
(porta 1), usa MAKEDEV ttyd1
.
MAKEDEV
non crea solo i file speciali
/dev/ttydN
,
ma anche i nodi
/dev/cuaaN
,
/dev/cuaiaN
,
/dev/cualaN
,
/dev/ttyldN
, e
/dev/ttyidN
.
Dopo aver creato i nuovi file di dispositivo, fa attenzione nel
controllare i permessi sui file (specialmente sui file
/dev/cua*
) per assicurarti che solo gli
utenti che dovrebbero effettivamente avere accesso a questi
dispositivi possano leggerli e
scriverli - magari non vorrai permettere al tuo utente medio
di usare il tuo modem per chiamare verso l'esterno. I permessi
predefiniti su
/dev/cua*
dovrebbero essere adatti:
crw-rw---- 1 uucp dialer 28, 129 Feb 15 14:38 /dev/cuaa1 crw-rw---- 1 uucp dialer 28, 161 Feb 15 14:38 /dev/cuaia1 crw-rw---- 1 uucp dialer 28, 193 Feb 15 14:38 /dev/cuala1
Questi permessi permettono all'utente uucp
e
agli utenti nel gruppo dialer
di usare i
dispositivi di uscita.
Il dispositivo
ttydN
(o
cuadN
) è il
normale dispositivo che si apre per le proprie applicazioni.
Quando un processo apre il dispositivo, avrà un insieme di
impostazioni di I/O predefinite per il terminale.
Puoi visualizzare queste impostazioni con il comando:
#
stty -a -f /dev/ttyd1
Quando cambi le impostazioni per questo dispositivo, queste rimangono
efficaci finché il dispositivo non viene chiuso. Quando viene
riaperto, ritorna all'insieme di default. Per effettuare dei cambiamenti
all'insieme predefinito, modifica le impostazioni per il dispositivo di
«stato iniziale». Ad esempio,
per attivare di default modalità CLOCAL
,
comunicazione a 8 bit, e controllo di flusso XON/XOFF
per
ttyd5
, scrivi:
#
stty -f /dev/ttyd5.init clocal cs8 ixon ixoff
Le inizializzazioni di sistema per i dispositivi seriali sono
controllate in /etc/rc.d/serial
. Questo file
influisce sui valori predefiniti dei dispositivi seriali.
Su FreeBSD 4.X, l'inizializzazione globale dei
dispositivi seriali è controllata in
/etc/rc.serial
.
Per evitare cambiamenti da parte di qualche applicazione,
modifica il dispositivo di «blocco dello stato».
Ad esempio, per bloccare la velocità di
ttyd5
a 57600 bps, scrivi:
#
stty -f /dev/ttyd5.lock 57600
Ora, un applicazione che apra ttyd5
e cerchi
di cambiare la velocità della porta resterà bloccata a
57600 bps.
Naturalmente, dovresti rendere i dispositivi di stato iniziale e stato
di blocco scrivibili solo da root
.
Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Per domande su FreeBSD, leggi la
documentazione prima di contattare
<questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a
<doc@FreeBSD.org>.