• Aucun résultat trouvé

Les caract´eristiques pertinentes de l’architecture mat´erielle pour les lo-giciels embarqu´es doivent ˆetre extraites ind´ependamment pour chaque pro-cesseur, ainsi que pour chaque composant qui peut ´ecrire sur un bus, appel´e composant maˆıtre. Elles contiennent des donn´ees sur ce composant maˆıtre puis sur tous les composants adressables, dit composants esclaves. Si des caract´eristiques ne sont pas applicables `a un composant elles sont laiss´ees vides. Enfin elles contiennent aussi l’ensemble des connexions sans adresse (”par fils”) avec les caract´eristiques de la connexion.

Ce mod`ele contient d’abord les caract´eristiques du processeur ou du com-posant qui peut ´ecrire sur un bus associ´e. Ensuite vient l’ensemble des carac-t´eristiques des composants dans les registres desquels le composant associ´e peu ´ecrire. Enfin vient la liste des composants connect´es sur des ports sans adresse comme des fils d’interruptions.

Pour chaque composant maˆıtre instanci´e dans la plateforme mat´erielle, un fichier de description de l’architecture mat´erielle pour les logiciels embarqu´es est pr´esent. Un exemple est visible figure 2.2.2. Un sch´ema de description du langage utilis´e est en annexe B. Il commence par le nom du sous-syst`eme qui contient le composant, avec le num´ero d’identification unique de ce sous-syst`eme et le nombre de sous-sous-syst`emes dans le plateforme mat´erielle. Puis il

contient, 1 structure de caract´eristiques pour le processeur ou pour le

com-posant qui peut ´ecrire sur un bus associ´e, lesN structures de caract´eristiques

pour chaque composant esclave adressable et lesM structures de

caract´eris-tiques pour chaque connexion sans adresse. N et M repr´esente

respective-ment, le nombre de composants adressables et le nombre de connexions sans adresse du composant maˆıtre associ´e.

Extraction des caract´eristiques de l’architecture pour le logiciel

<HARDWARE node=”ARM NODE”number=”9”all=”11”> <!– PROCESSOR DESCRIPTION> <PROCESSOR

name=”ARM” type=”ARM926EJS rev0”

endianess=”LITTLE”> <LEVEL>ISS</LEVEL>

</PROCESSOR> <!– SLAVES DESCRIPTION> <SLAVE name=”DATA MEMORY” type=”RAM type”

address base=”0x00300000”

address size=”0x00500000”></SLAVE> <SLAVE name=”CODE MEMORY” type=”ROM type”

address base=”0x00000000”

address size=”0x00100000”></SLAVE> <SLAVE

name=”TIMER” type=”APBtimer” address base=”0x00200000”

address size=”0x00001000”

register map=”timer easy/include/timer easy registermap.h”> </SLAVE> ...<SLAVE name=”ARM NODE 0 DMA”

type=”DMAeasy”address base=”0x08220000”

address size=”0x00001000”

register map=”dma easy/include/dma easy registermap.h”> </SLAVE> <SLAVE name=”ARM NODE 0 ITC”

type=”APBitc”address base=”0x08100000”

address size=”0x00001000”

register map=”itc easy/include/itc easy registermap.h”> </SLAVE> </HARDWARE>

Fig. 2.2.2 – Extrait d’un fichier de description d’architecture pour un

pro-cesseur

Les caract´eristiques pour le processeur ou le composant qui peut ´ecrire sur un bus sont:

– le nom du composant dans la plateforme, choisit par le concepteur de l’architecture;

– le num´ero de version du composant, 1.0, 20060731a;

– le type, soit le nom usuel du composant, ARM7TDMI, DMA PL080;

– la pr´esence, le nombre, les types et param`etres de co-composant (ou coprocesseur);

– les param`etres ´eventuels sp´ecifiques avec leur nom et valeur, boutisme,

taille du bus (d´efini par l’utilisateur);

– L’adresse du binaire et des sources.

Les caract´eristiques pour chaque composants esclaves:

– le nom du composant dans la plateforme, choisit par le concepteur de l’architecture;

– le type, soit le nom usuel du composant, uart 16550;

– les param`etres sp´ecifiques ´eventuels avec leur nom et valeur, taille de FIFO, version de firmware;

– l’adresse, le nom et le type de chaque registre ou banc de registres;

– des codes sources de drivers (Code C/C++ param´etr´e);

– le r´eseau `a utiliser si la communication n’est pas bas´ee que sur les adresses.

Les caract´eristiques pour chaque connexion sans adresse: – le nom du port sur le processeur;

– le nom dans la plateforme et le type de chaque composant connect´e ainsi que son type, et le nom du port sur ce composant.

2.2.3 L’extraction des caract´eristique :un m´

e-canisme d’auto description

Les donn´ees disponibles de l’architecture sont les codes sources en langage C++ des sous-syst`emes de traitement param´etrables, des interfaces TLM et les fichiers contenant les interconnexions entre syst`emes et les param`etres de chaque syst`eme.

Les fonctions d’extraction des caract´eristiques sont incluses dans la plate-forme et les composants. Apr`es une ´etape d’´elaboration, la plateplate-forme lance le m´ecanisme d’extraction.

Cette proc´edure est donc similaire aux techniques logicielles d’auto des-cription, h´eritage, param`etres et agr´egation. Mais la description est du type composants et adresses.

L’autre solution qui consisterait `a analyser et interpr´eter le code source a ´et´e rapidement ´ecart´ee pour cause de trop grande complexit´e sans apporter d’avantages suppl´ementaires.

2.2.4 L’impl´ementation du m´ecanisme

d’ex-traction des caract´eristiques de

l’archi-tecture mat´erielle

Le m´ecanisme d’extraction est effectu´e lors d’une ex´ecution du mod`ele de la plateforme TLM avec un param`etre particulier. L’ensemble de la plate-forme et des composants sont instanci´es (´etape d’´elaboration) mais la simula-tion n’est pas lanc´ee. A la place, le programme appelle la foncsimula-tion d’extracsimula-tion

Extraction des caract´eristiques de l’architecture pour le logiciel

de chaque sous-syst`eme de traitement inclut dans le mod`ele. Cette fonction va calculer les composants et ports externes joignables pour chaque compo-sant maˆıtre. Les param`etres des compocompo-sants esclaves locaux sont enregistr´es dans le fichier de configuration. Pour les ports externes il est fait appel aux autres sous-syst`emes.

Fig. 2.2.3 – Le m´ecanisme d’extraction des caract´eristiques de l’architecture

`a travers les sous-syst`emes

Dans le sch´ema 2.2.3, le m´ecanisme d’extraction est appel´e pour le sous-syst`eme de gauche. Le sous-sous-syst`eme de gauche appelle la primitive d’ex-traction du sous-syst`eme de droite. Celui-ci retourne les caract´eristiques de

l’architecture associ´e au bus N2. Le sous-syst`eme de gauche effectue un tri

sur les composants visibles. Enfin le sous-syst`eme de gauche ´ecrit dans un fichier, car il contient un unique composant maˆıtre, les informations re¸cues et celles le concernant.

Pour chaquecomposant adressable

Si le composant est un port ext´erieur

Ajouter `a Liste de caract´eristiques Appliquer TableDeRoutage (

sous-syst`eme connect´e Extraction(Intervalle du port ))

Sinon si le composant est un IP

Ajouter `a Liste de caract´eristiques, Appliquer TableDeRoutage(

Caract´eristiques du composant)

Retourner Liste de caract´eristiques;

Fig. 2.2.4 – Algorithme du cas g´en´eral de l’extraction des caract´eristiques

d’architecture

L’algorithme de cette extraction des caract´eristiques de l’architecture, figure 2.2.4, est appel´e pour chaque composant ayant un port maˆıtre. Le pa-ram`etre de l’algorithme est l’intervalle sur lequel le composant peut adresser le bus (addresse de base et taille fix´ees par le composant maitre au pre-mier appel puis par les diff´erents routeurs suivant les tables de routage). Par exemple, pour un processeur 16bits sur bus d’adressage 32bits, l’intervalle

est limit´e de 0 `a 216

. Si le composant connect´e est un bus il appelle la mˆeme sur chaque composant adressable sur cet intervalle. Il modifie les valeurs re-tourn´ees selon ses caract´eristiques, d´ecalages ou masques et les concat`ene. Sinon si le composant connect´e est une terminaison du r´eseau, il renvoie ses caract´eristiques.

2.3