Formation “Linux Embarqué”

Linux EmbarquéL’utilisation de Linux dans les environnements embarqués sur des systèmes retreints nécessite une bonne connaissance des mécanismes sous-jacents, de la configuration du noyau, de l’organisation des bibliothèques et de la mise en œuvre des services et applications utilisateurs.

Ce cours vous propose de construire un système Linux complet en commençant sur émulateur puis en utilisant une carte à processeur ARM. De la configuration bas-niveau du système (drivers, ordonnanceur, système de fichiers…) aux applications utilisateur (serveurs, IHM, graphique…) en passant par les outils de mise au point et de débogage, vous découvrirez l’imbrication et le rôle de chaque composant de votre système Linux embarqué.

Les travaux pratiques de ce cours ont lieu sur des systèmes Raspberry Pi, que les participants configurent entièrement.

Lorsque les formations ont lieu dans nos locaux en inter-entreprise ou en formation individuelle, les participants peuvent conserver à l’issue de la formation la carte Raspberry Pi 2 (ainsi que son câble d’alimentation et sa carte SD).

Points-clés

Durée : 3 jours (2 jours en formation individuelle).

Tarifs 2016 :

  • En nos locaux à Évry (91) : 1780 €HT (déjeuners et collations offerts).
    Tarif dégressif si plusieurs inscrits de la même société à la même session.
  • Prochaines sessions : du 20 au 22 septembre 2017, du 8 au 10 janvier 2018. Renseignements et inscriptions : formations@logilin.fr

Pré-requis : connaissance de Linux (utilisateur) et du langage C

Conseil cursus : pour prolonger cette formation, nous vous proposons les cours “Temps Réel Linux et Xenomai” ou “Écriture de drivers et programmation noyau Linux“.

Plan : Téléchargez le plan détaillé au format PDF.

Thèmes abordés

  • Développement embarqué sous Linux : outils de développement et de mise au point des  applications, utilisation de l’environnement Éclipse, compilation et débogage croisés pour une cible embarquée
  • Espace noyau : ajustement et compilation d’un noyau Linux spécifique, application de patch, préparation d’un système de fichiers, étude du bootloader et du démarrage.
  • Espace utilisateur : chargement des utilitaires et démarrage des services, initialisation du réseau, Telnet et FTP, mise au point des bibliothèques et des applications personnalisées.
  • Aspects avancés :  conseils de paramétrage de l’ordonnanceur et de la mémoire, mise en œuvre d’un serveur HTTP, d’un serveur SSH/SCP, synchronisation d’horloge avec PTP, supervision par agent SNMP, etc.

Plan détaillé

Linux en environnement industriel

  • Linux, logiciels libres, licences : Présentation des concepts, des principes et des pratiques. Projet Gnu. Noyaux et distributions Linux. Principes des GPL, LGPL, BSD… et implications pour l’embarqué.
  • Outils libres de développement embarqué : Outils Gnu – compilation, débogage et mise au point. Plate-formes hôte et cible, processeurs et  émulateur. Création d’une chaîne croisée avec Buildroot.
  • Éclipse et le CDT : Environnement de développement intégré. Création de projet, compilation et débogage. Compilation croisée avec Éclipse.
  • Travaux pratiques : Utilisation de GCC, effets des différentes options. Débogage dynamique et post-mortem avec GDB. Compilation et débogage de projet sous Eclipse. Création et utilisation d’une chaîne de compilation pour processeur Arm.

Espace noyau

  • Compilation du noyau Linux : Principe. Versions du noyaux Linux. Sélection et application d’un patch. Configuration et compilation pour une cible embarquée.
  • Installation sur cible : Transfert de l’image du noyau. Configuration du bootloader ou de l’émulateur. Paramètres de démarrage du kernel.
  • Système de fichiers : Types de système de fichiers. Formatage et préparation d’une arborescence. Fichiers spéciaux des périphériques. Principe du processus init.
  • Travaux pratiques : Application d’un patch (Linux-rt) sur les sources du noyau. Configuration et compilation d’un noyau Linux pour cible Arm. Préparation d’un système de fichiers minimal et boot avec processus init personnel.

Espace utilisateur

  • Utilitaires système : Busybox, outil incontournable de l’embarqué. Scripts de démarrage. Édition des liens, bibliothèques statiques ou dynamiques.
  • Services réseau : Configuration des interfaces réseau. Utilitaires réseau essentiels. Affectation d’adresse statique ou dynamique (DHCP). Routage.
  • Débogage et mise au point : Compilation croisée d’applications personnalisées, de bibliothèques statiques et dynamiques. Débogage distant avec GDB et Eclipse. Tests en couverture et profiling.
  • Travaux pratiques : Paramétrage et compilation de Busybox. Personnalisation des scripts de démarrage. Installation des serveurs Telnet et FTP. Débogage à distance et optimisation d’applications. Création de bibliothèques.

Aspects avancés

  • Paramétrage spécifique : Configuration de l’ordonnanceur. Affectation des tâches et des interruptions sur les CPU. Paramétrage de la mémoire virtuelle.
  • Services réseau supplémentaires : Connexion sécurisée avec SSH, transferts de fichiers par SCP. Serveur web HTTP avec script CGI.
  • Industrialisation et extensions : Ajustement d’horloge système avec NTP et PTP. Supervision distante par agent SNMP. Mise à jour, firmware. Développement sur la cible. Utilisation de la GlibC.
  • Travaux pratiques : Vérification des paramètres temps-réel. Saturation mémoire et désactivation d’overcommit. Compilation et test de Dropbear, Boa, PTP. Comparaison de Crosstool-NG et Buildroot. Intégration d’un compilateur sur la cible.

Conclusion

  • Discussions libres sur l’ensemble des thèmes abordés.
  • Travaux pratiques : Expérimentations libres suivant les demandes des participants.