Programmation multitâches & OS temps réel
1.0
|
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:
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. :
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) :
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
) :
[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