Quel point commun y-a-t'il entre une smart watch, des google glass, un aspirateur Roomba, un drone volant, un robot bipède Nao...? Tous sont des sytèmes embarqués, même s'ils reposent sur des technologies différentes. Ce cours a pour but de présenter les différents aspects logiciels liés à ces systèmes embarqués omniprésents dans notre vie quotidienne.
L'ordinateur tend à s'inviter dans de plus en plus d'équipements de notre quotidien. Si aujourd'hui il est encore un ordinateur portable à part entière comme un smart-phone, une tablette, etc., il a maintenant la capacité d'être complétement embarqué au coeur d'un équipement qui n'est plus seulement un terminal utilisateur.
Grâce à une informatique de pointe (systèmes et logiciels que nous étudierons et produiront dans ce cours) et à une électronique de plus en plus miniaturisée (que nous utiliserons), nous sommes aujourd'hui capables de prendre des milliers de mesures par seconde, de traiter ces informations pour prendre des décisions pour aller vers plus d'"Intelligence Ambiante".
Ce module a pour but de présenter tant les problématiques des systèmes que des logiciels pour le déploiement sur des cibles embarquées. Après une présentation rapide des différents éléments d'un système embarqué (noyau et système d'exploitaion ou simplement programme sur un micro-contrôleur), nous étudierons dans ce cours les spécificités logicielles de ces systèmes: systèmes embarqués avec et sans système d'exploitation, déploiement d'un système sur une cible particulière (cross-compilation), optimisation d'un système et des applications pour tenir compte des contraintes des plateformes embarquées (consommation énergétique, emprunte mémoire, propriétés temps réel...).
Dans ce cours, nous illustrerons ces différentes problématiques à l'aide de plateformes embarquées grand public (Arduino, Raspberry Pi, ...). Nous découvrirons la matrise des environnements pour la production de systèmes embarqués et des logiciels (Linux Yocto, Buildroot, Crosstool-ng, OpenWrt, ...) nécessaires à l'exploitation de ces plateformes. Nous testerons aussi des cas d'utilisation d'un système embarqué avec quelques capteurs et actionneurs. A ce titre ce cours est complémentaire du cours sur les "Capteurs/Actionneurs Intelligents".