TP4 Temps Réel :
Ordonnanceur Arduino

L'objectif de ce TP est de faire un ordonnanceur minimaliste de processus pour Arduino.

Intallez les paquets gcc-avr et arduino et l'environnement du TP :
GET http://perso.univ-lyon1.fr/thierry.excoffier/COURS/COURS/TEMPS_REEL/tp4.tar.gz | zcat | tar -xvf -

Tout ce dont vous avez besoin est dans main.c :

Algorithme de l'ordonnanceur :

Votre travail :

  1. Faire l'ordonnanceur indiqué.
  2. Décommenter la tâche ephemere, après le démarrage des leds, on entend un son saccadé, pourquoi ?
  3. Le son s'arrête quand la tâche ephemere se termine, mais les leds aussi, corriger ce bug de la manière la plus simple possible, mais sans gaspiller de temps CPU.
  4. Le clignotement des leds accélère : pourquoi ?
  5. Dans quel cas la correction du bug en a entraîné un autre, mais dont la probabilité de déclenchement est très faible ? Si vous n'avez pas de bug, expliquez comment vous l'avez évité. N'essayez pas de le corriger.
  6. Protégez la section critique avec cli() et sei(). N'utilisez pas le paramètre des fonctions get_mutex et release_mutex. Vérifiez que l'afficheur 7 segments ne clignote plus.
  7. Dans la réalité, les processus utilisateurs ne peuvent suspendre les interruptions pour se protéger. Donc, utilisez maintenant le paramètre mutex et ne mettez le cli() et sei() que dans la fonction get_mutex.
  8. Avec cette solution, on perd du temps CPU à attendre la libération du verrou : la solution du pauvre est de mettre le quantum de temps à 0 (au lieu de 255) quand on doit attendre le verrou. La durée du quantum est définie par OCR0A.
  9. Si vous avez le temps, vous faites une solution plus propre...

Pour rendre ce TP, je veux un simple fichier texte sans aucun formatage répondant aux questions en inserrant les bouts de codes directement dans vos réponses.

Donc pas de PDF ou Doc, du RST si vous voulez.