L'utilisation de Linux dans les environnements restreints sur des systèmes embarqués 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 oeuvre des services et applications utilisateurs. Cette formation 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é.
Objectifs de cette formation
Concevoir un système Linux embarqué - Comprendre les principes des systèmes embarqués Linux et identifier les différentes solutions disponibles
- Être en mesure de franchir avec succès toutes les étapes de la construction d'un système embarqué
- Découvrir les principes du développement d'applications pour le système embarqué
- Développeur ou ingénieur système souhaitant mettre en oeuvre des systèmes Linux embarqués
1ère partie : 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
- Plates-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
2ème partie : L'espace noyau
Compilation du noyau Linux
- Principe
- Versions du noyau 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
3ème partie : 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 services SSH et SCP
- Débogage à distance et optimisation d'applications
- Création de bibliothèques
4ème partie : 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
- 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
Conclusion
- Discussions libres sur l'ensemble des thèmes abordés
- Travaux pratiques : expérimentations libres suivant les demandes des participants
Les plus de cette formation
Concevoir un système Linux embarqué - Un programme uniquement centré sur les besoins des professionnels devant concevoir des systèmes Linux embarqué (les systèmes temps réel étant abordés dans une autre formation).
- Les retours d'expériences et partage de bonnes pratiques de la part de consultants expérimentés
- Une formation très pratique : pendant la formation, les participants sont concrètement amenés à mettre en oeuvre un système Linux embarqué sur des systèmes Raspberry Pi (qu'ils pourront conserver à l'issue de la formation).