II.7.4.1.2. La diversité des connaissances
liées au ciblage logiciel :
Le ciblage requiert des domaines de compétence très
divers ; nous allons ici en donner une liste des principaux et explique en quoi
ils sont nécessaires.
Connaissances sur les processeurs
Il est important de bien connaître le processeur cible
lorsque l'on veut adapter le logiciel qui doit être exécuté
dessus. Il faut notamment connaître :
- les « dimensions » du processeur : la taille de ses
registres, la taille de ses bus adresse et donnée, pour savoir quels
types de données utiliser ;
- les modes de communication du processeur : utilise-t-il une
mémoire commune données/programme (von Neumann) ou distincte
(Harvard), quels protocoles utilise-t-il pour lire/écrire les
données (exemple : programmation particulière de certains
protocoles du 8051 [HOA]), quel est son système d'interruption ? Chaque
système se programme de manière différente et la plupart
du temps en langage d'assemblage uniquement ;
- le langage d'assemblage du processeur : pour pouvoir
écrire toutes les parties du code spécifiques au processeur,
comme la gestion des interruptions ou le changement de contexte ;
- les performances du processeur suivant les cas (vitesse
d'exécution, temps de réaction aux interruptions, etc.) pour
choisir les meilleurs algorithmes et réalisations ;
- l'architecture du processeur (pipeline, RISC ou CISC, etc.)
cela aidera aussi au choix des algorithmes et des réalisations.
Connaissances sur les communications
Une partie du ciblage consiste en la réalisation des
communications entre le logiciel à cibler et le reste. Pour ce travail,
il est nécessaire d'avoir des connaissances en communication, et plus
précisément :
- protocole : il faut connaître leurs
caractéristiques ;
- langage de description de communication : très souvent
les communications sont décrites dans un langage qui leur est propre
(par exemple SDL), qu'il faut donc savoir interpréter ;
- méthode de réalisation des communications : il
existe un certain nombre de méthodes pour réaliser des
communications, certaines complètement logicielles, certaines faisant
appel à du matériel (par exemple un DMA).
Connaissances en description d'application
Connaître l'application permet de faire de meilleurs choix
lors du ciblage. Cela implique de connaître également :
- le langage dans lequel l'application est décrite :
très souvent c'est du C ou du C++, cependant d'autres langages peuvent
être utilisés comme Ada, SDL, etc. ;
- les algorithmes habituellement utilisés dans une
application donnée, pour savoir quelles sont les implémentations
optimales ;
- les paramètres de ces applications : nombre de
données à traiter, nombre de tâche possibles,
etc.
Connaissances en architecture
Le ciblage sur une architecture implique la compréhension
de cette dernière, il est donc nécessaire de connaître ;
- les langages de description d'architectures (VHDL, System C,
etc.) ;
- les principes utilisés dans les architectures comme la
modularité, l'instanciation, etc. ; - les différents types
d'architectures et les conséquences sur l'implémentation
[ARM].
Connaissances en électronique
Bien qu'il s'agisse de ciblage logiciel, la cible est une
architecture matérielle comprenant des éléments
électroniques. Si de vastes connaissances en électronique ne sont
pas nécessaires, il est important d'avoir des notions sur :
- les bases de l'électronique numérique (portes),
sachant que le processeur cible peut être
connecté à un peu de logique ;
- quelques circuits électroniques comme les DMA, les
arbitres de bus, et autres contrôleurs ;
- les bases de l'électronique analogique pour être
capable de prendre en compte les problèmes liés à la
consommation.
Connaissances sur les systèmes
d'exploitation
Une bonne part du ciblage consiste dans le choix et
l'adaptation du ou des systèmes d'exploitation qui seront
utilisés. Il est donc important de bien connaître les principes
liés aux systèmes d'exploitation.
|