On Wednesday 26 September 2007 10:12:31 Dragos Popescu wrote:
> Pentru prelevarea eşantioanelor am setat un timer aşa cum se vede în
> progrămelul de mai jos (scuze de lungimea postului), numai că
> rezultatul e dezastruos: dacă măsor o tensiune costantă, rezultatul
> întors e corect cu o precizie mai mult decât mulţumitoare, dacă măsor o
> tensiune alternativă, am pus-o! Şi asta din cauza timer-ului care numai
> la 625us nu bate şi când aplic prelucrările numerice asupra
> eşantioanelor, iese o poezie!
> Nu se pune problema vitezei de eşantionare a plăcilor de achiziţie, alea
> merg lejer la 200k măsurători/sec.
> Cum aş putea rezolva cât de cât problema asta cu timerul?
> Am încercat "nice" da' linuxul de la sistemul ăsta n-a auzit de aşa
> ceva.
Nu cred ca e vorba de nice. nice ar ajuta daca ar fi mai multe aplicatii pe
sistem care concureaza pt CPU si atunci ai prioritiza unele fata de altele,
dar nu e cazul tau. Problema ta cred eu vine pur si simplu de la
granularitatea timer-ului maxima pe Linux (astea cu HZ mai ales). Daca vrei
granularitate maxima cred ca iti trebuie ceva tickless si un kernel foarte
recent (desi pt ARM nu cred ca are inca suport de tickless, trebuie sa
verifici). Pe 2.4.21 in primul rand ca nici kernelul nu e preemptibil macar,
orice syscall se executa pana se blocheaza in I/O sau alta coada de asteptare
si nu are posibilitatea sa fie preemptat mai devreme pt a face schedule pe
alta aplicatie.
Deci pe langa sugestia de a utiliza un kernel foarte recent cu tickless (sau
macar un HZ mai mare de 1000 or so) si suport de softRT cred ca cel mai bine
ar fi un linux specializat pt RT (exista mai multe proiecte) chiar daca nu
sunt sigur ca suporta macar unul din ele hard RT. Daca chiar ai nevoie de
hard RT ai mai putea incerca si cu QNX sa vezi macar daca asta e problema.
--
Mihai RUSU Email: [EMAIL PROTECTED]
"Linux is obsolete" -- AST
_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug