1

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

1er jour

Introduction à la formation Linux

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 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

Exercice : Construction d’une chaîne de compilation croisée avec Crosstool-ng
Les outils Linux pour l’embarqué

    • Les bootloaders (Uboot, Redboot, barebox)
    • Les librairies adaptées à l’embarqué (eglibc, uClibc)
    • Les IHM adaptées à l’embarqué
    • Busybox

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…)

Exercice: Ecrire un script qui configure le réseau et passe cette information au noyau
Linux

Exercice: Booter la carte en NFS, en utilisant des images pré-existantes

Exercice: Ecrire des scripts pour choisir entre booter depuis la flash ou le réseau

2è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

Exercice: 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

Exercice: 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

Exercice: Configurer et compiler Busybox et Dropbear

Exercice: Créer un système de fichier racine minimal en utilisant Busybox et Dropbear

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é

Exercice: Booter Linux en démarrant automatiquement une application utilisateur

3ème jour

Systèmes de fichier embarqués

    • Interfaces de stockage
      • Périphérique 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
    • 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

Exercice: Construire un système de fichier racine de type initrd

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é

Exercice: Construire un système de fichier racine avec Buildroot

4ème jour

Introduction à Yocto

    • Présentation de Yocto
      • Histoire
      • Yocto, Open Embedded et Poky
      • Objetif du projet Yocto
      • Les principaux projets
    • Architecture Yocto
      • Aperçu
      • Recettes et classes
      • Les tâches

Exercice: Exercice : Utiliser les commandes bitbake pour compiler des packages et des
images

Structure des recettes du package Yocto

    • Objectifs du système de compilation
      • Construire des images déployables
      • Couches et priorités de couches
      • Mise en page de l’annuaire
      • layout des dossiers
      • Fichiers de configuration (local, machine et distribution)
      • L’outil bitbake
    • Ajouter un nouveau layer
      • Structure de la couche (Layer)
      • Différents types de couches (Layer)

Exercice: Ajouter un nouveau layer

Exercice: Ajouter une nouvelle recette

5ème jour

Linux temps-réel

    • solutions temps-réel pour Linux
      • xenomai
      • patch rt preempt
    • architecture de Xenomai
      • co-kernel
      • skins
      • drivers RTDM
    • architecture de Xenomai
      • installer Xenomai
      • cross-compiler une application Xenomai

Exercice: installer Xenomai 3.x

Exercice: mesurer les temps de latence

Exercice: cross-compiler une application Xenomai

Le BSP U-Boot

    • Portage de U-Boot
      • Structure de code source U-Boot
      • Ajouter une nouvelle carte aux sources U-Boot
      • Drivers U-Boot (RS232, réseau, flash, SD / MMC)
      • Démarrage U-Boot et initialisation de la carte

Exercice: Création d’un BSP dans U-Boot et configuration du code d’initialisation