Non avete bisogno di leggere questa sezione a meno che non intendiate utilizzare tre o piú periferiche seriali ( assumendo il fatto che non avete una porta seriale).
Il numero delle porte seriali è limitato dal numero di interrupt (IRQ) e indirizzi di I/O che possiamo utilizzare. Queste non è una limitazione di Linux, ma del bus del PC. Ad ogni porta seriale deve essere assegnato un proprio indirizzo e dovrebbe avere il proprio interrupt. Se due periferiche condividono lo stesso interrupt, può funzionare correttamente se le due periferiche non operano contemporaneamente (nella maggior parte dei casi sono i due programmi che non devono essere in esecuzione assieme). Una periferica seriale può essere un porta seriale, un modem interno, oppure una scheda seriale multiporta.
Una scheda seriale multiporta sono appositamente progettate per avere porte seriali multiple che condividono lo stesso interrupt per tutte le porte sulla scheda. Linux riceve i dati da queste usando differenti indirizzi di I/O per ogni porta sulla scheda.
Il vostro PC normalmente ha ttyS0
e ttyS2
associate
all'IRQ 4, e ttyS1
e ttyS3
all'IRQ 3. Potete visualizzare
gli IRQ utilizzati digitando setserial /dev/ttyS2 ecc
ecc. Il contenuto di /proc/interrupts
mostra alcuni di
questi. Per usare più di una periferica seriale dovrete riassegnare
gli interrupt. Una buona scelta solitamente è quella di riutilizzare
l'interrupt della porta parallela. Il vostro PC normalmente ha IRQ 5 e
IRQ 7 per la porta parallela, ma poche persone usano due porte di
questo genere. Potete riassegnare uno di questi interrupt ad una porta
seriale e continuare ad usare felicemente la vostra porta
parallela. Avete bisogno dell'applicazione setserial
per eseguire
questa operazione. In aggiunta, dovete fare alcuni tentativi con i
jumper della vostra scheda, consultate il manuale di questa per
maggiori informazioni. Impostate i jumper per l'IRQ che desiderate
per ciascuna porta.
Dovete impostare le cose in modo che esista un solo interrupt per ciascuna periferica seriale. Ecco come Greg ha configurato il suo sistema in /etc/rc.d/rc.local
- dovete eseguire le modifiche in un file che viene eseguito all'avvio del sistema:
/sbin/setserial /dev/ttyS0 irq 3 # il mio mouse serial
/sbin/setserial /dev/ttyS1 irq 4 # il mio terminale stupido Wyse
/sbin/setserial /dev/ttyS2 irq 5 # il mio modem Zoom
/sbin/setserial /dev/ttyS3 irq 9 # il mio modem USR
Impostazione standard degli IRQ:
IRQ 0 Timer channel 0 IRQ 1 Keyboard IRQ 2 Cascade for controller 2 IRQ 3 Serial port 2 IRQ 4 Serial port 1 IRQ 5 Parallel port 2 IRQ 6 Floppy diskette IRQ 7 Parallel port 1 IRQ 8 Real-time clock IRQ 9 Redirected to IRQ2 IRQ 10 non assegnato IRQ 11 non assegnato IRQ 12 non assegnato IRQ 13 Math coprocessor IRQ 14 Hard disk controller 1 IRQ 15 Hard disk controller 2
Non esiste una vera a propria regola per le scelte degli interrupt. Assicuratevi solamente che questo non venga utilizzato dalla scheda madre o da nessuna altra scheda presente nel Pc. Gli IRQ 2, 3, 4, 5 o 7 sono delle buone scelte. ``non assegnato'' significa che non gli è assegnata nessuna scheda o periferica standard. Da notare inoltre che gli IRQ 2 e IRQ 9 sono identici. Potete chiamarli 2 o 9, la periferica seriale fortunatamente funziona bene lo stesso. Se possedete una scheda seriale con un connettore per un bus a 16-bit, potete anche usare gli IRQ 10, 11, 12 oppure 15.
NON utilizzate gli IRQ 0, 1, 6, 8, 13 o 14! questi sono riservati alla scheda madre. Non sarà molto felice se gli usate i suoi IRQ prediletti! :) Quando avete impostato il tutto, controllate più volte /proc/interrupts
per assicurarsi che non ci siano conflitti hardware.
Dopo di che, dovete impostare l'indirizzo della porta. Controllate il manuale della vostra scheda per le impostazioni dei jumper. Come per gli interrupt, può esistere una sola periferica seriale per ciascun indirizzo. Le vostre porte sono usualmente configurate come segue:
ttyS0 indirizzo 0x3f8
ttyS1 indirizzo 0x2f8
ttyS2 indirizzo 0x3e8
ttyS3 indirizzo 0x2e8
Scegliete quale indirizzo desiderate per ogni periferica seriale e impostate i jumper di conseguenza. Io ho il mio modem sulla porta ttyS3
, il mio mouse su ttyS0
e terminale su ttyS2
.
Quando riavviate il sistema, Linux dovrebbe riconoscere le porte
seriali all'indirizzo al quale le avete configurate. Gli IRQ di Linux
possono non corrispondere a quelli che avete impostato con i
jumper. Non preoccupatevi. Linux non esegue nessun riconoscimento
automatico degli IRQ, poiché questo può risultare fallimentare. Usate
setserial
per dare a Linux l'IRQ corretto per la vostra scheda,
quello che avete impostato voi. Nel file /proc/ioports
troverete quali indirizzi di porte di I/O sono in uso dopo l'avvio di
Linux.