Pro inspiraci: Dva COMy na jednom IRQ.

Vladimir Myslik a na sun.felk.cvut.cz
Neděle Únor 9 17:40:42 CET 1997


In article <m0vt0CM-0004HrC na elf.felk.cvut.cz>, you wrote:
>Dobrou noc/dobre rano/dobry den,
>				s  malou  prestavkou jsem se opet vrhl
>na ukol  zprovoznit  pod Linuxem  sve  tri COMy:   COM1(IRQ4) je  mys,
>COM2(IRQ3) je  modem a COM3(IRQ4) je terminal.  COM2  je bez problemu,
>ten funguje vzdy a ted se mi uz (vhodnym nastavenim switchu) podarilo,
>ze funguji i COM1  a COM3, jenomze zatim  pouze tehdy,  je-li pouzivan
>(otevren) jen jeden z  nich. Pokud ale pustim  napriklad gpm, ktery si
>otevre    /dev/cua0,   komunikace     s     terminalem    se     stane
>nepouzitelnou.    Znaky sice  projdou,   ale se    zpozdenim  asi  tak
>10s. Jakmile gpm ukoncim,  rozjede se komunikace s terminalem.  Opacne
>to funguje stejne. 

To j e totiz tak: zarizeni na ISA sbernici dava vedet radici preruseni ze 
chce obslouzit tak, ze vytahne IRQ drat na sbernici do 1 (to je v TTL logice
trochu neobvykle). Vetsina zarizeni ma ttl brouky, ktere jsou hodne tvrde do 0 
ale mekke do 1. Takze kdyz se paralelne spoji dve karty na jeden drat 
preruseni, tak vzdycky vyhraje silnejsi - tedy preruseni nejdou generovat(pokud
nepozaduji preruseni oba ucastnici).
 Proc to funguje kdyz se pouziva pouze jeden z obou seriovych portu na stejnem
IRQ je ten, ze porty se umi od tohoto dratu 'distancovat' - tedy ze prepnou generator
preruseni do tretiho stavu a chovaji se tedy inertne.

Nove motherboardy jsou dokonce tak debilni, ze kdyz maji na sobe integrovane porty
tak nenechaji projit preruseni z ISA sbernice do radice preruseni, i
kdyz tyto seriove porty operacni system nepouziva!
Ja jsem vyresil tento problem takto: vzal jsem starou seriovou kartu s 
2x82450 , vytahal jsem jumpery a misto nich jsem generovane preruseni vytahl
do 7400 , kde jsem realizoval funkci OR pomoci 3 hradel. Vystup jsem pripojil 
na IRQ7 na sbernici. Pak jsem dal
setserial /dev/ttyS0 irq 7
setserial /dev/ttyS1 irq 7

a funguje to s modemem 33k v pohode (a HW handshaking).
zapojeni 7400 vypada takhle:


IRQ od com3 |\           __
------------| |o--------|  \
            |/          |   \    na sbernici do IRQ7
                        |    |o----------
IRQ od com4|\           |   /
-----------| |o---------|__/
           |/

Na vetsine karet by se to melo dat udelat v pohode. Ani se nemusi rezat draty,
staci naletovat na jumpery vodice a privest signal na to hradlo.


>
>Soudim, ze jelikoz oba porty funguji, hardwarovy problem to neni. Proc
>to tedy ten Linux neumi? Zatim mam dve prozatimni reseni:

Linux to umi. Spolehlive.

>1. Operativne startovat/ukoncovat gpm pri praci s terminalem :-(
>2. Pomoci 'setserial /dev/cua? irq   2'  prepnout driver pro jeden   z
>   portu  z  interrupt do polling   rezimu.  To funguje,   ale neni to
>   nejrychlejsi (v zavislosti na velikosti bufferu v UART cipu), a 
>   zbytecne to zatezuje system. 
>





>Poznamka: Windows 95 to taky nezvladnou. Tam mi prestane reagovat mys,
>dokonce   i  kdyz komunikuji  s   COM2,   t.j. jiny IRQ.  Nejspis  mam
>nepodporovanou mys.
>
>Komentare vitany (ale zase se s tim moc netrapte). 
> 
>						Honza 
>	       
>


-- 
------------------------------------------------------------------
 Vladimir Myslik  
(if you experience delivery problems replying my mail, try the addresses below)
mailto:xmyslik na cslab.felk.cvut.cz , mailto:xmyslik na cs.felk.cvut.cz
http://cs.felk.cvut.cz/~xmyslik


Další informace o konferenci Linux