II.9. Les systèmes d'exploitation dans les
systèmes embarqués :
Dans la section précédente, nous avons
présenté les systèmes d'exploitation en
général, et notamment pour les ordinateurs. Dans le monde des
systèmes embarqués, le logiciel a une part de plus en plus
importante ; les systèmes d'exploitation deviennent donc essentiels dans
ce domaine.
Cette section présente les systèmes
d'exploitation dans le cas particulier des systèmes embarqués.
Dans une première sous-section nous présenterons les
fonctionnalités requises pour le logiciel dans les systèmes
embarqués, puis dans la deuxième sous-section les contraintes et
les degrés de libertés. Enfin, nous résumerons les
avantages et inconvénients de l'utilisation de systèmes
d'exploitation dans les systèmes embarqués et nous
présenterons quelques solutions alternatives.
II.9.1. Fonctionnalités requises pour le logiciel
dans les systèmes embarqués :
Dans ce paragraphe nous allons présenter les
fonctionnalités requises pour les systèmes embarqués. Nous
verrons d'abord les fonctionnalités communes avec les systèmes
d'exploitation généraux, puis nous verrons les
fonctionnalités spécifiques aux systèmes embarqués
: pour les communications, pour le temps, et pour les pilotes de
périphériques.
II.9.1.1. Fonctionnalités communes avec les
systèmes d'exploitation généraux :
Les systèmes d'exploitation embarqués
possèdent de nombreuses fonctionnalités communes avec les
systèmes d'exploitation généraux. Ils doivent par exemple
pouvoir gérer une ou plusieurs tâches et les ressources
matérielles.
Ces fonctionnalités sont cependant à moduler les
besoins spécifiques d'un système embarqué : par exemple
une gestion multitâche n'est pas nécessaire si une seule
tâche est exécutée par le processeur. De plus, elles
doivent respecter des contraintes particulières pour les systèmes
embarqués qui peuvent notablement changer leur implémentation
comme nous le verrons dans le paragraphe II.9.2.
II.9.1.2. Fonctionnalités de communication
spécifique :
Dans les systèmes embarqués spécifiques,
et notamment dans les systèmes monopuces, l'architecture est
dédiée à l'application pour optimiser les performances et
le coût. Cela implique que les architectures de tels systèmes sont
très variées. Cette variété se répercute
directement sur les communications : tout d'abord parce qu'elles aussi sont
optimisées pour l'application, mais aussi parce que les divers
composants n'utilisent que rarement les mêmes types de communications.
Ainsi les communications peuvent être point à
point ou multipoints comme le montre la figure II.17. Cette figure
présente les deux types de communications, le premier requiert plus de
connexions et donc plus de surface, tandis que le deuxième peut
être un goulet d'étranglement et donc un facteur ralentissant.
Elles peuvent être implémentées avec ou sans
mémorisation intermédiaire. La mémorisation
intermédiaire permet de désynchroniser deux blocs, sans pour
autant forcer les blocs à s'attendre mutuellement pour échanger
des données. Cette mémorisation intermédiaire peut
elle-même être gérer de plusieurs manières
différentes : par exemple cela peut être un système de
mémoire partagée ou un système FIFO, illustré
à la figure II.18, qui montre aussi les avantages de la
mémorisation intermédiaire pour désynchroniser deux
blocs.
Une caractéristique importante des communications est
la définition des protocoles : ils sont très nombreux suivant les
architectures, les données à transiter et les contraintes
associées (par exemple : CAN ou même TCP/IP). Ces communications
peuvent être réalisées en faisant plus ou moins intervenir
le logiciel ou le matériel, suivant les compromis choisis entre la
performance et la souplesse. De plus, au cours de la conception, ou même
après la réalisation, la frontière entre le logiciel et le
matériel n'est pas fixe.
Ces divers cas se retrouvent souvent combinés dans la
même architecture.
Chapitre II conception des logiciels embarqués
Communication point a point
Module 1 (processeur,
matériel...)
Module 3 (processeur,
matériel...)
Module 2 (processeur,
matériel...)
Module 4 (processeur,
matériel...)
Communication multipoint
Module 1 (processeur,
matériel...)
Module 3 (processeur,
matériel...)
Module 2 (processeur,
matériel...)
Module 4 (processeur,
matériel...)
Figure II.17 : Communication point à point et
communication multipoint
p p g q
Chapitre II conception des logiciels embarqués
Communication asynchrone (par poignée de
main)
Module 1 (processeur,
matériel...)
Module 2 (processeur, matériel...)
Module 1 écrit Module 2 lit
Module 1 : requête donnée
Module 2 :
acquittement
|
|
|
Module 1 doit attendre
|
Communication par FIFO (et poignée de
main)
Module 1 (processeur,
matériel...)
Module 2 (processeur,
matériel...)
Module 1 écrit Module 2 lit
Module 1 : peut effectuer une autre
tâche
Module 1 : requête donnée
FIFO
acquittement Module 2 : requête
acquittement
FIFO donnée
Figure II.18 : Files d'attentes FIFO pour
désynchroniser deux blocs sans les forcer à
s'attendre mutuellement
|