Version 15 (modified by 17 years ago) (diff) | ,
---|
Création de l'exemple SplitMsg
Allez dans un nouveau répertoire pour y créer des fichiers.
Description des deux tâches
Dans le nouveau répertoire, créez un répertoire 'src'
et allez dedans.
Créez un fichier producer.task
contenant:
TaskModel( 'producer', ports = { 'output' : MwmrOutput(32) }, impl = [ SwTask('prod_func', stack_size = 2048, sources = ['producer.c']) ] )
Créez un fichier consumer.task
contenant:
TaskModel( 'consumer', ports = { 'input' : MwmrInput(32) }, impl = [ SwTask('cons_func', stack_size = 2048, sources = ['consumer.c']) ] )
Implémentation des deux tâches
Toujours dans 'src'
,
dans producer.c
, mettez:
#include <srl.h> #include "producer_proto.h" FUNC(prod_func) { srl_mwmr_t output = GET_ARG(output); char buf[32] = "...World"; srl_log_printf(NONE, "Producer : Hello...\n"); srl_mwmr_write(output, buf, 32); }
dans consumer.c
, mettez:
#include <srl.h> #include "consumer_proto.h" FUNC(cons_func) { srl_mwmr_t input = GET_ARG(input); char buf[32]; srl_mwmr_read(input, buf, 32); srl_log_printf(NONE, "Consumer : %s\n\n", buf); }
On vient de créer deux modèles de tâches (décris dans les fichiers .task
, et leurs implémentations.
Fichier de description DSX/L
Revenez dans le répertoire le l'application (donc le répertoire parent de src
).
Créez un fichier de description pour DSX, pour celui-ci, choisissez vous-même un nom explicite.
Ce fichier est le fichier de description DSX et sera nommé comme tel par la suite.
Collez dedans le texte suivant:
#!/usr/bin/env python from dsx import * # Partie 1 : définition du TCG (Graphe des Tâches et des Communications) fifo0 = Mwmr('fifo0', 32, 4) tcg = Tcg( Task('prod0', 'producer', {'output':fifo0} ), Task('cons0', 'consumer', {'input':fifo0} ), ) # Partie 2 : génération du code exécutable sur station de travail POSIX posix = Posix() tcg.generate(posix)
Important: La ligne #!/usr/bin/env python
doit être la première ligne du fichier.
Rendez ce fichier exécutable
$ chmod +x le_nom_de_fichier