sommaire »»

Linux embarqué avec Yocto Project

Christophe BLAESS - juillet 2023

Ce cours en ligne est prévu pour vous guider à la découverte de l’outil Yocto Project, permettant de produire des systèmes embarqués dont la configuration et le contenu sont parfaitement maîtrisés.

La progression est architecturée en quatre grandes parties :

Chaque partie est elle-même découpée en plusieurs séquences, traitant d'un thème particulier. Je vous encourage à parcourir le sommaire ci-dessous pour vous familiariser avec la structure de ce cours et comprendre la progression proposée.

I – Produire une image avec Yocto Project

I.1 – Vocabulaire et concepts : Yocto utilise une terminologie (layers, bitbake, recipes, distro...) qui peuvent dérouter le lecteur. Cette première étape présentera rapidement les concepts spécifiques.

I.2 – Production d’une image standard : Nous préparerons ensemble une image pour une émulation de cible x86 et la testerons. L’utilisation d’un émulateur est moins excitante qu’une véritable carte embarquée, mais cette étape est importante pour valider le fonctionnement de notre plateforme de compilation en s’affranchissant des aléas de l’installation et du test de l’image sur une vraie carte.

I.3 – Production d’images pour des cibles spécifiques : Après l’émulateur x86, nous créerons des images pour émulation Arm, et pour deux cartes réelles : la Beagle Bone Black et le Raspberry Pi.

II – Configurer une image produite par Yocto Project

II.1 – Personnalisation de la configuration : nous éditerons notre fichier local.conf pour ajuster les répertoires de stockage temporaires, pour ajouter des utilisateurs et configurer leurs mots de passe et pour personnaliser le nom d’hôte de la machine.

II.2 – Ajouts d’applications dans l’image : nous ajouterons tout d’abord des utilitaires dont les recettes sont présentes dans Poky, puis des packages se trouvant dans des layers externes à télécharger. Après avoir examiné la notion de features nous créerons notre propre image pour personnaliser notre système plutôt que de surcharger le fichier conf/local.conf.

II.3 – Personnalisation des recettes : grâce aux extensions de recettes nous verrons comment surcharger un fichier d’une recette de Poky, puis comment modifier avec un patch un fichier provenant d’une recette et même quelques lignes d’un package dans une recette extérieure à Poky.

III – Développer du code métier pour une image Yocto

III.1 – Ajouter des scripts ou des fichiers de données : nous allons écrire une première recette qui permettra d’installer sur la cible des fichiers préexistants comme des scripts shells ou Python.

III.2 – Compiler une application métier en dehors de Yocto Project : deux approches sont possibles pour compiler un code métier pour une cible embarquée. Cette séquence développe une utilisation “manuelle” des outils fournis par Yocto pour produire le code métier indépendamment du système de base.

III.3 – Intégrer notre application métier dans la production de Yocto Project : Une seconde approche consiste à intégrer notre code métier dans la liste des packages compilés par Yocto. C’est ce que nous ferons dans cette séquence où nous rédigerons plusieurs recettes.

IV – Ajuster l'image Yocto pour une cible personnalisée

IV.1 – Configuration du réseau : la configuration par défaut pour le réseau est très bien adaptée la plupart du temps car elle utilise le protocole DHCP pour initialiser les interfaces disponibles. Toutefois dans certains cas, on préfère une configuration statique des paramètres réseau, c'est que que nous allons examiner.

IV.2 – Configuration des utilitaires système : le Raspberry Pi ne pouvant pas maintenir l'heure lorsqu'il est éteint, il n'a aucune référence temporelle au démarrage. Nous allons lui ajouter un service NTP (Network Time Protocol) en modifiant la configuration de Busybox et en préparant un script de démarrage automatique au boot.

IV.3 – Personnaliser le support du matériel : dans un projet de système embarqué, il est souvent nécessaire de gérer des périphériques spécifiques absents du kit de développement initial. Cela nécessite de configurer le kernel et de renseigner le device tree. Cette dernière séquence permettra d'aborder ces points techniquement plutôt avancés.

Enfin, pour ceux qui préfèrent être accompagnés pour la découverte et la maîtrise du système Yocto Project, j’anime des sessions de formation consacrées à ce sujet chez Logilin.

Ce document est placé sous licence Creative Common CC-by-nc. Vous pouvez copier son contenu et le réemployer à votre gré pour une utilisation non-commerciale. Vous devez en outre mentionner sa provenance.

Le nom Yocto Project est une marque déposée par la Linux Foundation. Le présent document n'est en aucune façon approuvé par Yocto Project ou la Linux Foundation.

   sommaire »»