+ +
- -
Systèmes d'Exploitation
Calendrier  Détails
Programmation
 
Calendrier  Détails
Processeurs ARM
 
Calendrier  Détails
Processeurs PowerPC
 
 
 
 
Calendrier  Détails
Communications
 
Calendrier  Détails
+ +
> >
- -

 
ac6 >> ac6-formation >> Systèmes d'Exploitation >> Linux >> Linux embarqué Télécharger le catalogue Télécharger la page Ecrivez nous Version imprimable

D1 Linux embarqué

Construire et installer une plateforme Linux pour système embarqué

Construire et installer une plateforme Linux pour système embarqué
formateur
Objectifs
  • Comprendre l'architecture d'un système Linux
  • Créer et utiliser une chaîne de compilation croisée
  • Apprendre à installer Linux sur votre cible matérielle et écrire un BSP
  • Installer Xenomai pour le temps réel
  • Explorer l'architecture système de Linux
    • Boot de Linux
    • Initialiser le système
  • Installer des paquetages logiciels existant sur la cible
  • Apprendre à flasher Linux
Certains exercices se font sur des cartes cibles :
•  Carte "Sabre SDP" (SoC i.MX6Q de NXP, basée sur un ARM Cortex/A9 quadruple cœur).
•  Carte "PandaBoard ES" (SoC OMAP4460 de Texas Instruments, basée sur un ARM Cortex/A9 double cœur).
Nous utilisons le dernier noyau disponible sur www.kernel.org

Certains exercices se font en utilisant l'environnement de développement intégré System Workbench for Linux - Basic Edition.

Matériel
  • Un PC Linux par binôme
  • Une carte embarquée par binôme, au choix:
    • 1 carte à base de Cortex-a9 (Sabre de chez NXP ou PandaBoard de chez Texas Instruments)
    • 1 carte simulée (Qemu)
  • Support de cours fournis
Pré-requis
  • Bonne maîtrise du langage C
  • Connaissance de la programmation Linux en mode utilisateur (voir notre cours D0 - Programmation Linux)
  • De préférence, connaissance du noyau Linux et de la programmation de driver (voir notre cours D3 - Drivers Linux)

1er jour
Architecture de Linux
  • Linux
    • Histoire
    • Gestion de version
  • Les diverses licences utilisées par Linux (GPL, LGPL, etc)
  • Distributions Linux
  • Architecture et modularité de Linux
Les outils Linux pour l'embarqué
  • Les bootloaders (Uboot, Redboot, barebox)
  • Les librairies adaptée à l'embarqué (eglibc, uClibc)
  • Les IHM adaptées à l'embarqué
  • Busybox
Les chaînes de compilation croisée
  • Chaînes de compilation croisée pré-compilées
  • Outils de génération de chaînes de compilation croisée
    • Crosstool-ng
    • Buildroot
  • Compilation manuelle de chaîne de compilation croisée
Exercise :  Construction d'une chaîne de compilation croisée avec Crosstool-ng ou Buildroot
2ème jour
Le boot loader U-Boot
  • Introduction à U-Boot
  • Booter la carte à travers U-Boot
    • Booter depuis la NOR
    • Booter depuis la NAND
    • Booter depuis la eMMC
  • Variables d'environnement d'U-Boot
    • Variables définies par l'utilisateur
    • Variables prédéfinies
    • Substitution de variable
  • Le shell U-Boot minimal
    • Ecrire des scripts dans des variables
    • Exécuter des scripts
    • Utiliser des variables dans des scripts : le patron set-script
  • Principales commandes d'U-Boot
  • Booter un OS
    • Accéder aux flashs
    • Accéder aux systèmes de fichier (NFS, FAT, EXTx, JFFS2…)
  • Le shell U-Boot complet
    • Structure du script
    • Instructions de contrôle (if, for…)
Exercise :  Ecrire un script qui configure le réseau et passe cette information au noyau Linux
Exercise :  Booter la carte en NFS, en utilisant des images pré-existantes
Exercise :  Ecrire des scripts pour choisir entre booter depuis la flash ou le réseau
The U-Boot BSP
  • Construire et installer U-Boot
  • Porter U-Boot
    • Structure du source d'U-Boot
    • Ajouter une nouvelle carte aux sources d'U-Boot
    • Les drivers U-Boot (RS232, réseau, flash, SD/MMC)
    • Démarrage et initialisation de la carte dans U-Boot
Exercise :  Créer un BSP dans U-Boot et mettre en place le code d'initialisation
Exercise :  Examination d'un first-load program
Le boot de Linux
  • Paramètres du noyau Linux
  • La séquence de démarrage de Linux
  • Divers systèmes d'initialisation (busybox init, system V init, systemd)
  • Démarrer automatiquement un système embarqué
Exercise :  Booter Linux en démarrant automatiquement une application utilisateur
3ème jour
Créer le noyau Linux embarqué
  • Télécharger un code source stable
    • Obtenir une tarball
    • Utiliser GIT
  • Configurer le noyau
  • Compiler le noyau et ses modules
    • Modules internes aux sources de Linux (in-tree)
    • Modules externes aux sources (out-of-tree)
  • Installer le noyau et les modules
Exercise :  Configurer et compiler un noyau pour la carte cible
Le BSP Linux
  • Architecture du BSP Linux
    • Structure générale
    • Le BSP ARM
    • Le système de compilation de Linux
  • Définir et initialiser la carte
    • Programmatiquement (platform, i2c, spi, …)
    • En utilisant le Flattened Device Tree
Exercise :  Créer un BSP minimal pour la carte cible
Créer un système de fichier racine
  • Paquetages
    • Divers systèmes de compilation de paquetages (autotools, CMake, …)
    • Compiler un paquetage en croisée
  • Les applications tout-en-un
    • Busybox, les utilitaires basiques
    • Dropbear: communications cryptées(ssh)
  • Construire manuellement son système de fichier racine
    • Fichiers de périphérique, programmes et bibliothèques
    • Fichiers de configuration (réseau, udev, …)
    • Installer des modules
    • Chercher et installer les bibliothèques dont on a besoin
    • Tester la cohérence et la complétude du système de fichier
Exercise :  Configurer et compiler Busybox et Dropbear
Exercise :  Créer un système de fichier racine minimal en utilisant Busybox et Dropbear
4ème jour
Buildroot
  • Fonctionnement
    • Configuration de la chaîne de compilation
    • Sélection de paquetages
    • Configuration système (port série, remplissage de /dev, …)
    • Configuration du noyau et du boot-loader
    • Construire une image de système de fichier
  • Adaptation
    • Utiliser une chaîne de compilation pré-compilée
    • Ajouter un patch à un paquetage existant
    • Ajouter un nouveau paquetage
    • Utiliser un squelette de rootfs customisé
Exercise :  Construire un système de fichier racine avec Buildroot
Yocto
  • Fonctionnement
    • Architecture (OpenEmbedded Core, bitbake, layer)
    • Recettes et classes
    • Fichiers de configuration (local, machine et distribution)
    • Compiler une recette
  • Customisation
    • Rajouter un paquetage
    • Customiser un paquetage existant (fichiers .bbappend)
    • Créer un BSP (adapter Yocto à une carte donnée)
Exercise :  Construire un système de fichier racine avec Yocto
Systèmes de fichier embarqués
  • Interfaces de stockage
    • Péripéhrique bloc
    • MTD
  • Mémoires flash et MTDs Linux
    • flash NOR
    • flash NAND
    • flash ONENAND
  • Les divers formats de système de fichier pour flash
    • JFFS2, YAFFS2, UBIFS
  • Systèmes de fichier en lecture seule
    • CRAMFS, SQUASHFS
  • Systèmes de fichier standards de Linux
    • Ext2/3/4, FAT, NFS
  • Ramdisks et initrd
    • Créer un initramfs
    • Booter à travers un initramfs
  • Choisir les bons formats de système de fichier
  • Flasher le système de fichier
Exercise :  Construire un système de fichier racine de type initrd
Annexes
Xenomai
  • solutions temps-réel pour Linux
    • xenomai
    • patch temps-réel
  • architecture de Xenomai
    • co-kernel
    • skins
    • drivers RTDM
  • installation
    • installer Xenomai
    • cross-compiler une application Xenomai
Exercise :  installer Xenomai 3.x
Exercise :  mesurer les temps de latence
Exercise :  cross-compiler une application Xenomai
Développement croisé
  • Préparation de la machine hôte
    • Services réseau (DHCP, TFTP)
    • Partage du système de fichier (NFS)
    • Etude des outils de développement (gcc, gdb, les Makefiles)
    • Utilisation de l'IDE Eclipse pour la programmation et le debug croisé
  • Préparation de la cible
    • Téléchargement d'un noyau par TFTP
    • Démarrage sur un système de fichier distant (diskless)
    • Utilisation de gdbserver pour le debug distant
  • Utilisation de Qemu pour simuler une carte complète
Le système de gestion de sources distribué GIT
  • Installation et utilisation générale
    • Créer et utiliser un dépôt local
    • Cloner un dépôt distant
    • Accéder à des dépôts distants à travers un proxy
  • Utiliser des branches
    • Création d'une nouvelle branche
    • Fusionner des branches
  • Fonctionnalités de travail par équipe
    • Créer, configurer et gérer un dépôt public
    • Utiliser des patch