====== Systemes et Applications Embarques (SAE) ====== Semestre: 9 Ce cours a lieu le: mercredi matin en période: 1 et 2 Section CNU: 27 Url: http://stephane.lavirotte.com/teach/sae.html ECTS: 4.00 Responsable: Lavirotte Stéphane Email: stephane@lavirotte.com Horaires: Cours - 24h TD - 32h Travail Personnel - 30h Résumé: Le but de ce cours est de présenter le fonctionnement interne de systèmes d'exploitation en vue de les déployer et de les optimiser pour des cibles particulières (téléphones portables, kit de développement, etc.). Pour rendre les choses plus concrètes et afin de faire la part belle à l'expérimentation pratique, nous utiliserons principalement le système GNU/Linux. Après une présentation rapide de l'architecture d'un système d'exploitation, nous étudierons et mettrons en pratique la virtualisation de systèmes, le développement de modules et de pilotes, les systèmes de fichiers classiques, journalisés et embarqués, l'adaptation d'un système à une cible contrainte et spécifique. Une expérimentation réelle sur cible embarquée viendra compléter l'apprentissage. Ces éléments fondamentaux d'un système d'exploitation seront complétés par une introduction aux systèmes sans OS et avec OS temps réel et au développement sur une cible .NET Micro Framework. Prerequis: Programmation C Programmation Système Unix (Posix) Pas d'assembleur Objectifs Le but de ce cours est de présenter le fonctionnement interne des systèmes d'exploitation en vue de les déployer et de les optimiser pour des cibles particulières (téléphones portables, kit de développement, etc...) Pour rendre les choses plus concrètes et afin de faire la part belle à l'expérimentation pratique, nous utiliserons principalement le système GNU/Linux. Contenu Introduction et architecture Prise en main du noyau Linux Ajout de fonctionnalités au noyau: les modules Ordonnancement et Processus Pilote de périphériques Développement de pilotes de périphériques logiciels Mémoires et Systèmes de fichiers Développement de pilotes de périphériques matériels Noyau Linux sur système embarqué Applications libres pour systèmes embarqués Construire son propre système embarqué Optimiser un système Microcontrôleurs sans OS Microcontrôleurs avec OS: RTOS Système embarqué .NET Micro Framework Synthèse References A. Silberschatz et P. B. Galvin, Principes des systèmes d'exploitation (4ème édition), Addison-Wesley 1994. C. Blaess, Développement système sous Linux: Ordonnancement multitâche, gestion mémoire, communications, programmation réseau, Eyrolles, 2011. D. Bovet et M. Cesati, Understanding the Linux Kernel (2ème édition), O'Reilly 2002. J Corbet, A Rubini, G Kroah-Hartman, Linux Device Drivers (3rd Edition), O'Reilly, 2005. P. Ficheux, E. Bénard, Linux embarqué. Nouvelle étude de cas - Traite d'OpenEmbedded, Eyrolles, 2012. Compétences CG1.2 Maîtriser les liens entre les disciplines et transposer les mêmes concepts d'un domaine à un autre, être capable de collaborer avec des spécialistes de disciplines connexes Niveau: Maîtrise CG2.4 Maîtriser les architectures des systèmes informatiques permettant de déployer des solutions sur des plateformes hétérogènes et réparties : serveurs et postes clients, réseaux et Internet, réseaux mobiles. Niveau: Expert CG3.2 Identifier, classer et décrire la performance des produits, systèmes et services par des méthodes (mathématiques ou informatiques) d'analyse ou de modélisation. Niveau: Maîtrise CG4.3 Etre capable de transférer des innovations recherche vers le contexte industriel. Niveau: Maîtrise Acquis Compréhension du fonctionnement d'un système d'exploitation Niveau: Maîtrise Compréhension du fonctionnement d'un ordonnanceur (Linux) Niveau: Maîtrise Systèmes embarqués avec et sans système d'exploitation Niveau: Maîtrise