Forum général.général temps réel

Posté par  .
Étiquettes : aucune
0
18
avr.
2006
bonjour,

j'ai compilé un noyau 2.6.14 patcher xenomai-2.1-rc2, j'ai noyau qui tourne, cependant lorsque j'essais de faire tourner des taches vxWorks sous mon noyaux (les taches vxworks deviennent des threads sous linux)tous s'exécutant au sein d'un seul et même process.
. Or, j'ai choisi que ce process s'exécute en mode 'User', pour plus de
commodité, et aussi parce que la programmation 'kernel' me fait un peu
peur ...
. LXRT est le mécanisme qui permet à un process 'User' d'être quand même
'temps réel' : Si j'ai bien compris, le fonctionnement de la tâche se fait
principalement en mode kernel 'temps réel', et à chaque fois qu'un appel
système doit être fait, on repasse en mode 'Linux' standard pendant tout
le temps que dure ce service ...
. Il semble malheureusement que dès qu'un appel système est lancé dans un
des thread (typiquement la fonction select avec un timeout de plusieurs
centaines de mS est systématiquement utilisée dans les tâches 'réseau'),
alors le fonctionnement temps réel des autres thread est complètement coincé !

Pour illustrer cela, j'ai fait une application très simple, On crée 5 tâches qui
impriment un messages tous les 100 ticks.
Après la création, si la tâche principale bloque sur un scanf pour
attendre une validation opérateur, alors tout s'arrête.
En revanche, si la tâche boucle en testant le clavier (fonction kbhit) et
en faisant des taskDelay(), le fonctionnement continue.

est ce que ce comportement est normal?
et comment faire pour le contourner?

merci!!!

gdroopy

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.