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 ...
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