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