J'ai une tâche qui est essentiellement une minuterie; donc il va dormir et est censé se réveiller périodiquement .. Donc la tâche de minuterie dort par exemple 10ms. Mais ce qui se passe, c'est qu'il est incohérent au réveil et ne peut pas être invoqué pour se réveiller correctement dans le temps.Linux RTOS sleep() - wakeup() pour la tâche de minuteur
En fait, dans mes courses, il y a une grande différence dans les temps de sommeil. Parfois, il peut varier de 1-2 ms en éveil et très peu de fois ne reviennent pas du tout. C'est parce que le planificateur du noyau place toutes les tâches en attente et en attente dans une file d'attente, puis quand il interroge pour voir qui doit être éveillé, je pense que c'est round robin. Donc parfois la tâche aurait expiré au moment où le programmateur interroge à nouveau. Parfois, lorsqu'il y a des interruptions, l'ISR prend le contrôle et retarde le réveil.
Quelle est la meilleure solution pour gérer ce genre de problème?
(détails supplémentaires: La tâche est une minuterie MAC pour un réseau sans fil, RTOS est un micronoyau u-velOSity)
D'où vient le RTOS dans cette question? A la fin, vous mentionnez u-velOSity, mais cela ne semble pas du tout pertinent à la question posée, où elle n'est pas mentionnée du tout. – Clifford