obsluha preruseni v linuxe

Jan Kasprzak kas na informatics.muni.cz
Středa Březen 31 14:51:39 CEST 1999


Richard Milan Komzik wrote:
: 
: Mam pristroj, ktory je pripojeny do serioveho portu pocitaca. Tento pristroj
: generuje synchronizacne impulzy a taktiez dodava na port nejake data.
: Program, ktory toto obsluhuje, sa nam podarilo napisat v C+assembler: Pri
: kazdom synchronizacnom impulze sa v systeme vyvola prerusenie. Vektor tohto
: prerusenia sa nastavi na routinu (napisanu v assembleri, aby to bolo
: rychle), ktora zabezpeci vycitanie dat z portu. Synchronizacny impulz moze
: chodit kazdu stotinu sekundy (v buducnosti mozno tisicinu). Takto to vyzera
: pod DOSom.

	Ten pristroj posila normalni seriova data, nebo jen nastavuje
nejake signaly na RS-232?

	Jinak 1000 preruseni za sekundu neni nic zavratneho - kdyz jsem
testoval kartu COSA, delalo to okolo 20000 preruseni (a nejen preruseni,
ale kompletni HDLC/IP/TCP, ktere s tim souviselo) na P100.

: Teraz moje otazky: da sa taketo nieco urobit pod linuxom? Je mi jasne, ze
: assemblerovska syntax je ina, ze musim zabezpecit pristup k portu (je
: potrebne, aby vysledna exekutiva bola setuid root, alebo je lepsie povolit
: uzivatelom prava na /dev/cua0?)... Je vsak velmi dolezite, aby sa meranie
: vykonalo po prichode synchronizacneho impulzu a aby sa stihlo obsluzit do
: prichodu dalsieho. Predpokladam, ze procesu bude potrebne priradit vysoku
: (najvyssiu?) prioritu. Ako sa take nieco zabezpeci? Da sa to iba nejakymi
: systemovymi prostriedkami, alebo je potrebne mat specialny kernel?

	Dost zalezi na tom, jestli se rozhodnete to delat v user-space
nebo v kernelu. V prvnim pripade to jde napsat portabilne, ale vykon
mozna nebude uplne maximalni (na druhe strane, pri 1000 ctenich za sekundu
je to unosne). V kernelu to bude podstatne rychlejsi, nebudou problemy
s prioritou, ale nebude to prenositelne.

	Podle meho nazoru to pujde do urciteho poctu mereni udelat v C,
a pouze s pouzitim prav /dev/ttyS*. Ostatne lepsi bude, kdyz kernel pred
vami skryje rozdily mezi jednotlivymi UARTy a podobne.

: Na zaver este jedna ina otazka: ako je to s mapovanim klavesnice v linuxe?
: Napisal som si routinu, ktora nahradzuje Borlandovske "getch", ale
: samozrejme, dostavam pri klavesach ako napr. arrow keys ine kody ako pod
: DOSom. Ako sa takyto problem zvykne riesit v zaujme prenositelnosti
: zdrojaku?

	Pres terminfo (nebo termcap).

-Yenya

--
\ Jan "Yenya" Kasprzak <kas at fi.muni.cz>       http://www.fi.muni.cz/~kas/
\\ PGP: finger kas at aisa.fi.muni.cz   0D99A7FB206605D7 8B35FCDE05B18A5E //
\\\             Czech Linux Homepage:  http://www.linux.cz/              ///
///    I hope AFS dies a slow and painful death with people migrating    \\\
//     to better alternatives (coda, whatever).      --Linus Torvalds     \\


Další informace o konferenci Linux