Analyseur de chronogramme

De Wiki de Projets IMA
Révision datée du 25 février 2013 à 17:03 par Dgasnier (discussion | contributions) (25/02/2013)

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.

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 les fonctions en dynamique, car on ne connaitra pas à l'avance les tâches déclarés par l'étudiant. Et là nous avons rencontré plus de problèmes que de solutions.