Pro inspiraci: Dva COMy na jednom IRQ.

Tom Mazouch mazouch na brn.pvt.cz
Pondělí Únor 10 10:03:45 CET 1997


> 
> 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. .......

Podle mych znalosti HW to ma na svedomi fakt, ze IRQ vystup z UARTu je veden
pres budic, ktery lze jednim bitem (OUT1 nebo OUT2 ... nevim) odstavit do
tretiho stavu, takze neotevreny COM se tvari, jako by na IRQ nebyl. Jak se
otevrou dva na jednu IRQ linku, nastane kolize.

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

Umi, ale musi se tomu pomoct hardwarove.

> 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. 

Neni nutne, lze presvedcit nekolik COMu, aby sdilely jedno IRQ.

> 
> 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 
> 	       
> 
Kdysi jsem se uz tady na to ptal a dozvedel jsem se, ze Linux to zvladne,
zkusil jsem to a ... opravdu. Proc to nejde "jen tak":
IRQ v PC je aktivni v urovni H, takze nefunguje "wired-OR" s otevrenymi
kolektory. 
Co s tim?
Metoda prvni, drsnejsi:
Klidovy stav na IRQ je H (trochu divne...aspon ja to tak mam) a je nutno
odporem proti zemi tady docilit L (na sdilene lince). Pak se vsechny
"sdilejici" COMy pripoji na tuto linku pres diody, katoda smerem k MB, anoda
k UARTu. Problem je v tom, ze mi odpor proti zemi vysel 100 ohmu coz je
velice malo, budice IRQ dostavaji zabrat. Takto mi to ale chodi uz nejakej
ten mesic (sdilim mys a port "na ostatni/ruzne" na IRQ5, COM1 a 2 jsou na
MB, tudiz sdilet nejdou).
Metoda lepsi:
"Nekam" je treba vlepit jedno pouzdro hradel OR, IRQ z UARTu privest na
vstupy a vystup odvest do MB. 

Preji hodne uspechu, chce to jen nedat se odradit a neco neodprasknout, pak
to funguje.
                                                               Tom




Další informace o konferenci Linux