<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <TITLE>Linux Serial HOWTO: Posso usare più di due porte seriali?</TITLE> <LINK HREF="Serial-HOWTO-10.html" REL=next> <LINK HREF="Serial-HOWTO-8.html" REL=previous> <LINK HREF="Serial-HOWTO.html#toc9" REL=contents> </HEAD> <BODY> <A HREF="Serial-HOWTO-10.html">Avanti</A> <A HREF="Serial-HOWTO-8.html">Indietro</A> <A HREF="Serial-HOWTO.html#toc9">Indice</A> <HR> <H2><A NAME="irqaddr"></A> <A NAME="s9">9. Posso usare più di due porte seriali?</A></H2> <P>Non avete bisogno di leggere questa sezione a meno che non intendiate utilizzare tre o piú periferiche seriali ( assumendo il fatto che <EM>non</EM> avete una porta seriale). <P>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 <EM>deve</EM> 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. <P> <P>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. <P> <H2><A NAME="ss9.1">9.1 Scegliere gli interrupt per le periferiche seriali</A> </H2> <P>Il vostro PC normalmente ha <CODE>ttyS0</CODE> e <CODE>ttyS2</CODE> associate all'IRQ 4, e <CODE>ttyS1</CODE> e <CODE>ttyS3</CODE> all'IRQ 3. Potete visualizzare gli IRQ utilizzati digitando <EM>setserial /dev/ttyS2 </EM> ecc ecc. Il contenuto di <CODE>/proc/interrupts</CODE> 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 <CODE>setserial</CODE> 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. <P> <P> Dovete impostare le cose in modo che esista un solo interrupt per ciascuna periferica seriale. Ecco come Greg ha configurato il suo sistema in <CODE>/etc/rc.d/rc.local</CODE> - dovete eseguire le modifiche in un file che viene eseguito all'avvio del sistema: <P> <BLOCKQUOTE><CODE> <PRE> /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 </PRE> </CODE></BLOCKQUOTE> <P>Impostazione standard degli IRQ: <PRE> 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 </PRE> <P>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. <P> <P> <EM>NON</EM> 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 <CODE>/proc/interrupts</CODE> per assicurarsi che non ci siano conflitti hardware. <P> <H2><A NAME="ss9.2">9.2 Impostare gli indirizzi per le periferiche seriali</A> </H2> <P>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: <BLOCKQUOTE><CODE> <PRE> ttyS0 indirizzo 0x3f8 ttyS1 indirizzo 0x2f8 ttyS2 indirizzo 0x3e8 ttyS3 indirizzo 0x2e8 </PRE> </CODE></BLOCKQUOTE> Scegliete quale indirizzo desiderate per ogni periferica seriale e impostate i jumper di conseguenza. Io ho il mio modem sulla porta <CODE>ttyS3</CODE>, il mio mouse su <CODE>ttyS0</CODE> e terminale su <CODE>ttyS2</CODE>. <P>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 <CODE>setserial</CODE> per dare a Linux l'IRQ corretto per la vostra scheda, quello che avete impostato voi. Nel file <CODE>/proc/ioports</CODE> troverete quali indirizzi di porte di I/O sono in uso dopo l'avvio di Linux. <P> <HR> <A HREF="Serial-HOWTO-10.html">Avanti</A> <A HREF="Serial-HOWTO-8.html">Indietro</A> <A HREF="Serial-HOWTO.html#toc9">Indice</A> </BODY> </HTML>