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.