Linux Embarqué et Temps réel

5 jours pour maîtriser les technologies Linux embarqué et temps réel.
Cette formation s'inscrit dans notre programme de formations inter-entreprises mais peut aussi être réalisée en intra-entrepise sur demande.

Objectif

Le but de la formation est de présenter les principaux aspects de la mise en place et de l'utilisation de Linux embarqué et des extensions temps réel du noyau Linux. 

Les travaux pratiques seront réalisés sur une carte Raspberry Pi B+ (RPi B+) basée sur un processeur ARM11 (BCM 2835), sur l'émulateur QEMU et sur plate-forme x86 (le PC du stagiaire). La RPi sera livrée avec une carte SD de 4 Go et un câble console USB permettant également d'alimenter la RPi.

Les stagiaires utiliseront leur PC (Windows ou Linux) ou MacBook (Mac OS X 10.5 ou plus) puisque l'environnement de développement est intégré à une image VirtualBox contenant également les supports de cours. L'image de développement est basée sur la distribution Fedora 14.

Le matériel nécessaire aux travaux pratiques sera fourni aux stagiaires (carte RPi et accessoires, ouvrage « Linux embarqué ») pourra être conservé à l'issue du stage (dans le cas d'une formation Inter-entreprises).  

Public visé

Cette formation s'adresse à des ingénieurs et chefs de projets techniques qui seront amenés à concevoir une solution industrielle complète avec des technologies libres. 

Pré-requis

Les connaissances nécessaires pour la participation au stage sont les suivantes :

  • Connaissance utilisateur Linux ou à défaut UNIX
  • Notions de langage C
  • Notions de manipulation de la ligne de commande (shell)

Le stagiaire utilisera son PC portable (ou un MacBook) pour la formation.

La machine devra satisfaire aux pré-requis suivants :

  • Système d'exploitation Windows (XP ou supérieur), Linux ou bien MacBook sous Mac OS X 10.5 ou supérieur.
  • Droits administrateursur le système Windows ou MacOS X afin d'ajouter l'image VirtualBox et le pilote du câble USB/Série
  • La machine devra disposer AU MINIMUM de 2 Gode mémoire vive et de 20 Go d'espace libre sur le disque.
  • La machine devra disposer d'un lecteur de carte SD

Programme

La formation s'effectue sur 5 journées de 7 h, soit 35 h de cours, avec la possibilité de ne participer qu'à un des 2 modules.

Linux embarqué (3 jours)

  • Quelques rappels sur GNU/Linux
  • Licences GPL/LGPL, GPL avec exception
  • Architecture de Linux : principaux fichiers et répertoires, procédure de démarrage
  • Prise en main de la carte RPi, test de la distribution fournie par le constructeur (Debian/Raspbian)
  • Construction d'une distribution embarquée « from scratch ». La distribution sera installée sur la carte SD fournie avec la RPi.
    • Installation de la chaîne croisée CodeSourcery (Mentor Graphics) pour ARM
    • Le noyau Linux: introduction, configuration, compilation croisée
    • Busybox
    • Installation des bibliothèques
    • Configuration de la carte SD : noyau Linux et root-filesystem puis test de la distribution
    • Test avec NFS-RootOutils de construction de distribution
  • Outils de construction de distribution
    • Présentation des solutions existantes
    • Utilisation de Buildroot et OpenEmbbeded
      • Création d'une distribution
      • Configuration et adaptation
      • Création d'un paquet « Hello World »
    • Conclusion : avantages et inconvénients des deux outils
  • Utilisation d'un Bootloader et mémoire « flash »
    • Test de U-Boot sur RPi et QEMU/ARM
    • Introduction aux mémoires flash NOR et NAND
    • Prise en compte des flash dans U-Boot et dans le noyau Linux (pilote MTD)
    • Systèmes de fichiers pour flash : JFFS2, UBIFS
    • Installation d'une distribution Linux sur mémoire flash NOR sous QEMU/ARM
  • Mise au point
    • Compilation d'une application minimale, installation sur la carte RPi et mise au point avec GDBSERVER
    • Mise au point du noyau ou d'un module noyau avec KGDB
  • IHM embarquée
    • Utilisation de Qt sur plate-forme ARM, intégration dans Buildroot
    • Test d'une application de démonstration sous QEMU/ARM

Linux temps réel (2 jours)

  • Solutions temps réel sous Linux
    • Rappels sur le temps réel
    • Linux standard
    • Les patch de préemption du noyau Linux (preempt-kernel, low-latency)
    • Le patch PREEMPT-RT
    • Technique du co-noyau (RTLinux, RTAI, Xenomai)
    • Tableau comparatif des solutions
    • Test des extensions temps réel de Linux sur la base d'une mini-distribution construite avec Buildroot et basée sur PREEMPT-RT, RTAI ou Xenomai. Pour chaque extension, on mettra en évidence les performances en utilisant les outils hackbench, latency, cyclictest, stress.
  • Programmation temps réel en POSIX sur noyau Linux standard
    • Configuration de l'ordonnanceur Linux (SCHED_OTHER, SCHED_FIFO, SCHED_RR)
    • Les signaux
    • Les « threads » POSIX : création, arrêt, MUTEX, sémaphores, conditions, extensions temps réel
    • Compteurs POSIX.1 et POSIX.4
    • Création d'un tâche périodique POSIX exploitant les GPIO de la RPi (rpi_gpio) et mise en évidence des problèmes de « jitter »
  • Focus sur Xenomai
    • Historique Introduction
    • Description fonctionnelle
    • Architecture
    • Installation et mesure de performances avec les outils latency et hackbench (voir test PREEMPT-RT / RTAI)
    • Domaines d'exécution, fonctionnement d'ADEOS
    • Migration et conception d'application
      • API POSIX de Xenomai
      • Mise en œuvre de l'API POSIX sur l'exemple xenomai_rpi_gpio et comparaison avec la version Linux rpi_gpio.
      • Présentation de l'API RTDM (Real Time Driver Model)
      • Modification de l'application xenomai_rpi_gpio pour utiliser le pilote RTDM