Systèmes embarqués temps réel

GIF-3004, Hiver 2018

Synopsis : Ce cours porte sur l’analyse et la conception de systèmes embarqués avec systèmes d’exploitation standards et temps réel. Il présente le rôle des systèmes d’exploitation dans les systèmes embarqués pour la gestion de l’exécution des programmes, l’encapsulation du matériel, et l’offre de primitives et de services logiciels. Le cours porte également sur les notions conceptuelles et pratiques de systèmes temps réel. Les notions conceptuelles sont mises en pratiques, par le développement d’applications logicielles pour systèmes embarqués avec systèmes d’exploitation. Les travaux sont réalisés en langage de programmation C sur une plateforme matérielle ARM et des systèmes d’exploitation ouverts.


Logistique

Horaire et locaux

  • Cours en classe : mardi de 13h30 à 15h20, local PLT-3775, du 16 janvier au 24 avril 2018.
  • Ateliers dirigés : vendredi de 9h30 à 11h20, local PLT-0105, du 13 janvier au 27 avril 2018.

Professeur

Christian Gagné

Disponibilités

Disponibilités pour le cours le lundi de 10h30 à 11h30 au local PLT-1138-F, du 22 janvier au 30 avril 2018 (excepté 5 mars et 9 avril).

Algorithme :

  1. De préférence, venez lors des heures de disponibilités annoncées;
  2. Sinon, tenter votre chance avec l’algorithme suivant :
    1. Lorsque ma porte est ouverte, vous n’avez qu’à frapper avant d’entrer!
    2. Si ma porte est fermée, c’est soit que je ne suis pas là, soit que je suis très occupé. Vous pouvez me déranger si cela ne peut pas attendre;
    3. Si la lumière est éteinte, c’est que je ne suis pas à l’université;
    4. L’heure qui précède un cours n’est jamais le bon moment pour venir me voir.
  3. Sinon, prendre rendez-vous par courriel.

Chronologie et présentations

Sem. Dates Cours mardi 13h30-15h20 (PLT-3775) Ateliers vendredi 9h30-11h30 (PLT-0105) Laboratoires
1 15-19 janvier Présentation du cours
Introduction aux systèmes embarquées temps réel
Développement sur RPi Énoncé laboratoire 1
2 22-26 janvier Systèmes d’exploitation et programmation concourante UNIX et ligne de commande Évaluation laboratoire 1
3 29 jan. - 2 fév. Systèmes d’exploitation et programmation concourante Présentation laboratoire 2 Évaluation laboratoire 1
Énoncé laboratoire 2
4 5-9 février Programmes temps réel Programmation système en C
5 12-16 février Programmes temps réel Réalisation laboratoire 2
6 19-23 février Entrées/sorties et gestion de la mémoire avec temps réel Présentation laboratoire 3 Évaluation laboratoire 2
Énoncé laboratoire 3
7 26 fév. - 2 mars Examen partiel Labo 3 : implémentation et détails techniques
8 5-9 mars Semaine de lecture
9 12-16 mars Noyau Linux Réalisation laboratoire 3
10 19-23 mars Développement de pilotes dans Linux Présentation laboratoire 4 Évaluation laboratoire 3
Énoncé laboratoire 4
11 26-30 mars Communication et synchronisation Congé (Vendredi saint)
12 2-6 avril Systèmes parallèles Réalisation laboratoire 4
13 9-13 avril Théorie des files d’attente Présentation laboratoire 5 Évaluation laboratoire 4
Énoncé laboratoire 5
14 16-20 avril Fiabilité et tolérance aux fautes Réalisation laboratoire 5
15 23-27 avril Pas de cours mardi Réalisation laboratoire 5
16 30 avril - 4 mai Examen final au local PLT-2548 Évaluation laboratoire 5

Laboratoires

Le cours comporte cinq laboratoires. La plateforme utilisée est Raspberry Pi Zero W avec systèmes d’exploitation Linux, programmé en C. L’ensemble Raspberry Pi Zero W du cours est en vente au service technique du département de génie électrique et de génie informatique (PLT-3112) au coût de 50$ (argent comptant seulement).

Laboratoire Remise code source
Laboratoire 1    Pas de remise
Laboratoire 2 Vendredi, 23 février, 9h30
Laboratoire 3 Vendredi, 23 mars, 9h30
Laboratoire 4 Vendredi, 13 avril, 9h30
Laboratoire 5 Vendredi, 4 mai, 9h30

Examens

Examens partiels

Examens finaux


Références

  • Hermann Kopetz. Real-time systems. 2e édition, Springer, 2011.
  • Andrew S. Tanenbaum et Herbert Bos. Modern operating systems. 4e édition, Prentice Hall Press, 2015.
  • W. Richard Stevens et Stephen A. Rago. Advanced programming in the UNIX environment. 3e édition, Addison-Wesley, 2013.
  • Jane W.S. Liu. Real-time systems. Prentice-Hall, 2000.
  • Robert Love. Linux kernel development. 3e édition, Addison-Wesley, 2010.
  • Eric S. Raymond. The art of Unix programming. Addison-Wesley, 2003.
  • Jonathan Corbet, Alessandro Rubini et Greg Kroah-Hartman. Linux device drivers. 3e édition, O’Reilly Media, Inc., 2005.
  • Maarten van Steen et Andrew S. Tanenbaum. Distributed Systems. 3e édition, 2017.
  • Christos G. Cassandras et Stephane Lafortune. Introduction to discrete event systems. 2e édition, Springer, 2009.
  • Thomas Rauber et Gudula Rünger. Parallel programming. Springer, 2010.
  • Paul A. Tobias et David Trindade. Applied reliability. 3e édition, CRC Press, 2012.