10ms impuls

Martin Mares mj na atrey.karlin.mff.cuni.cz
Čtvrtek Říjen 2 11:08:47 CEST 1997


Ahoj,

>   Mam takovy neobvykly pozadavek...vygenerovat v linuxu zpozdeni 10ms
> +-necomalo. Ovladam programator jednocipu a ten bohuzel vyzaduje tuhle
> neprijemnou vec. Zatim to mam udelany na hnusno tak, ze oliznu
> systemovej casovac a pokud je nekde hodne na zacatku (aspon 9.9ms pred
> svym podtecenim), se zakazanym :-( prerusenim cekam az skoro podtece.
> Pak ukoncim mazaci impuls, uvolnim preruseni a doufam, ze se nic vaznyho
> nestalo. Hnus, ze...
> Existuje nejaka korektnejsi cesta? Nemam na mysli shaneni RT podpory a
> podobne veci. Podminkou je, ze pokud uz ten impuls zacne, tak _bezpecne_
> skonci tehdy kdy ma. Nerad bych vymazal programovanej obvod jednou
> provzdy ze seznamu zivych. 
> Tahle vec je potreba jen pred programovanim, programuje se pak impulsy
> 10us a to uz snad linux prezije (pouzita stejna technika generovani). 
> Je to mozny nebo vubec ne?

   Obavam se, ze cista a pritom dokonale bezpecna metoda neexistuje.
Napadaji mne nasledujici moznosti:

	- Napsat na programovani jednoduchy kernelovy modul, ktery
bude mit vlastni kernel-level timer a tim pulsy casovat. Tedy vlastne:
pockat na timer tick, zapnout, pockat na dalsi, vypnout. Bezpecne,
pokud nekdo uvnitr jadra nema trvale zakazane interrupty na delsi
dobu.

	- Cekat se zakazanymy interrupty celych 10ms, coz ovsem opet
musi byt ucineno v kernelovem adresnim prostoru nebo alespon v zamlock()ovanem
prostoru, aby pri zakazanych interruptech nemohl nastat pozadavek na
cteni dotycneho kodu z disku.

				Have a nice fortnight
-- 
Martin `MJ' Mares   <mj na gts.cz>   http://atrey.karlin.mff.cuni.cz/~mj/
Faculty of Math and Physics, Charles University, Prague, Czech Rep., Earth
"ADA -- A Dumb Acronym"


Další informace o konferenci Linux