Introduction aux Systèmes et Logiciels Embarqués

Introduction aux Systèmes et Logiciels Embarqués

Responsable du Cours

Stéphane Lavirotte

Intervenants (2017-2018)

Résumé

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.

But

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".

Objectifs

Ce cours a pour objectif d'introduire au travers des exemples du marché, les principales variantes de plateformes embarquées. Ce cours donne à la fois un vue générale sur les environnements de développement logiciel du marché pour les systèmes embarqués et un niveau d'expertise suffisant pour développer et déployer des applications sur différentes cibles embarquées.

Contenu

Le cours se déroule sur 12 semaines (avec 1h de cours et 2h de TD par semaine). Ce cours a été divisé de la manière suivante:

  • Introduction, Systèmes d'Exploitation, Noyau - S. Lavirotte (Cours, TD)
  • Démarrage d'un système: Boot loader et Démarrage des services - S. Lavirotte (Cours, TD)
  • Librairies et Boîte à outils pour l'embarqué - S. Lavirotte (Cours, TD)
  • Cross-compilation d'un système d'exploitation pour l'embarqué - S. Lavirotte (Cours, TD)
  • Optimiser un système embarqué - S. Lavirotte (Cours, TD)
  • Déployer son propre système embarqué GNU/Linux (Raspberry) - S. Lavirotte (Cours, TD)
  • Introduction à Linux et Temps Réel - S. Lavirotte (Cours, TD)
  • Microcontrôleurs avec OS: RTOS - J. De Antoni (Cours, TD)
  • Microcontrôleurs avec OS: RTOS - J. De Antoni (Cours, TD suite de la séance précédente)
  • Microcontrôleurs sans OS (Arduino) - J. De Antoni (Cours, TD)
  • Architecture mixtes - S. Lavirotte (Cours, , TD)

Volumes horaires:

  • Cours: 12h
  • TD: 24h
  • Travail personnel: 18h