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