Académique Documents
Professionnel Documents
Culture Documents
3 A1 CorrPlus DepMA IITR Application1 MEC1 GMP1 SabeurJEMMALI
3 A1 CorrPlus DepMA IITR Application1 MEC1 GMP1 SabeurJEMMALI
Application 1
Soit une application temps réel qui consiste à envoyer un message et recevoir un accusé de
réception. Le démarrage de cette application est effectué par un bouton de ON/OFF (int
GetWait_Bouton(void)). Le bouton est lié à une tâche « Démarrage » qui lit son état. L’état OFF met
fin à la l’application par contre l’état ON va permettre, à travers une primitive du noyau, de
synchroniser avec une tâche « Envoie » qui va envoyer un message à la tâche « Réception ». Celui-ci
va afficher sur l’écran le message suivant :
/* Enveloppe d’envoie */
+5V typedef struct {
ON
/* En tête du message */
Bouton Header_type header; /* ne change pas*/
Démarrage /* Corps du message */
OFF
int num; /* définir les données à envoyer */
} Env_Mess_Type_Envoie;
RDV
BAL
Envoie Réception
BAL
RES RES
/* Enveloppe de la réception */
typedef struct {
/* En tête du message */
Header_type header; /* ne change pas*/
Ecran
/* Corps du message */
int num; /* définir les données à envoyer */
} Env_Mess_Type_Reception; Res_DOS
Get_Ressource(Res_DOS)
printf(”%s\n”, str);
Release_Ressource();
Mécanisme du RDV
+5V
ON
Bouton Call_Task(Idt_Envoie, &key, Entry_1, 0);
Démarrage
OFF
RDV
RDV
BAL
Envoie Réception
Env_Mess_Type_Envoie *MsgE; Env_Mess_Type_Envoie *MsgR;
/* Enveloppe d’envoie */
typedef struct {
/* En tête du message */
Header_type header; /* ne change pas*/
/* Corps du message */
int num; /* définir les données à envoyer */
} Env_Mess_Type_Envoie;
Envoie Réception
Env_Mess_Type_Reception *MsgR; Env_Mess_Type_Reception *MsgE;
BAL
/* Enveloppe de la réception */
typedef struct {
/* En tête du message */
Header_type header; /* ne change pas*/
/* Corps du message */
int num; /* définir les données à envoyer */
} Env_Mess_Type_Reception;
…
…
Get_Ressource(Res_DOS)
Get_Ressource(Res_DOS) Envoie Réception
printf(”%s\n”, str);
printf(”%s\n”, str);
Release_Ressource();
Release_Ressource();
…
…
RES RES
…
…
Get_Ressource(Res_DOS)
Get_Ressource(Res_DOS)
printf(“Fin de l’application\n”);
printf(“Fin de l’application\n”);
Ecran Release_Ressource();
Release_Ressource();
…
…