Avanti Indietro Indice

9. Posso usare più di due porte seriali?

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.

9.1 Scegliere gli interrupt per le periferiche seriali

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.

9.2 Impostare gli indirizzi per le periferiche seriali

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.


Avanti Indietro Indice