Analyseur de chronogramme

De Wiki de Projets IMA

Présentation du projet :

Etudiants :

Bonvalet Quentin et Gasnier Damien

Encadrant :

Blaise Conrard

Objectif :

Réaliser un programme d'aide à la mise au point de modules temps-réel par la simulation de leur exécution et la génération d'un chronogramme de la séquence d’ordonnancement de ses tâches.

Description :

Lors des TP temps-réel, un outil d'aide au développement des modules réalisés pourrait faciliter la mise au point de ces modules. Son principe serait le suivant : il simulerait l'exécution d'un module ; il mémoriserait les instants d'exécution de chacune des tâches et les différents accès aux entrées/sorties réalisés ; puis en final, il retournerait un chronogramme de l'exécution des tâches et de l'évolution des signaux de signaux. Un tel outil serait d'une grande d'aide pour la compréhension et la réalisation des TP temps-réel.

Video :

lien youtube de la video

Rapport du projet :

Fichier:Rapport projet P28.pdf

Avancement du projet

04/02/2013

L'encadrant étant malade, nous avons interprété des objectifs et commencé à définir les tâches de notre projet:

Programme ( C ), pour les TP temps-réel :
1. Analyse (Recherche, Mémorisation et Vérification) :
Avec notre exécutable on :

  • Prend un ficher C à tester.
  • Recherche et mémorise la définition des ports.
  • Recherche et mémorise la « nano_period ».
  • Recherche les fonctions (tâches séquentielles et par interruption) et mémorise leur noms.
  • Mémorise l'exécution de ces fonctions ?
  • Recherche les fonctions d'initialisation des tâches et vérifie la présence leur l'identifiant et leur nom dans fonction principale.
  • Recherche les fonctions « make_periodic » et vérifie l'identifiant de la tache, mémorise pour chaque fonction le « now » et la période d'exécution.
  • Recherche et vérifie la présence du « rt_task_wait_period(); » dans chaque boucle de tâche séquentielle, et sa non-présence pour une tâche IRQ.
  • Recherche et vérifie qu'il y a un seul « stop_rt_timer (); »
  • Recherche et vérifier les fonctions de suppression des tâches.
  • Recherche-t-on et vérifie-t-on le bon ordre d'appel des tâches dans le « démarrer/arrêter » ?

2. Simulation :
Grâce à l'analyse, on sait que le programme a bien défini les aspects temps-réel qu'un programme est sensé définir. On en a dégagé les tâches avec leur départ d'exécution, leur période et leur contenu. Il faut maintenant qu'on :

  • Retourne un chronogramme de l'exécution des tâches.
  • Simule l'état des signaux du boîtier d'E/S et les mémorise dans le temps.
  • Affiche la simulation des afficheurs 7 segments.
  • Simule l'état des signaux de la carte d'acquisition et les mémorise dans le temps.
  • Affiche la simulation de ces signaux dans le temps comme sur un oscilloscope.

07/02/2013

comité pilotage avec M. Conrard pour clarifier noter vision du projet et s'assurer d'être en accord. Il s'avère que nous n'avions pas vu le projet de la même manière.
Nous devons en fait reprendre le programme C créer par l'étudiant, puis l'inclure dans notre programme. Nous ne reprendrons cependant pas les bibliothèques, ce qui permet de ne pas faire une exécution temps-réel, afin justement de pouvoir repérer les éventuelles erreurs pour qu'ensuite l'étudiant puisse lancer sont programme en temps-réel sans faire planter sa machine.
Nous devons alors créer les fonctions (normalement temps-réelles) que le programme de l'étudiant appel, non pas pour les exécuter en temps-réel mais pour les simuler et générer un chronogramme.
Nous avons alors créer un fichier étudiant test, et commencé à repérer les fonctions que nous allons devoir créer.

11/02/2013

Nous avons commencé à développer le programme C qui inclura celui de l'étudiant. Nous y avons déclaré toute les fonctions nécessaires.
Nous avons fait un Makefile permettant d'inclure le programme étudiant, sans ses bibliothèques. La compilation fonctionne et à l'exécution nous arrivons à appeler les fonctions tâches de l'étudiant en dure dans notre main.

14/02/2013

Nous avons fait des recherches sur l'ordonnancement des tâches.
Nous avons aussi essayé d'écrire les fonctions d'impressions (affichage) temps-réels et la production d'un fichier texte pour dans un premier temps visualiser une ébauche chronogramme.

25/02/2013

Nous avons créer la page wiki.
Nous avons essayer d'appeler une fonction en dynamique, car on ne connaîtra pas à l'avance les tâches déclarés par l'étudiant. Et là nous avons rencontré plus de problèmes que de solutions.

27/02/2013

résolution (partielle) du problème de l'appelle d'une fonction inconnue, avec un callback.
création des structures pour stocker les informations relatives aux taches.
recherche pour la production d'une image pour le chronogramme.
recherche pour l'ordonnacement.

28/02/2013

appropriation de la bibliothèque SDL pour creer une image.

04/03/2013

réalisation des fonctions pour afficher le squelette des chronogrammes et le boitier 7 segments.
recherches pour sauvegarder une image PNG.
création d'un tableau récapitulatif de problèmes sur le projet et des solutions possibles.
tests et débuggage du code. Écriture du code pour l'ordonnanceur.

06/03/2013

recherche sur le chargement d'image avec sdl
tests de .c
comité pilotage avec M. Conrar : compte-rendu sur l'avancement du projet, réponse aux indéfinies, autre solution graphique
recherche sur l'ordonnancement
gestion de projet
essais d'utilisation de RTAI
recherche sur le language python

11/03/2013

utilisation fonctionelle des callbacks dans les structures et appel ultérieur dans les fonctions, plus test.
Recherches sur le language python.

18/03/2013

Recherches sur le language python.

20/03/2013

Comité pilotage.
travail sur les sémaphore et mutex à plusieurs tâches, ainsi que les thread.
Modification du code pour production texte des informations relatives à chaque tâche.

21/03/2013

Expériences test pour comprendre tous les fonctionnements temps-réels de TP.
Modification de l'algoritme d'ordonnacement avec sémaphore et mutex.

25/03/2013

modification du wiki.
Etudes des codes fournis par M. Conrar sur mutex.