Le développement de systèmes embarqués dédiés au multimédia, au
"motion control", au biomédical, et à bien d'autres domaines
d'application est actuellement en plein essor. Ces systèmes reposent
sur des technologies très avancées dans le domaine es processeurs 32/64
bits (de plus en plus multi-coeurs) et permettent de bénéficier d'une
puissance de calcul très intéressante.
Or, le déployement d'application sur de tels systèmes n'est pas encore
chose aisée. Les aspects liés aux environnements logiciel dans lequel
ces applications fonctionnent déterminent le niveau de fiabilité, de
sécurité et de qualité de service. C'est pourquoi, il est important
d'avoir une connaissance approfondie de ces environnements et de leurs
interactions avec le matériel, notamment avec les périphériques. Les
aspects liés aux systèmes d'exploitation, aux pilotes de périphériques
et moniteurs de machine virtuelle (hyperviseur) jouent un rôle
prépondérant dans la maîtrise de l'environnement logiciel embarqué.
Le module SEEE permettra à l'étudiant d'acquérir les notions
fondamentales et avancées pour la programmation dans le noyau d'un
système d'exploitation, permettant ainsi de maîtriser les aspects liés
au développement de drivers dans des environnements critiques et
limités. Le thème de la virtualisation sera central à ce module et
apparaîtra comme un fil conducteur. A la fin du module, l'étudiant sera
en mesure d'effectuer des portages d'OS sur différentes architectures
embarqués, ainsi que de développer des pilotes de périphériques
spécifiques. La notion d'émulation et de virtualisation lui permettront
de déployer des applications embarquées dans des environnements
d'exécution fiables et sécurisés.
En résumé, l'étudiant sera capable de:
-
Décrire l'architecture détaillée d'un système d'exploitation et ses sous-systèmes, en relation avec les différents types d'OS
-
Porter un système d'exploitation - ainsi que le BSP - sur différents
types de processeurs et microcontrôleurs, en particulier adapter le
code de bootstrap (initialisation du (ou des) processeur(s), de la
mémoire, du timer et des IRQs
-
Développer des pilotes de périphériques dans des OS de types
différents et dans des environnements sécurisés. Les différents objets
et services d'un OS seront détaillés
-
Configurer, tester et profiler un système d'exploitation afin d'obtenir une sécurité et des performances optimales.
-
Développer des environnements d'exécution basés sur des moniteurs de
machine virtuelles, en comprenant bien les avantages et limitations de
ces approches.