No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

rapport_etudiant.tex 23KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512
  1. % Description du contenu du rapport à rendre pour l'UF temps réel en 4AE et 4IR
  2. % Auteur : P.-E. Hladik
  3. % Institut : INSA de Toulouse
  4. \documentclass[11pt, a4paper]{paper}
  5. \usepackage{a4wide,color}
  6. \usepackage[utf8]{inputenc}
  7. \usepackage[T1]{fontenc}
  8. \usepackage[frenchb]{babel}
  9. \usepackage{graphicx}
  10. \usepackage{amssymb}
  11. \usepackage{hyperref}
  12. \usepackage{amstext}
  13. \usepackage{amsmath}
  14. \usepackage[dvipsnames]{xcolor}
  15. \usepackage{placeins}
  16. \newcounter{cptreq}
  17. \usepackage{framed}
  18. \title{{\Huge Rapport de projet De Stijl 2.0}\\
  19. {\large version \today}\\
  20. ---\\
  21. }
  22. \author{\color{blue}{Mettez ici vos noms et les parties sur lesquelles vous avez travaillées :}\\
  23. \color{blue}{conception, robot, vidéo, mission, intégration, rédaction du compte-rendu}\\
  24. \color{blue}{Exemple : P.-E. Hladik (conception, robot, rédaction du compte-rendu)}
  25. }
  26. \begin{document}
  27. %%%%%%%%%%%%%%
  28. % PAGE DE GARDE
  29. \maketitle
  30. {\color{red}
  31. \begin{framed}
  32. \begin{center}{\bf\Large --- Ce qu'il faut faire --- } \end{center}
  33. {\bf Remplacez tous les textes en bleu et supprimer les textes en rouge}\\
  34. {\bf Le rapport est à rendre en pdf et à déposer sur moodle avant le 31 mars 2019 23h59:
  35. \url{https://moodle.insa-toulouse.fr/mod/assign/view.php?id=33071}}\\
  36. {\bf Vous devez \underline{aussi} rendre les fichiers {\tt tasks.h} et {\tt tasks.cpp}.}\\
  37. Vous pouvez utiliser word ou un autre logiciel d'édition pour rédiger ce rapport, par contre vous devez {\bf impérativement respecter la structure ci-après et le rendre au format pdf}.\\
  38. Critères d'évaluation :
  39. \begin{itemize}
  40. \item Qualité rédactionnelle,
  41. \item Exhaustivité et justesse des règles de codage,
  42. \item Qualité de la conception (clarté, respect de la syntaxe, exhaustivité, justesse),
  43. \item Qualité des explications,
  44. \item Respect des règles dans la production du code.\\
  45. \end{itemize}
  46. Compétences évaluées :
  47. \begin{itemize}
  48. \item rédaction et communication sur un dossier de conception,
  49. \item concevoir une application concurrente temps réel,
  50. \item analyser une conception,
  51. \item passer d'un modèle de conception à une implémentation,
  52. \item écriture de code et utilisation de primitives au niveau système.
  53. \end{itemize}
  54. \end{framed}
  55. }
  56. %%%%%%%%%%%%%%
  57. % DEBUT DU RAPPORT
  58. \newpage
  59. %%%%%%%%%%%%%%
  60. % CONCEPTION
  61. \section{Conception}
  62. {\color{red} Mettez dans cette partie tous les éléments de votre conception en particulier vos diagrammes AADL (vue globale du système) et les diagrammes d'activité (détails des threads). Cette partie doit être auto-suffisante pour comprendre votre application.
  63. Pour faciliter la lecture des schémas, vous allez présenter votre conception en trois parties, l'une focalisée sur la communication entre le moniteur et le superviseur, la seconde consacrée au traitement vidéo et la troisième au contrôle du robot.
  64. Si vous le souhaitez, au lieu de dessiner vos diagrammes sous un éditeur, vous pouvez joindre un scan de vos schémas — ils doivent être lisibles et propres.}
  65. % VUE GENERAL DU SYSTEME
  66. \subsection{Diagramme fonctionnel général}
  67. {\color{red} Mettez ici un diagramme fonctionnel qui présente les principaux blocs de votre conception. Pour cela, inspirez vous du diagramme ci-dessous (fig.~\ref{fig:diag_fonc_gen}) en indiquant pour chaque groupe de threads les données et ports partagés. La figure~\ref{fig:diag_fonc_gen} a été réalisée à partir du document de conception. {\bf Vous devez absolument conserver le découpage en trois groupes de threads ({\tt th\_group\_gestion\_moniteur}, {\tt th\_group\_vision}, {\tt th\_group\_gestion\_robot}).}}
  68. \begin{figure}[htbp]
  69. \begin{center}
  70. {\includegraphics[scale=.5]{./figures-pdf/diag_fonc_gen}}
  71. {\caption{Diagramme fonctionnel du système}}
  72. \end{center}
  73. \label{fig:diag_fonc_gen}
  74. \end{figure}
  75. \FloatBarrier
  76. % DIAGRAMME FONCTIONNEL GT MONITEUR
  77. \subsection{Groupe de threads gestion du moniteur}
  78. {\color{red}Placez ici :
  79. \begin{itemize}
  80. \item le diagramme fonctionnel en AADL décrivant le groupe de threads de gestion du moniteur (voir exemple de la figure~\ref{fig:diag_fonc_moniteur} réalisée à partir du dossier de conception),
  81. \item remplir le tableau~\ref{tab:gt_moniteur} pour expliquer le rôle de chacun des threads,
  82. \item les diagrammes d'activité de chaque thread de ce groupe.
  83. \end{itemize}
  84. Décrivez tous les éléments (paramètres, variables, etc.) qui vous semblent pertinents pour comprendre les diagrammes.}
  85. % DIAGRAMME FONCTIONNEL GT MONITEUR
  86. \subsubsection{Diagramme fonctionnel du groupe gestion du moniteur}
  87. {\color{red} Exemple de diagramme fonctionnel pour le groupe de thread de gestion du moniteur. Mettez à jour ce diagramme avec votre conception.}
  88. \begin{figure}[htbp]
  89. \label{fig:diag_fonc_moniteur}
  90. \begin{center}
  91. {\includegraphics[scale=.5]{./figures-pdf/diag_fonc_moniteur}}
  92. {\caption{Diagramme fonctionnel du groupe de threads gestion du moniteur}}
  93. \end{center}
  94. \end{figure}
  95. \FloatBarrier
  96. % DESCRIPTION THREADS GT MONITEUR
  97. \subsubsection{Description des threads du groupe gestion du moniteur}
  98. {\color{red} Remplissez le tableau ci-dessous pour expliquer le rôle de chaque thread et donner son niveau de priorité.}
  99. \begin{table}[htp]
  100. \caption{Description des threads du groupe {\tt th\_group\_gestion\_moniteur}}
  101. \begin{center}
  102. \begin{tabular}{|p{3cm}|p{8.5cm}|p{2cm}|}
  103. \hline
  104. \bf Nom du thread & \bf Rôle & \bf Priorité \\
  105. \hline
  106. \hline
  107. \color{blue}tCommuniquer & \color{blue}Prend en charge les messages entrants depuis le moniteur & \color{blue}25\\
  108. \hline
  109. \color{blue}tEnvoyer & \color{blue}Envoi l'ensemble des messages du superviseur au moniteur & \color{blue}30\\
  110. \hline
  111. \color{blue}... & \color{blue}... & \color{blue}...\\
  112. \hline
  113. \end{tabular}
  114. \end{center}
  115. \label{tab:gt_moniteur}
  116. \end{table}%
  117. % DIAGRAMMES D'ACTIVITE GT MONITEUR
  118. \subsubsection{Diagrammes d'activité du groupe gestion du moniteur}
  119. {\color{red}Décrivez le comportement de chacun de vos threads avec des diagrammes d'activité. Apportez les explications qui vous semblent nécessaires pour comprendre votre conception. A titre d'exemple les diagrammes fonctionnels tirés du document de conception sont remis.}
  120. \begin{figure}[htbp]
  121. \label{fig:act_communiquer}
  122. \begin{center}
  123. {\includegraphics[scale=.3]{./figures-pdf/th_receiveFromMon.png}}
  124. {\caption{Diagramme d'activité du thread {\tt th\_receiveFromMon}}}
  125. \end{center}
  126. \end{figure}
  127. \begin{figure}[htbp]
  128. \label{fig:act_envoyer}
  129. \begin{center}
  130. {\includegraphics[scale=.3]{./figures-pdf/th_sendToMon}}
  131. {\caption{Diagramme d'activité du thread {\tt th\_sendToMon}}}
  132. \end{center}
  133. \end{figure}
  134. \begin{figure}[htbp]
  135. \label{fig:act_envoyer}
  136. \begin{center}
  137. {\includegraphics[scale=.3]{./figures-pdf/th_server}}
  138. {\caption{Diagramme d'activité du thread {\tt th\_server}}}
  139. \end{center}
  140. \end{figure}
  141. \FloatBarrier
  142. % DIAGRAMME FONCTIONNEL GT VISION
  143. \subsection{Groupe de threads vision}
  144. % DIAGRAMME FONCTIONNEL GT VISION
  145. \subsubsection{Diagramme fonctionnel du groupe vision}
  146. {\color{blue} Ajoutez le diagramme fonctionnel du groupe de threads de vision.}
  147. % DESCRIPTION THREADS GT VISION
  148. \subsubsection{Description des threads du groupe vision}
  149. {\color{red} Remplissez le tableau ci-dessous pour expliquer le rôle de chaque thread et donner son niveau de priorité.}
  150. \begin{table}[htp]
  151. \caption{Description des threads du groupe {\tt th\_group\_vision}}
  152. \begin{center}
  153. \begin{tabular}{|p{3cm}|p{8.5cm}|p{2cm}|}
  154. \hline
  155. \bf Nom du thread & \bf Rôle & \bf Priorité \\
  156. \hline
  157. \hline
  158. \color{blue}... & \color{blue}... & \color{blue}...\\
  159. \hline
  160. \end{tabular}
  161. \end{center}
  162. \label{tab:gt_moniteur}
  163. \end{table}%
  164. \FloatBarrier
  165. % DIAGRAMMES D'ACTIVITE GT VISION
  166. \subsubsection{Diagrammes d'activité du groupe vision}
  167. {\color{blue}Décrivez le comportement de chacun de vos threads avec des diagrammes d'activité. Apportez les explications qui vous semblent nécessaires pour comprendre votre conception.}
  168. % DIAGRAMME FONCTIONNEL GT ROBOT
  169. \subsection{Groupe de threads gestion du robot}
  170. % DIAGRAMME FONCTIONNEL GT ROBOT
  171. \subsubsection{Diagramme fonctionnel du groupe gestion robot}
  172. {\color{blue} Ajoutez le diagramme fonctionnel du groupe de threads de gestion du robot.}
  173. % DESCRIPTION THREADS GT ROBOT
  174. \subsubsection{Description des threads du groupe gestion robot}
  175. {\color{red} Remplissez le tableau ci-dessous pour expliquer le rôle de chaque thread et donner son niveau de priorité.}
  176. \begin{table}[htp]
  177. \caption{Description des threads du groupe {\tt th\_group\_gestion\_robot}}
  178. \begin{center}
  179. \begin{tabular}{|p{3cm}|p{8.5cm}|p{2cm}|}
  180. \hline
  181. \bf Nom du thread & \bf Rôle & \bf Priorité \\
  182. \hline
  183. \hline
  184. \color{blue}... & \color{blue}... & \color{blue}...\\
  185. \hline
  186. \end{tabular}
  187. \end{center}
  188. \label{tab:gt_moniteur}
  189. \end{table}%
  190. \FloatBarrier
  191. % DIAGRAMMES D'ACTIVITE GT ROBOT
  192. \subsubsection{Diagrammes d'activité du groupe robot}
  193. {\color{blue}Décrivez le comportement de chacun de vos threads avec des diagrammes d'activité. Apportez les explications qui vous semblent nécessaires pour comprendre votre conception.}
  194. %%%%%%%%%%%%%%%
  195. % ANALYSE ET VALIDATION
  196. \section{Analyse et validation de la conception}
  197. {\color{red}Pour chacune des fonctionnalités attendues, indiquez si elle a été réalisée. Ajoutez d'éventuelles remarques de conception si le fonctionnement n'est pas exactement celui attendu et justifiez le respect des propriétés temporelles. Vous n'êtes pas obligé de répondre à ces éléments pour les fonctionnalités réalisées dans la conception préliminaire (ces fonctionnalités sont indiquées dans la suite par un astérisque). Si vous ne souhaitez pas apporter de détails supplémentaires pour ces fonctionnalités, supprimez les de la liste ci-dessous.}
  198. {\color{gray}
  199. \stepcounter{cptreq}
  200. \subsection{Fonctionnalité \thecptreq *}
  201. \paragraph{Description :} Le lancement du serveur doit être réalisé au démarrage du superviseur. En cas d'échec du démarrage du serveur, un message textuel doit être affiché sur la console de lancement de l'application. Ce message doit signaler le problème et le superviseur doit s'arrêter.
  202. \paragraph{\color{black}Réalisation :} {\color{blue} Fait en partie. La fonctionnalité est impléméntée sauf pour l'arrêt suite à l'échec de démarrage du serveur. L'implémentation actuelle stoppe la tâche en charge du démarrage du serveur, mais pas l'ensemble de l'application. Après discussion avec le client, la version actuelle est suffisante.}
  203. }
  204. %%%
  205. {\color{gray}
  206. \stepcounter{cptreq}
  207. \subsection{Fonctionnalité \thecptreq *}
  208. \paragraph{Description :} La connexion entre le moniteur et le superviseur (via le socket) doit être établie suite à la demande de connexion de l'utilisateur.
  209. \paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
  210. }
  211. %%%
  212. {\color{gray}
  213. \stepcounter{cptreq}
  214. \subsection{Fonctionnalité \thecptreq *}
  215. \paragraph{Description :} Tous les messages envoyés depuis le moniteur doivent être réceptionnés par le superviseur.
  216. \paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
  217. %%%
  218. \stepcounter{cptreq}
  219. \subsection{Fonctionnalité \thecptreq *}
  220. \paragraph{Description :} L'application superviseur doit être capable d'envoyer les messages au moniteur (via le serveur) avec un délai d'au plus 10~ms.
  221. \paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
  222. }
  223. %%%
  224. \stepcounter{cptreq}
  225. \subsection{Fonctionnalité \thecptreq}
  226. \paragraph{Description :} Le superviseur doit détecter la perte de communication avec le moniteur. En cas de perte de la communication un message doit être affiché sur la console de lancement du superviseur.
  227. \paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
  228. %%%
  229. \stepcounter{cptreq}
  230. \subsection{Fonctionnalité \thecptreq}
  231. \paragraph{Description :} En cas de perte de communication entre le superviseur et moniteur, il faut stopper le robot, la communication avec le robot, fermer le serveur et déconnecter la caméra afin de revenir dans le même état qu'au démarrage du superviseur.
  232. \paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
  233. %%%
  234. {\color{gray}
  235. \stepcounter{cptreq}
  236. \subsection{Fonctionnalité \thecptreq *}
  237. \paragraph{Description :} Dès que la communication avec le moniteur est en place, la communication entre le superviseur et le robot doit être ouverte. Si la communication est active, il faut envoyer un message d'acquittement au moniteur. En cas d'échec, un message le signalant est renvoyé au moniteur.
  238. \paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
  239. }
  240. %%%
  241. \stepcounter{cptreq}
  242. \subsection{Fonctionnalité \thecptreq}
  243. \paragraph{Description :} La communication entre le robot et le superviseur doit être surveillée par un mécanisme de compteur afin de détecter une perte du médium de communication.
  244. \paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
  245. %%%
  246. \stepcounter{cptreq}
  247. \subsection{Fonctionnalité \thecptreq}
  248. \paragraph{Description :} Lorsque la communication entre le robot et le superviseur est perdue, un message spécifique doit être envoyé au moniteur. Le système doit fermer la communication entre le robot et le superviseur et se remettre dans un état initial permettant de relancer la communication.
  249. \paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
  250. %%%
  251. {\color{gray}
  252. \stepcounter{cptreq}
  253. \subsection{Fonctionnalité \thecptreq *}
  254. \paragraph{Description :} Lorsque l'utilisateur demande, via le moniteur, le démarrage sans watchdog, le robot doit démarrer dans ce mode. En cas de succès, un message d'acquittement est retourné au moniteur. En cas d'échec, un message indiquant l'échec est transmis au moniteur.
  255. \paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
  256. }
  257. %%%
  258. \stepcounter{cptreq}
  259. \subsection{Fonctionnalité \thecptreq}
  260. \paragraph{Description :} Lorsque l'utilisateur demande, via le moniteur, le démarrage avec watchdog, le robot doit démarrer dans ce mode. Un message d'acquittement est retourné au moniteur. En cas d'échec, un message indiquant l'échec est transmis au moniteur.
  261. Une fois le démarrage effectué, le robot doit rester vivant en envoyant régulièrement le message de rechargement du watchdog.
  262. \paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
  263. %%%
  264. {\color{gray}
  265. \stepcounter{cptreq}
  266. \subsection{Fonctionnalité \thecptreq *}
  267. \paragraph{Description :} Lorsque qu'un ordre de mouvement est reçu par le superviseur, le robot doit réaliser ce déplacement en moins de 100~ms.
  268. \paragraph{\color{black}Réalisation :} {\color{blue} Cette fonctionnalité a été implémentée à l'aide d'une tâche qui envoie toutes les 100~ms un ordre de mouvement au robot une fois que celui-ci est démarré (tâche th\_move). Cette implémentation ne garantit pas que le temps soit inférieur à 100~ms entre la réception du message et sa prise en compte par le robot. En effet, le temps de traitement de la réception par la tâche th\_receiveFromMon, le temps de traitement de la tâche th\_move et celui de l'envoi de l'ordre via le Xbee ne sont pas considérés. Afin de réduire ces délais, les priorités de th\_receiveFromMon et de th\_move sont élevés mais ne permettent pas de garantir l'exigence de temps. Augmenter la fréquence de la tâche th\_move permettrait de tenir cette contrainte, mais risque de surcharger la communication avec le robot (une version avec l'envoi de l'ordre que s'il a changé serait souhaitable). Finalement, une version asynchrone (attente d'un événement-donnée entre th\_receiveFromMon et de th\_move) aurait été préférable. Cependant, après discussion avec le client, la version périodique à 100~ms est cependant validée.}
  269. }
  270. %%%
  271. \stepcounter{cptreq}
  272. \subsection{Fonctionnalité \thecptreq}
  273. \paragraph{Description :} Le niveau de la batterie du robot doit être mis à jour toutes les 500~ms sur le moniteur.
  274. \paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
  275. %%%
  276. \stepcounter{cptreq}
  277. \subsection{Fonctionnalité \thecptreq}
  278. \paragraph{Description :} La caméra doit être démarrée suite à une demande provenant du moniteur. Si l'ouverture de la caméra a échoué, il faut envoyer un message au moniteur.
  279. \paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
  280. %%%
  281. \stepcounter{cptreq}
  282. \subsection{Fonctionnalité \thecptreq}
  283. \paragraph{Description :} Dès que la caméra est ouverte, une image doit être envoyée au moniteur toutes les 100 ms.
  284. \paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
  285. %%%
  286. \stepcounter{cptreq}
  287. \subsection{Fonctionnalité \thecptreq}
  288. \paragraph{Description :} La caméra doit être fermée suite à une demande provenant du moniteur. Un message doit être envoyé au moniteur pour signifier l'acquittement de la demande. L'envoi périodique des images doit alors être stoppé.
  289. \paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
  290. %%%
  291. \stepcounter{cptreq}
  292. \subsection{Fonctionnalité \thecptreq}
  293. \paragraph{Description :} Suite à une demande de recherche de l'arène, le superviseur doit stopper l'envoi périodique des images, faire la recherche de l'arène et renvoyer une image sur laquelle est dessinée cette arène. Si aucune arène n'est trouvée un message d'échec est envoyé.\\
  294. L'utilisateur doit ensuite valider visuellement via le moniteur si l'arène a bien été trouvée. L'utilisateur peut :
  295. \begin{itemize}
  296. \item valider l'arène : dans ce cas, le superviseur doit sauvegarder l'arène trouvée (pour l'utiliser ultérieurement) puis retourner dans son mode d'envoi périodique des images en ajoutant à l'image l'arène dessinée.
  297. \item annuler la recherche : dans ce cas, le superviseur doit simplement retourner dans son mode d'envoi périodique des images et invalider la recherche.
  298. \end{itemize}
  299. \paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
  300. %%%
  301. \stepcounter{cptreq}
  302. \subsection{Fonctionnalité \thecptreq}
  303. \paragraph{Description :} Suite à une demande de l'utilisateur de calculer la position du robot, le superviseur doit calculer cette position, dessiner sur l'image le résultat et envoyer un message au moniteur avec la position toutes les 100~ms. Si le robot n'a pas été trouvé, un message de position est envoyé avec une position (-1,-1).
  304. \paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
  305. \stepcounter{cptreq}
  306. \subsection{Fonctionnalité \thecptreq}
  307. \paragraph{Description :} Suite à une demande de l'utilisateur de stopper le calcul de la position du robot, le superviseur doit rebasculer dans un mode d'envoi de l'image sans le calcul de la position.
  308. \paragraph{\color{black}Réalisation :} {\color{red} indiquez si la fonctionnalité est traitée et s'il y a des remarques particulières.}
  309. %%%%%%%%%%%%%%%%%%%
  310. % TRANSFORMATION AADL2XENO
  311. \section{Transformation AADL vers Xenomai}
  312. {\color{red} Cette section est consacrée à la méthode pour passer d'un modèle AADL à un code sous Xenomai. Pour chacun des éléments AADL, vous expliquerez {\bf comment vous l'avez traduit en code} et quels {\bf services de Xenomai} vous avez utilisés {\bf en expliquant ce qu'ils font}. Chaque élément devra être illustré avec des {\bf extraits de code de votre projet}.}
  313. % THREAD
  314. \subsection{Thread}
  315. % INSTANCIATION THREAD
  316. \subsubsection{Instanciation et démarrage}
  317. {\color{blue} Expliquer comment vous implémentez sous Xenomai l'instanciation et le démarrage d'un thread AADL.}
  318. {\color{blue} {\bf Exemple de réponse} : Chaque thread a été implémenté par un {\tt RT\_TASK} déclarés dans le fichier {\tt tasks.h}. La création de la tâche se fait à l'aide du service {\tt rt\_task\_create} et son démarrage à l'aide de {\tt rt\_task\_start}. Toutes les tâches sont crées dans la méthode {\tt init} de {\tt tasks.cpp} et démarrées dans la méthode {\tt run}.
  319. Par exemple, pour la tâche {\tt th\_server}, sa déclaration est faite ligne 73 dans le fichier {\tt tasks.h}
  320. \begin{verbatim}
  321. RT_TASK th_server;
  322. \end{verbatim}
  323. sa création ligne 102 de {\tt tasks.cpp} lors de l'appel de
  324. \begin{verbatim}
  325. rt_task_create(&th_server, "th_server", 0, PRIORITY_TSERVER, 0)
  326. \end{verbatim}
  327. et son démarrage ligne 146 avec
  328. \begin{verbatim}
  329. rt_task_start(&th_server, (void(*)(void*)) & Tasks::ServerTask, this)
  330. \end{verbatim}
  331. }
  332. % CODE THREAD
  333. \subsubsection{Code à exécuter}
  334. {\color{blue} Comment se fait le lien sous Xenomai entre le thread et le traitement à exécuter.}
  335. % PRIORITE THREAD
  336. \subsubsection{Niveau de priorités}
  337. {\color{blue} Expliquer comment vous fixez sous Xenomai le niveau de priorité d'un thread AADL.}
  338. % PERIODICITE THREAD
  339. \subsubsection{Activation périodique}
  340. {\color{blue} Expliquer comment vous rendez périodique l'activation d'un thread AADL sous Xenomai.}
  341. % THREAD EVENEMENTIEL
  342. \subsubsection{Activation événementielle}
  343. {\color{blue} Expliquer les moyens mis en {\oe}uvre dans l'implémentation sous Xenomai pour gérer les activations événementielles d'un thread AADL.}
  344. % PORT D'EVENEMENT
  345. \subsection{Port d’événement}
  346. % INSTANCIATION PORT D'EVENEMENT
  347. \subsubsection{Instanciation}
  348. {\color{blue} Comment avez-vous instancié un port d'événement ?}\\
  349. % ENVOI PORT D'EVENEMENT
  350. \subsubsection{Envoi d’un événement}
  351. {\color{blue} Quels services ont été employés pour signaler un événement ?}
  352. % RECEPTION PORT D'EVENEMENT
  353. \subsubsection{Réception d’un événement}
  354. {\color{blue} Comment se fait l'attente d'un événement ?}
  355. % DONNEE PARTAGEE
  356. \subsection{Donnée partagée}
  357. % INSTANCIATION DONNEE PARTAGEE
  358. \subsubsection{Instanciation}
  359. {\color{blue} Quelle structure instancie une donnée partagée ?}
  360. % LECTURE/ECRITURE DONNEE PARTAGEE
  361. \subsubsection{Accès en lecture et écriture}
  362. {\color{blue} Comment garantissez-vous sous Xenomai l'accès à une donnée partagée ?}
  363. % PORT D'EVENEMENT-DONNEES
  364. \subsection{Ports d’événement-données}
  365. % INSTANCIATION PORT D'EVENEMENT-DONNEES
  366. \subsubsection{Instanciation}
  367. {\color{blue} Donnez la solution retenue pour implémenter un port d'événement-données avec Xenomai.}
  368. % ENVOI PORT D'EVENEMENT-DONNEES
  369. \subsubsection{Envoi d’une donnée}
  370. {\color{blue} Quels services avez-vous employés pour envoyer des données ?}
  371. % RECEPTION PORT D'EVENEMENT-DONNEES
  372. \subsubsection{Réception d’une donnée}
  373. {\color{blue} Quels services avez-vous employés pour recevoir des données ?}
  374. \end{document}