II.7.3.1.1. La représentation d'entrée :
La représentation d'entrée est une
spécification du système. Cette spécification peut
contenir des informations structurelles, des informations comportementales,
mais aussi des paramètres qui précisent les détails des
éléments à générer. Ces paramètres
peuvent être présents sous la forme d'annotations associées
aux éléments de la spécification.
La représentation d'entrée n'a pas besoin
d'être exécutable. Au contraire, les informations
nécessaires pour l'exécution ou la simulation peuvent
interférer avec le ciblage. Il peut être par
Chapitre II conception des logiciels embarqués
exemple suffisant pour la description comportementale de
donner des listes de fonctionnalités requises, sans donner leurs
réalisations.
Cette représentation est souvent une forme
intermédiaire, produite par une étape de synthèse. Elle
n'a donc pas forcément de format humainement accessible : elle peut par
exemple être limitée à une structure de données
interne à un outil de ciblage.
II.7.3.1.2. La représentation de sortie :
Le résultat de la génération est
donné dans la représentation de sortie. Etant la cible de la
génération, il n'y a pas de contrainte particulière sur
cette représentation.
Elle décrit le système donné en
entrée, mais avec tous les détails d'implémentation
obtenus par le générateur de code.
II.7.3.1.3. Représentation supplémentaire,
nécessaire pour le fonctionnement du ciblage :
Le ciblage consiste souvent à produire et assembler des
parties de code élémentaires (décrites dans la
représentation de sortie) correspondant à certains
éléments donnés dans la spécification
d'entrée. L'ordre dans lequel les parties de code
élémentaires doivent être assemblées est
déduit de l'ordre dans lequel sont présentés les
éléments du système, c'est-à-dire les informations
structurelles de la spécification (voir le paragraphe II.7.3.1.1). La
production des parties de code élémentaires est dirigée
par les paramètres associés aux éléments de la
spécification.
Le cibleur de code doit donc être capable de produire
les parties élémentaires de code pour chaque type
d'élément de la représentation d'entrée. La
méthode couramment employée est de ranger toutes les parties de
code élémentaire possibles dans une bibliothèque. Le
problème se réduit alors à la recherche dans la
bibliothèque des portions de code correspondant aux
éléments de la spécification. Pour le résoudre il
convient d'avoir une représentation pour décrire le contenue de
cette bibliothèque. Cette représentation doit être
relationnelle pour donner les correspondances entre les éléments
de spécification et les portions de code finales. Elle doit être
aussi comportementale pour la description des portions de code.
Si la représentation de sortie est suffisamment souple
pour pouvoir décrire les parties élémentaires de code,
leur paramétrage et leur assemblage, elle peut être
utilisée également pour la description de la partie
comportementale de la bibliothèque. Si ce n'est pas le cas, il convient
alors d'encapsuler les parties de code final dans une autre
représentation plus flexible.
II.7.3.2. Les étapes du ciblage logiciel :
Nous allons présenter dans cette section les
étapes à suivre lors du ciblage logiciel. Nous procéderons
par ordre chronologique, en partant des descriptions de l'application et de
l'architecture matérielle cible, jusqu'à la production des
exécutables finaux.
Le but de cette section n'est pas de présenter une
méthodologie de ciblage, mais plutôt de montrer le type
d'opérations et la chronologie qu'il sera généralement
nécessaire de suivre. Nous nous contenterons donc ici de
présentations sommaires des étapes du ciblage, sachant que les
détails les concernant varient suivant la méthodologie
employée.
La figure II.14 présente les diverses étapes d'un
flot de ciblage. Ces étapes sont présentées dans les
paragraphes suivants.
II.7.3.2.1. Analyse des entrées :
application et architecture matérielle :
Cette étape consiste en l'acquisition des informations
nécessaire au ciblage. Nous allons voir les types d'information requis
pour effectuer un ciblage et comment nous pouvons y accéder.
Les informations nécessaires pour le ciblage sont tout
d'abord les services requis : dans cette catégorie se trouvent toutes
les informations concernant les fonctionnalités logicielles à
ajouter. Parmi celles-ci trouvent les fonctionnalités de communication,
les fonctionnalités du système d'exploitation et les
gestionnaires de périphérique
Application Architecture
logicielle Choix des
éléments logiciels
Analyse des entrées
Requis
Code de
l'application logicielle
Paramètre
Eléments
logiciels supplémentaires
Mise en place des paramètres
Génération du code ciblé
Code ciblé de l'application logicielle
Compilation
Edition de liens
Code exécutable de l'application Figure II.14
: Les étapes du ciblage logiciel
D'autres informations requises prennent la forme de
paramètres : dans cette catégorie, se trouvent toutes les valeurs
qui permettront de configurer les éléments logiciels. Ces
paramètres peuvent avoir les origines suivantes :
- les informations sur le matériel : quel type de
processeur, quel type de périphériques, etc. ;
- les allocations, c'est-à-dire les adresses
mémoire des divers éléments (logiciels ou
matériels) ;
- les contraintes imposées par l'environnement. Il peut
s'agir de contraintes temporelles (délais à respecter,
débit, etc.), de contraintes de surface (quantité de
mémoire limitée), de contraintes de consommation ou d'autres
contraintes plus spécifiques (liées par exemple à du
matériel particulier). Ces contraintes peuvent elles aussi avoir une
influence sur le chois des services.
Accès aux informations
Ces informations sont en règle générale
dispersées dans plusieurs endroits, et sous plusieurs formes :
- directement dans la spécification, sous la forme
d'annotations,
Chapitre II conception des logiciels embarqués
- déductibles à partir de la structure de la
spécification,
- déductibles à partir d'autres informations de la
spécification, - données en langage naturel.
Il est préférable de rassembler ces informations
avant de commencer toute opération de ciblage.
|