Accueil - Connexion

Linux Embarqué

58 Linux Embarqué Génie physique et systèmes embarqués (formation initiale sous statut étudiant) S9
Cours : 6 h TD : 0 h TP : 30 h Projet : 0 h Total : 36 h
Responsable : Hugo Descoubes
Pré-requis
- Bonnes assises en conception et développement de logiciel embarqué (Système temps réel, architectures processeurs, etc)
- Bonnes assises en système d'exploitation (GNULinux, UNIX user space, etc)
- Bonnes assises en outils de développement logiciel (shell UNIX, Makefile, GCC, etc)
- Bonnes assises en langage C
Objectifs de l'enseignement
- Comprendre l'architecture, la structuration et les tâches d'un système UNIX-like GNUlinux
- Comprendre le démarrage d'un système GNULinux, du premier étage de boot au premier applicatif
- Comprendre les contraintes amenées par le développement d'un BSP (Board Support Package) Linux pour l'embarqué
- Comprendre et automatiser un boot Linux par U-Boot
- Modifier, compiler et intégrer un kernel Linux dédié
- Modifier, compiler et intégrer un device tree dédié
- Développer et intégrer un patch kernel
- Construire une distribution GNULinux dédiée
- Analyser un driver Linux
- Développer et documenter un driver Linux
Programme détaillé
https://foad.ensicaen.fr/course/view.php?id=232

En cours (partie distro GNUlinux) :
- Introduction aux architectures et modèles de noyaux
- Rappels historiques, d'UNIX à GNULinux, un marché dominé
- Linux pour l'embarqué, développement sous contraintes
- Rappels concernant un système de fichiers UNIX
- Processus de construction d'un système GNULinux
- Séquence de boot avec U-Boot (étages de boot, automatisation, réduction de temps de boot, etc)
- Kernel Linux (architecture, services monolithiques, modification, compilation, etc)
- Device tree (documentation, modification, compilation, etc)
- Distro GNULinux (Buildroot, Yocto, etc)
- Introduction à Linux temps réel (Xenomai, PREEMPT-RT, mesure, benchmarking, etc)

En cours (partie driver Linux) :
- Open sources et licences
- Driver Linux et module
- Char device driver
- Concurrence et conditions de course
- Opérations avancées sur driver char device et veille
- Gestion du temps et travail différé
- Gestion des allocations mémoire
Applications (TD ou TP)
- Construction d'un BSP Linux minimal pour carte BeagleBoneBlack
- Customisation du boot (U-Boot), du kernel, du device tree et de la distribution
- Analyse et développement de driver Linux
- Développement d'un projet de test intégrant le BSP customisé conçu, le driver développé et un applicatif de test

Outils matériel et logiciel :
- BeagleBoneBlack et carte microSD
- Système hôte GNULinux réel ou virtuel, shell UNIX et cross-compiler ARM GCC
Compétences acquises
COMPETENCES SPECIFIQUES
- Comprendre l'architecture, la structuration et les tâches d'un système UNIX-like GNUlinux
- Comprendre le démarrage d'un système GNULinux, du premier étage de boot au premier applicatif
- Comprendre les contraintes amenées par le développement d'un BSP (Board Support Package) Linux pour l'embarqué
- Comprendre et automatiser un boot Linux par U-Boot
- Modifier, compiler et intégrer un kernel Linux dédié
- Modifier, compiler et intégrer un device tree dédié
- Développer et intégrer un patch kernel
- Construire une distribution GNULinux dédiée
- Analyser un driver Linux
- Développer et documenter un driver Linux

COMPETENCES GENERIQUES
Bloc de compétences : Considération de la dimension organisationnelle, personnelle et culturelle
-> Niveau 2 : Se connaître, savoir se situer, s'autoévaluer, gérer ses compétences et opérer ses choix professionnels

Bloc de compétences : Adaptation aux exigences propres de l'entreprise et de la société
-> Niveau 2 : Aptitude à prendre en compte les enjeux et les besoins de la société

Bloc de compétences : Acquisition de connaissances et méthodes scientifiques et techniques et maîtrise de leur mise en oeuvre
-> Niveau 3 : Capacité à mobiliser des connaissances scientifiques et des techniques expérimentales ou de simulation
-> Niveau 2 : Capacité à concevoir des systèmes innovants, à les concrétiser et à les tester
-> Niveau 3 : Capacité à trouver, évaluer une information pertinente puis à l'exploiter, capacité s'auto-évaluer, enrichir ses connaissances et compétences

Bloc de compétences : Acquisition, développement et mise en œuvre de connaissances et méthodes théoriques et expérimentales spécifiques à un domaine professionnel
-> Niveau 3 : Capacité à concevoir des systèmes électroniques communicants et autonomes implémentant une algorithmique et une architecture avancée
Bibliographie
SOURCES : https://www.kernel.org/
LINUX EMBARQUE : https://bootlin.com/, Linux Embarqué - Ficheux et Bénard
DRIVER : Linux Device Driver - Corbet, Rubini et Kroah-Hartman
AUTRES ECOLES D'INGENIEUR : http://kadionik.vvv.enseirb-matmeca.fr/
LANGAGE C : The C Programming Language – Kernighan et Ritchie
ARCHITECTURE PROCESSEUR : Architecture de l'ordinateur - Tanenbaun
SYSTEMES D'EXPLOITATION : Modern Operating Systems - Tanenbaun
OUTILS : https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.pdf

© 2024 - ENSICAEN ( Mentions Légales - Crédits )