Programmation multitâches & OS temps réel  1.0
Travaux dirigés

Les exercices suivants couvrent les différents sujets dans l’ordre où ils ont été abordés en cours. Certains font référence à un exercice précédent, il est donc recommandé de les effectuer dans l‎’‎ordre.

Le code C++ produit lors des TD doit respecter les conventions de codage spécifiées dans la section C++ Coding Conventions.

L'ensemble des codes développés doivent êtres compilés, linkés et exécutés sur une plateforme Linux. Certains développements à caractère temps réel impliquant des mesures temporelles précises doivent être effectués sur les plateformes embarquées Raspberry Pi2B (mises à disposition par le cours). Les indications ci-dessous montrent les commandes à effectuer repectivement pour la plateforme Linux stanbdard et pour la plateforme Raspberry Pi2B. L’exemple utilisé comprend la compilation, le link et l'exécution d'un programme satellite constitué des 2 fichiers source Main.cpp et Satellite.cpp utilisant les librairies Posix de gestion du temps et de programmation multitâches 

Sur une station de travail Linux standard (Machine Linux, Machine virtuelle Linux, Windows WSL, etc.) la commande de build (compilation, link), suivie de la commande d'exécution avec 2 arguments 1000000 et 5 est:

g++ -Wall -Wextra Main.cpp Satellite.cpp -o satell.arm -lrt -lpthread
./satellite 1000000 5

Sur la plateforme Raspberry Pi2B, la chaine de développement s’effectue en compilation croisée (cross-compiling): le code source est édité sur une station de développement Linux puis cross-compilé et cross-linké à l’aide d’une toolchain installée sur la station de développement. Pour ces TD, la toolchain comprend une commande arm-linux-g++ permettant de compiler et linker vos programmes. :

arm-linux-g++ -Wall -Wextra Main.cpp Satellite.cpp -o satell.arm -lrt -lpthread

Après avoir produit votre exécutable (satell.arm dans l’exemple), il faut le copier vers votre cible embarquée à travers sa connexion au réseau local. La commande de copie est scp (copie à travers ssh). En supposant que l’adresse IP de votre cible est 192.168.50.11 la commande de copie se présente ainsi (le mot de passe vous est transmis par votre professeur) :

scp satell.arm root@192.168.50.11:

Pour exécuter votre programme, il vous faut une autre fenêtre terminal dans laquelle vous vous connectez à la cible à travers ssh puis vous lancez la commande d'exécution (ici avec 2 arguments 1000000 et 5) :

ssh root@192.168.50.11
./satellite 1000000 5

C++ Coding Conventions


[TD-1] Mesure de temps et échantillonnage en temps


[TD-2] Familiarisation avec l’API multitâches pthread


[TD-3] Classes pour la gestion du temps


[TD-4] Classes de base pour la programmation multitâches


[TD-5] Inversion de priorité


[TD-6] Object actif