Linux embarqué avec Yocto
Objectifs
|
||||||||||||||||||
- Cours théorique
- Support de cours imprimé et au format PDF (en anglais)
- Le formateur répond aux questions des stagiaires en direct pendant la formation et fournit une assistance technique et pédagogique
- Activités pratiques
- Les activités pratiques représentent de 40% à 50% de la durée du cours
- Elles permettent de valider ou compléter les connaissances acquises pendant le cours théorique.
- Un PC Linux pour deux stagiaires pour les activités pratiques
- Une plateforme cible pour deux stagiaires (sauf en cas d'utilisation de qemu)
- Exemples de code, exercices et solutions
- Le formateur assiste les stagiaires pendant les exercices
- Une machine virtuelle préconfigurée téléchargeable pour les activités pratiques après le cours
- Au début de chaque demi-journée une période est réservée à une interaction avec les stagiaires pour s'assurer que le cours répond à leurs attentes et l'adapter si nécessaire
- Bonnes connaissances en programmation C
- Connaissance de la programmation utilisateur Linux (voir notre cours D0 - Programmation en mode utilisateur Linux)
- De préférence, connaissance de la programmation du noyau et des pilotes Linux (voir notre cours D3 - Drivers Linux)
- Tout ingénieur ou technicien en systèmes embarqués possédant les prérequis ci-dessus
- Les prérequis sont vérifiés avant l'entrée en formation, sur la base des prérequis publiés sur cette fiche.
- Pendant la formation, les acquis sont évalués en continu : quiz de fin de séquence et observation directe du formateur.
- À l'issue de la formation, chaque participant reçoit une attestation de fin de formation.
Plan du cours
- Historique de Linux et gestion des versions
- Architecture du système Linux
- Processus et MMU
- Appels système
- Bibliothèques partagées
- Les composants du système Linux
- Toolchain
- Bootloader
- Kernel
- Système de fichiers racine
- Les paquets Linux
- Les différentes licences utilisées par Linux (GPL, LGPL, etc)
- Toolchains précompilées
- Outils de génération de toolchains
- Crosstool-ng
- Buildroot
- Compilation manuelle d'une toolchain
- Bootloaders (UBoot, Redboot, barebox)
- Bibliothèques optimisées (glibc, uClibc-ng, musl)
- Interfaces graphiques embarquées
- Busybox
- Distributions embarquées
- Commerciales
- Standard
- Outils de construction de distributions personnalisées
- Introduction à U-Boot
- Démarrer la carte avec U-Boot
- Démarrage depuis la NOR
- Démarrage depuis la NAND
- Démarrage depuis l'eMMC
- Variables d'environnement d'U-Boot
- Variables définies par l'utilisateur
- Variables prédéfinies
- Substitution de variables
- Le shell minimal d'U-Boot
- Écrire des scripts dans des variables
- Exécuter des scripts
- Utiliser des variables dans les scripts : le motif set-script
- Principales commandes d'U-Boot
- Démarrer un OS
- Accéder aux mémoires flash
- Accéder aux systèmes de fichiers (NFS, FAT, EXTx, JFFS2…)
- Le shell complet d'U-Boot
- Structure d'un script
- Instructions de contrôle de flux (if, for…)
- Démarrer Linux
- Paramètres du kernel Linux
- La séquence de démarrage de Linux
- Construire et installer U-Boot avec son système de build natif
- Le système de build de Linux
- Téléchargement du code source stable
- Récupérer une archive tarball
- Utiliser GIT
- Configuration du kernel
- Compilation du kernel et de ses modules
- Modules livrés dans l'arborescence
- Modules hors arborescence
- Installation du kernel et des modules
- Architecture du BSP Linux
- Structure générale
- Le BSP ARM
- Le système de build de Linux
- Définition et initialisation de la carte
- Présentation des device drivers Linux
- Utilisation du Flattened Device Tree
- Paquets
- Outils de construction des paquets (gcc, Makefile, pkg-config)
- Autotools
- Cross-compiler un paquet avec les autotools
- Les applications tout-en-un
- Busybox, les utilitaires de base
- Dropbear : communications chiffrées (ssh)
- Construire manuellement votre système de fichiers racine
- Nœuds de périphériques, programmes et bibliothèques
- Fichiers de configuration (réseau, udev, …)
- Installation des modules
- Recherche et installation des bibliothèques nécessaires
- Test de la cohérence et de la complétude du système de fichiers
- Paramètres du kernel Linux
- La séquence de démarrage de Linux
- Les différents systèmes d'initialisation
- busybox init
- system V init
- systemd
- Démarrage automatique d'un système embarqué
- Interfaces de stockage
- Périphériques bloc
- MTD
- Mémoires flash et MTD Linux
- Flashes NOR
- Flashes NAND
- Flashes ONENAND
- Les différents formats de systèmes de fichiers flash
- JFFS2, YAFFS2, UBIFS
- Système de fichiers en lecture seule
- CRAMFS, SQUASHFS
- Systèmes de fichiers Linux standard
- Ext2/3/4, FAT, NFS
- Ramdisks et initrd
- Création d'un initramfs
- Démarrage via un initramfs
- Choisir les bons formats de systèmes de fichiers
- Flasher le système de fichiers
- Présentation de Yocto
- Historique
- Yocto, Open Embedded et Poky
- Objectif du Yocto Project
- Les principaux projets
- Architecture de Yocto
- Présentation
- Recipes et classes
- Tâches
- Objectifs du système de build
- Construire des images déployables
- Layers et priorités des layers
- Organisation des répertoires
- Fichiers de configuration (local, machine et distribution)
- L'outil bitbake
- Options courantes
- Utiliser Yocto
- Construire un paquet
- Construire une image (système de fichiers racine + u-boot + kernel)
- Outils divers autour de Yocto
- Le SDK Yocto
- Le SDK extensible
- Architecture d'une recipe
- Tâches
- Dépendances entre tâches
- Dépendances entre recipes
- Le langage bitbake
- Variables et fonctions standard
- Classes et recipes
- Les classes Yocto de base
- Principales commandes bitbake
- Ajouter un nouveau layer
- Structure d'un layer
- Les différents types de layers
- Les différents types de recipes et de classes
- Programme simple
- Paquet fondé sur un Makefile
- Paquet fondé sur les autotools
- u-boot
- kernel
- Module hors arborescence
- Stratégies de création de recipes
- Depuis zéro
- Avec devtool
- Avec recipetool
- À partir d'une recipe existante similaire
- Déboguer les recipes
- Déboguer la sélection des recipes
- Déboguer les dépendances
- Déboguer les tâches
- Définir le packaging
- Découpage des paquets
- Démarrer automatiquement un programme
- Personnaliser la recipe d'un paquet existant (.bbappend)
- Dépendances entre recipes
- Créer et ajouter des patches
- Créer un patch pour un composant fourni par la communauté
- Créer un patch pour un composant maintenu par l'utilisateur
- Définir de nouvelles tâches
- Déclaration d'une tâche
- Codage des tâches
- Utiliser devtool pour créer un paquet et sa recipe
- Utiliser devtool pour modifier un paquet et sa recipe existants
- Utiliser devtool pour mettre à jour une recipe et construire une nouvelle version d'un paquet
- Créer des classes
- Créer de nouvelles classes indépendantes
- Hériter d'une classe existante
- Construire un système de fichiers racine avec Yocto
- Créer un système de fichiers racine personnalisé
- Écrire une recipe d'image
- Choisir les paquets à construire
- Choisir les types de systèmes de fichiers
- Les différents types d'images
- Hériter et personnaliser des images
- Personnaliser les fichiers de configuration du système (réseau, points de montage, …)
- Gestion des paquets
- rpm
- opkg
Plus d'information
Pour vous enregistrer ou pour toute information supplémentaire, contactez nous par email à l'adresse info@ac6-formation.com.
Les inscriptions aux sessions de formation sont acceptées jusqu'à une semaine avant le début de la formation. Pour une inscription plus tardive nous consulter
Vous pouvez aussi remplir et nous envoyer le bulletin d'inscription
Ce cours peut être dispensé dans notre centre de formation près de Paris ou dans vos locaux, en France ou dans le monde entier.
Les sessions inter-entreprises programmées sont ouvertes dès deux inscrits. Sous condition d'un dossier complet, les inscriptions sont acceptées jusqu'à une semaine avant le début de la formation.
Dernière mise à jour du plan de cours : 2 juillet 2026
L'inscription à nos formations est soumise à nos Conditions Générales de Vente
Sur le même sujet :
Yocto ou Buildroot : comment choisir pour votre projet Linux embarqué