Formation “Linux Embarqué avec Buildroot”

Linux EmbarquéPour concevoir un système embarqué s’appuyant sur Linux, il existe de nos jours deux environnements principaux : Buildroot et Yocto. Pour vous aider à choisir, nous vous proposons notre note technique “Conception d’un système Linux industriel

Ce cours vous propose de construire un système Linux complet pounr une carte à processeur Arm en employant l’environnement Buildroot. De la configuration bas-niveau du système (drivers, bootloader, 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 3 (ainsi que son câble d’alimentation et sa carte SD).

Points-clés

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

Tarifs 2019 :

  • 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 21 au 23 janvier 2019, du 2 au 4 avril 2019, du 15 au 17 juillet 2019. 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, SSH et SCP, 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, synchronisation d’horloge avec NTP, 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 services SSH et SCP. 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 :. 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.