04.07.2013 Views

Modélisation des systèmes temps-réel répartis embarqués pour la ...

Modélisation des systèmes temps-réel répartis embarqués pour la ...

Modélisation des systèmes temps-réel répartis embarqués pour la ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Chapitre V – Génération du code <strong>pour</strong> l’enveloppe applicative<br />

V-3.1 Traduction <strong>des</strong> espaces de nom<br />

Ada possède <strong>la</strong> notion de paquetage, bien qu’elle ne corresponde pas exactement à celle<br />

d’AADL. En effet, contrairement à Ada, il n’y a aucune re<strong>la</strong>tion particulière en AADL entre<br />

un paquetage et ses sous-paquetages. Nous pouvons donc appliquer directement le mécanisme de<br />

traduction que nous avons expliqué en section V-2.5.<br />

Règle V.10 (Traduction <strong>des</strong> paquetages AADL en Ada)<br />

L’espace de nom anonyme est transformé en un paquetage Ada appelé Partition. Les<br />

différents espaces de nom (qui sont <strong>des</strong> fils de l’espace anonyme) sont transformés en<br />

sous-paquetages de Partition. Une hiérarchie de paquetages est générée <strong>pour</strong> chaque<br />

nœud de l’application. Elle contient les déc<strong>la</strong>rations de tous les types de données et<br />

sous-programmes utilisés dans le nœud.<br />

V-3.2 Traduction <strong>des</strong> composants de donnée<br />

En l’absence d’informations sémantiques associées à <strong>la</strong> déc<strong>la</strong>ration d’un composant de donnée,<br />

nous générons un type Ada vide. Ainsi, le type une_donnee décrit au listing V.1 donne lieu à<br />

<strong>la</strong> génération d’un type vide, comme illustrée au listing V.13.<br />

3 type une_donnee is new null record;<br />

Listing V.13 – Type Ada correspondant à une donnée AADL sans sémantique<br />

Les autres types de donnée se traduisent re<strong>la</strong>tivement simplement, comme illustré sur le listing<br />

V.14. Les propriétés AADL ne permettent pas d’indiquer les indices de début et de fin <strong>pour</strong> les<br />

tableaux ; nous choisissons de fixer le premier indice à 0 afin de faciliter les échanges de données<br />

avec <strong>des</strong> <strong>la</strong>ngages comme le C. La syntaxe AADL utilise le point (« . ») <strong>pour</strong> marquer le nom<br />

d’une imp<strong>la</strong>ntation de composant. Comme <strong>la</strong> syntaxe d’Ada n’autorise pas ce caractère dans les<br />

identificateurs, nous le remp<strong>la</strong>çons par <strong>la</strong> chaîne « _i_ ».<br />

5 type une_donnee_i_entier is new Integer;<br />

6 type une_donnee_i_enumeration is ("bleu", "jaune");<br />

7 type une_donnee_i_tableau_entier is array (0 .. 5) of Integer;<br />

8 type une_donnee_i_tableau_entier2 is array (0 .. 5) of<br />

une_donnee_i_entier;<br />

9 type une_donnee_i_chaine is String (0 .. 6);<br />

10<br />

11 type une_donnee_i_structure is record<br />

12 i : une_donnee_i_entier;<br />

13 c : une_donnee_i_chaine;<br />

14 end record;<br />

Listing V.14 – Types Ada issus <strong>des</strong> déc<strong>la</strong>rations AADL<br />

La traduction d’une structure de liste est plus complexe car il ne s’agit pas d’une construction<br />

prise en charge directement par le <strong>la</strong>ngage Ada. Nous recourrons donc à un type paramétré,<br />

matérialisé par l’instanciation d’un paquetage générique (listing V.15).<br />

16 package une_donnee_i_liste is new<br />

17 Arao.Data_Structure (une_donnee_i_entier);<br />

Listing V.15 – Type Ada correspondant à un composant de liste en AADL<br />

La définition de ce paquetage générique doit faire partie de <strong>la</strong> bibliothèque d’exécution associée<br />

au générateur de code.<br />

c○ 2007 Thomas Vergnaud 87

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!