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