Le Raspberry Pi est devenu une plateforme incontournable pour le prototypage et le déploiement de projets embarqués, de l’IoT industriel aux systèmes de contrôle. Cette formation de 4 jours vous apprend à construire une distribution Linux personnalisée pour Raspberry Pi avec Buildroot, maîtriser la cross-compilation ARM et déboguer vos applications avec GDB. Vous repartirez avec un système embarqué fonctionnel sur carte microSD.
Public visé
Développeurs.
Objectifs pédagogiques
À l’issue de cette formation, vous serez capable de :
- Installer une distribution Linux personnalisée adaptée aux équipements Raspberry Pi via Buildroot
Programme
Jour 1
Présentation
Architecture
- Architecture Linux
- Les différents éléments d’un système Linux
- Le BIOS et le boot
- Le boot
- Introduction au noyau
- La librairie LibC
Init et démons
- Inittab et init
- Niveau d’exécution
- Exemple fichier /etc/inittab
- Les différents types de démons
Init et Shell
- Les commandes de base et programme
- Le Shell
- Les gestionnaires de fenêtre
- Qt
Licences
Les distributions
- Les outils de mise à jour
- Organisation du disque
- Organisation multi disques
- Hiérarchie sur le disque
- Répertoire /usr et /var/etc/fstab
Les licences
- Objectif
- Free vs Open Source
- Avertissement
- L’objectif
- Les formes de licence
- Caractéristiques des licences libres
- Différences Open Source Licences libres
- Les principales licences de logiciels libres
Différences entre les licences
- GPL
- LGPL
- Apache
- X11
- Eclipse
- BSD
- Licences sur les contenus
Compilation
Compilation des sources
- Vérification d’intégrité
- Décompression des sources
- Git SVN CVS
- Commandes de base CVS/SVN/git
- Morphologies des programmes
- Rappel mécanisme de compilation
- Les Makefiles
- Configure
- Problèmes de compilation
- Les étapes de compilation
- Exemples
Les librairies
- Le principe des librairies
- Librairies statiques vs dynamiques
- Librairies dynamiques
- Edition de lien
- Utilisation des librairies
- Installation d’une librairie sous Debian
La librairie LibC
- Glibc
- Uclibc
- Eglibc
- Dietlibc
- Newlib
Jour 2
Le noyau
Présentation
- Versions
- Les sources
- Configuration du noyau
- Module / Kernel / None
- Avantages / désavantages des modules
- Commandes sur les modules
Configuration
- Make xconfig
- Make gconfig
- Make menuconfig
- Make nconfig
- Autres possibilités
- Les options de compilation du noyau
- Options de compilation (fin)
- Dépendances des options
- Select
- Les patches
- Niveaux de patch
Options de compilation
- La compilation
- Exercice : compiler un noyau
- Installation du noyau
- Installation des modules
- Disque minimal en RAM
- Fichier config
Busybox
Busybox
- Busybox : présentation
- Busybox : configuration
- Les commandes Busybox
- Ajouter des commandes à Busybox
- Finalisation d’ajout d’une commande
Raspberry
Architecture ARM
- Les processeurs ARM
- Quelques termes à connaître
- Les familles de processeurs ARM
- Les processeurs ARM9 et ARM10
- Les Cortex
Présentation de la carte
- Les cartes Raspberry
- Carte Raspberry PI 2
- Légendes
- OS disponibles
Installation de base
- Principe d’installation
- Copie de Raspbian sur la carte
Compilation croisée
Présentation
- Compilation croisée
- Machine hôte
- Les compilateurs C et C++
- Contenu d’une chaîne croisée
- Les binutils
- Les librairies de traitement mathématique
- Les entêtes du noyau
Compilation du compilateur
- Chaîne de compilation croisée
- Alternatives à la compilation croisée
- Les chaînes précompilées
- Les chaînes de fabrication de cross compilateurs
- Les composants de la chaîne
- Processus de fabrication de la chaîne soi-même
Jour 3
Buildroot
Présentation
- Utilisation de Buildroot
- Schéma de principe
- Aide
- Buildroot : principe
- Paquetages nécessaires à Buildroot
- Compilation de Buildroot
- Les paramètres qu’on peut ajouter
Utilisation
- Exécution
- Les fichiers générés
- Les fichiers .config
- Utiliser la Toolchain générée
- Utiliser une chaîne de compilation externe
Installation de la distribution
- Préparation de la carte Micro SD
- Agrandir la partition à toute la mémoire SD
- Divers problèmes classiques
- Le fichier de configuration du lanceur de la Raspberry
Jour 4
Customisation
Services supplémentaires
- Connexion sécurisée avec SSH et transferts de fichiers par SCP
- Serveur httpd de Busybox
- Ajout d’utilisateurs
- Ajout de programmes spécifiques
- Exécution de commandes ShellScript avant la génération de l’image
- Sed : édition d’un fichier
Paramètres spécifiques
- Clavier français
- Configuration de l’ordonnanceur
- Exemples lignes cron
- Fichier dtb - uboot - qemu
- qemu
- Compiler Buildroot pour qemu
Le kit Raspberry dans QtCreator
- Ajout de la chaîne de compilation dans QtCreator
- Ajout du device Raspberry
- Debug croisé avec la Raspberry
- Connaître la plateforme destination dans le fichier pro
- CMake avec Buildroot
Les fonctions de GDB
Techniques de débugage
- Présentation de gdb
- Savoir si un exécutable est compilé en mode débug
- Principe gdb
- Les commandes pas à pas
Affichage des variables
- Modification du contexte
- Print variable
- Autres affichages
Les points d’arrêt
- GDB : point d’arrêt
- Breakpoint - watchpoints - catchpoints
- Watchpoint
- Gestion des points d’arrêt
- Break avec liste de commandes
- Printf dynamique
- La pile d’appel
Débugage à distance
- Débugage du core via Eclipse
- Débug croisé
- Installation sur l’équipement distant
- Mise en route sur l’équipement host
- Remarques sur le débug croisé
- Mise en oeuvre sur Eclipse
Travaux pratiques
- Récupérer les sources du jeu Extrême Tux Racer Pro et le compiler
- Construction de la librairie glibc
- Compiler le noyau Linux
- Compiler Busybox
- Installation d’une image Raspberry PI prête à l’emploi
- Fabrication d’une Image avec compilation automatique des programmes
- Fabrication d’une Imageqemu avec compilation automatique des programmes
Modalités d’évaluation des acquis
En cours de formation, par des travaux pratiques. En fin de formation, par un questionnaire d’auto-évaluation.
Voir aussi
Vous serez peut-être intéressés par les formations suivantes :
Formation SYS-RASPI-100 — Raspberry Pi - Applications embarquées. Domaine : Systèmes. Niveau : Initiation. Durée : 4 jours (28 heures). Mots-clés : raspberry-pi, linux, embarqué, buildroot, arm. Cylian Formation, Dijon.