Aller au contenu

Introduction

Bienvenue

  • Module : MA-CSEL1
  • Titre : MA-CSEL1 - Construction de Systèmes Embarqués sous Linux
  • Intervenant
  • 8 étudiants inscrits
    • 6 étudiants CS
    • 1 étudiant EIE
    • 1 étudiant EnEn
    • 2 étudiants plein temps
    • 6 étudiants temps partiel

Groupe Microsoft Teams

code pour rejoindre l'équipe : 3ntp89k

Programme des cours

  • Horaire : 14:35 - 17:00
  • Salle de classe : HEIA-FR / C00.16
Semaine Date Thème
8/SP-1 23.02.2024 Environnement Linux embarqué 1
9/SP-2 01.03.2024 Environnement Linux embarqué 2
10/SP-3 08.03.2024 Programmation noyau Linux 1
11/SP-4 15.03.2024 Programmation noyau Linux 2
12/SP-5 22.03.2024 Programmation noyau Linux 3
13/SP-6 29.03.2024 Vendredi Saint
14 Pâques
15/SP-7 12.04.2024 Programmation noyau Linux 4
16/SP-8 19.04.2024 Programmation système Linux 1
17/SP-9 26.04.2024 Programmation système Linux 2
18/SP-10 03.05.2024 Programmation système Linux 3
19/SP-11 10.05.2024 Pont de l’Ascension
20/SP-12 17.05.2024 Programmation système Linux 4
21/SP-13 24.05.2024 Optimisation système Linux
22/SP-14 31.05.2024 Mini projet intégré 1
23 07.06.2024 Mini projet intégré 2

Calendrier MSE 2023-2024

Déroulement des cours

Déroulement

  • Travail personnel de préparation avant le cours
  • Cours combiné: théorie et travail pratique
  • Travail personnel après le cours
  • Rédaction d’un rapport

Participation et collaboration

  • Ne pas hésiter à participer et rendre le cours plus interactif et plus intéressant
  • Ne pas hésiter à poser des questions
  • Ne pas hésiter à partager vos propres expériences
  • Ne pas hésiter à aider vos collègues
  • Ne pas hésiter à expliquer ce que vous avez compris à vos collègues
  • Ne pas hésiter à notifier des bugs au(x) professeur(s)
  • Ne pas hésiter à regarder des solutions sur Internet

Objectifs du module

Au terme de ce module, les étudiant-e-s seront capable de :

  • Choisir l’architecture (HW et SW) pour des systèmes embarqués pour Linux
  • Mettre en place un environnement de développement pour Linux
  • Choisir et configurer un boot-loader pour une cible donnée
  • Choisir et configurer un système de fichiers pour Linux
  • Choisir et configurer une distribution Linux pour une cible donnée
  • Concevoir et développer des device drivers complexes sous Linux embarqué
  • Concevoir et développer des applications sous Linux embarqué

Contenu du module

Environnement Linux embarqué

  • Architecture générale de systèmes embarqués pour Linux
  • Environnements de développement
  • Outils de développement
  • Création, génération et débogage d’applications
  • Survol des boot-loaders
  • Survol et configuration des systèmes de fichiers
  • Survol des distributions Linux embarqué

Programmation noyaux Linux

  • Programmation de modules noyau
  • Développement et débogage d’un module noyaux
  • Types de pilotes de périphériques
  • Développement et débogage d’un pilote de périphériques
  • Traitement des interruptions
  • Paramétrage et configuration d’un pilotes de périphériques

Programmation système Linux

  • Interface noyaux (system calls et bibliothèques)
  • File I/O
  • Gestion des processus et threads
  • Communication inter processus (IPC, signaux, …)
  • Mémoire virtuelle et accès aux périphériques par UIO
  • Unix domain sockets
  • IPC system V
  • Caractéristiques de l’ordonnanceur
  • Mesure de performance (profiling)
  • Aspects temps-réel (processus/thread)

Mini-projet

  • Mise en œuvre des concepts étudiés durant les 6 premières semaines

Rapport de laboratoire

Rapport

  • Rapports de laboratoire par groupe de 2 étudiants, à rendre
    • 18.04.2024 : Environnement Linux embarqué et programmation noyau Linux
    • 03.06.2024 : Programmation système Linux et optimisation système Linux
    • 14.06.2024 : Mini projet intégré
  • Format : fichier PDF à déposer dans l’assignment de Teams. Le nom du fichier doit être :
    CSEL1-<groupe>-<sujet>.pdf
  • Langue : français, allemand ou anglais

Contenu (indicatif)

  • En-tête
    • logos
    • établissement
    • titre
    • auteur
    • lien vers un dépôt git (github, gitlab, bitbucket, …)
    • lieu
    • date
    • version
  • Par journée de cours (sujet / thème) entre 1 et 4 pages
    • Résumé du laboratoire
    • Réponse aux questions
    • Synthèse sur ce qui a été appris/exercé
      • Non acquis
      • Acquis, mais à exercer
      • Parfaitement acquis
    • Remarques et choses à retenir
    • Feedback personnel sur le laboratoire
  • Annexes (références/littérature, code source/patches dans fichier tar)

Evaluation

Examen théorique

  • Sous forme d’examen oral
    • Deux thèmes tirés au sort
    • 20’ de préparation (un résumé de 5 feuilles A4 recto-verso autorisé)
    • 20’ de présentation au rétroprojecteur sur transparents avec questions des professeurs (le résumé n’est plus autorisé)
  • Experts: le professeur du module + un professeur du domaine

Note finale du cours

  • Examen théorique oral 65%
  • Les rapports de laboratoire 35%

Littérature

Embedded Linux Primer, Second Edition

Embedded Linux Primer, Second Edition

A Practical Real-World Approach
By Christopher Hallinan
November, 2010, 656 pages
ISBN-10: 0137017839 | ISBN-13: 978-0137017836

Image title

Linux Kernel Development

A thorough guide to the design and implementation of the Linux kernel
By Robert Love
July, 2010, 440 pages
ISBN-10: 0672329468 | ISBN-13: 978-0672329463

Image title

Essentials Linux Device Drivers

Probably the most wide ranging and complete Linux device driver book…
By Sreekrishnan Venkateswaran
April, 2008, 744 pages
ISBN-10: 0132396556 | ISBN-13: 978-0132396554

Image title

Writing Linux Device Drivers

A guide with exercices
By Jerry Cooperstein
September, 2009, 394 pages
ISBN-10: 1448672384 | ISBN-13: 978-1448672387

Image title

The Linux Programming Interface

A Linux and UNIX System Programming Handbook
By Michael Kerrisk
October, 2010, 1552 pages
ISBN-10: 1593272200 | ISBN-13: 978-1593272203

Image title

Building Embedded Linux Systems, Second Edition

Concepts, techniques, tricks, and traps
By Philippe Gerum, Karim Yaghmour, Jon Masters, Gilad Ben-Yossef
August 2008, 462 pages
ISBN 10: 0-596-52968-6 | ISBN 13: 9780596529680

Image title

Linux Device Drivers, Third Edition

By Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman
February 2005, 636 pages
ISBN 10: 0-596-00590-3 | ISBN 13: 9780596005900
http://lwn.net/Kernel/LDD3/ (as PDF)

Image title

Understanding the Linux Kernel, Third Edition

By Daniel P. Bovet & Marco Cesati
November 2005, 944 pages
ISBN 10: 0-596-00565-2 0-596-00590-3 | ISBN 13: 978-0596005658

Image title

Linux System Programming

Talking Directly to the Kernel and C Library
By Robert Love
September 2007, 388 pages
ISBN 10: 0-596-00958-5 | ISBN 13: 9780596009588

Image title

Advanced Programming in the UNIX Environment

By W. R. Stevens, Stephen A. Rago
January 1992, 768 pages
ISBN-10: 0201563177 | ISBN-13: 978-0201563177

Image title

Linux for Embedded and Real-time Applications

By Doug Abboot
March, 2003, 254 pages
ISBN-10: 0750675462 | ISBN-13: 978-0750675468

Image title

Practical Linux Programming

Device Drivers, Embedded Systems, and the Internet
By Ashfaq A. Khan
February, 2002, 420 pages
ISBN-10: 1584500964 | ISBN-13: 978-1584500964

Image title

Embedded Linux

Hardware, Software, and Interfacing
By Craig Hollabaugh
March 2002, 432 pages
ISBN-10: 0672322269 | ISBN-13: 978-0672322266