Systèmes embarqués temps réel

GIF-3004, Hiver 2017

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-2504, du 10 janvier au 18 avril 2017.
  • Ateliers dirigés : vendredi de 9h30 à 11h20, local PLT-0105, du 13 janvier au 21 avril 2017.

Professeur

Christian Gagné

Disponibilités

Disponibilités pour le cours le lundi de 10h30 à 11h30 au local PLT-1138-F, du 16 janvier au 10 avril 2017 (excepté 6 mars), ainsi que le mardi 25 avril 2017, de 10h30 à 11h30.

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 Ateliers vendredi 9h30-11h30 Laboratoires
1 9-13 janvier Présentation du cours
Introduction aux systèmes embarquées temps réel
Développement sur RPi3 Énoncé laboratoire 1
2 16-20 janvier Systèmes d'exploitation et programmation concourante Ligne de commande
Évaluation laboratoire 1
3 23-27 janvier Systèmes d'exploitation et programmation concourante Présentation laboratoire 2
Évaluation laboratoire 1
Énoncé laboratoire 2
4 30 jan. - 3 fév. Programmes temps réel Programmation système en C
5 6-10 février Programmes temps réel
6 13-17 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 20-24 février Noyau Linux Labo 3 : implémentation et détails techniques
8 27 fév. - 3 mars Examen partiel au local PLT-2504
9 6-10 mars Semaine de lecture
10 13-17 mars Développement de pilotes dans Linux Présentation laboratoire 4
Évaluation laboratoire 3
Énoncé laboratoire 4
11 20-24 mars Communication et synchronisation
12 27-31 mars Théorie des files d'attente Présentation laboratoire 5 Énoncé laboratoire 5
13 3-7 avril Systèmes parallèles Évaluation laboratoire 4
14 10-14 avril Fiabilité et tolérance aux fautes Congé (Vendredi saint)
15 17-21 avril Pas de cours mardi
16 24-28 avril Examen final au local PLT-2510 Évaluation laboratoire 5

Laboratoires

Le cours comporte cinq laboratoires. La plateforme utilisée est Raspberry Pi 3 (RPi3) avec systèmes d’exploitation Linux (incluant patch PREEMPT_RT), programmé en C. L'ensemble Raspberry Pi 3 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 92$ (argent comptant seulement).

Laboratoire Remise code source
Laboratoire 1    Pas de remise
Laboratoire 2 Vendredi, 17 février, 9h30
Laboratoire 3 Vendredi, 17 mars, 9h30
Laboratoire 4 Vendredi, 7 avril, 9h30
Laboratoire 5 Vendredi, 28 avril, 9h30

Examens

Examen Date Local
Examen partiel : questionnaire , solutionnaire    Mardi, 28 février, 13h30 à 15h20    PLT-2504   
Examen final : questionnaire , solutionnaire Mardi, 25 avril, 13h30 à 15h20 PLT-2510

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.