Site affiché en Français Voir le site en English (USA) Voir le site en English (GB)
Vous êtes ici: ac6 > ac6-formation > Linux > Linux embarqué

D1 Linux embarqué

Linux pour les systèmes embarqués

Objectifs
bullet_jaune_1 Utiliser les outils de développement natifs ou croisés
bullet_jaune_1 Personnaliser, réduire et configurer le noyau Linux
bullet_jaune_1 Embarquer Linux sur Flash EEPROM
bullet_jaune_1 Détailler la procédure de boot Linux
bullet_jaune_1 Monter un système de fichier distant
bullet_jaune_1 Booter un noyau Linux distant
bullet_jaune_1 Etudier les spécificités des noyaux 2.4 et 2.6
Les exercices se font sur des cartes cibles :
    Carte "SnowBall" de ST-Ericsson, basée sur un ARM Cortex/A9 double cœur, avec sonde JTAG Lauterbach.
    Carte à base de processeur ARM9 d'Atmel, avec sonde JTAG Lauterbach.
Nous utilisons le dernier noyau disponible sur www.kernel.org
Matériel
bullet_jaune_2 Un PC Linux par binôme
bullet_jaune_2 Une carte embarquée par binôme, au choix:
bullet_jaune_3 1 carte à base de PowerPC 405 GPr (KSBC 0405 de chez Ecrin)
bullet_jaune_3 1 carte à base d'ARM 926 (AT91SAM9261-EK de chez Atmel)
bullet_jaune_3 1 carte simulée (Qemu) à base d'ARM 926 (carte de référence "Versatile" de chez ARM)
bullet_jaune_2 Support de cours
bullet_jaune_2 CDROM avec documentation et outils utilisés
Pré-requis
bullet_jaune_2 Connaissance de Linux utilisateur

Plan
1er jour
Architecture de Linux
bullet_jaune_2 Présentation de Linux
bullet_jaune_2 Licences GPL et open source
bullet_jaune_2 Distributions Linux
bullet_jaune_2 Architecture et modularité de Linux
Les outils Linux pour l'embarqué
bullet_jaune_2 Les firmware/bootloader (Uboot, Redboot,...)
bullet_jaune_2 Les librairies adaptée à l'embarqué (uClibc, dietlibc,...)
bullet_jaune_2 Les IHM adaptées à l'embarqué (miniGUI, Qt/embedded, Nano-X,...)
bullet_jaune_2 Busybox, le "couteau suisse" de Linux embarqué
bullet_jaune_2 Les distributions spécialisées
bullet_jaune_3 Commerciales (MontaVista, Sysgo, Timesys, Windriver,...)
bullet_jaune_3 Open Source (ELDK, Koan, RTAI,...)
Les chaînes de compilation croisée
bullet_jaune_2 Chaînes complètes (ELDK, CodeSourcery, ...)
bullet_jaune_2 Outils de compilation de chaînes (Crosstool-ng, Buildroot, ...)
bullet_jaune_2 Compilation manuelle
Exercice : Construction d'une chaîne avec Crosstool-ng et avec Buildroot. Etude des différences.
2ème jour
Création du noyau Linux pour l'embarqué
bullet_jaune_2 Téléchargement des sources
bullet_jaune_2 Etude du Makefile du noyau
bullet_jaune_2 Configuration du noyau
bullet_jaune_2 Compilation du noyau et des modules
bullet_jaune_2 Installation des modules et du noyau
Etude du support des MTD dans Linux (Memory Technology Devices)
bullet_jaune_2 Les mémoires de type NOR
bullet_jaune_2 Les mémoires de type NAND
Exercice : Configuration et compilation d'un noyau Linux adapté à la cible
Création/modification du Board Support Package (BSP)
bullet_jaune_2 Etude des BSP ARM
bullet_jaune_3 Les numéros de machine ARM
bullet_jaune_3 Organisation des fichiers sources
bullet_jaune_3 Les Makefiles
bullet_jaune_3 Les fichiers de configuration
bullet_jaune_3 La struct machine_desc
Exercice : Modification du BSP pour le support et la partitionnement d'une mémoire NAND
Création du système de fichier racine
bullet_jaune_2 Périphériques, programmes, bibliothèques, ...
bullet_jaune_2 Installation des modules
bullet_jaune_2 Recherche et installation des bibliothèques dynamiques nécessaires
bullet_jaune_2 Vérification de la cohérence du système de fichier
bullet_jaune_2 Utilisation d'outils de génération de systèmes de fichiers racine embarqués (BuildRoot, LTIB, ...)
Exercice : Création d'un système de fichier racine avec Buildroot.
3ème jour
Choix du type de système de fichier
bullet_jaune_2 Ramdisk/initrd
bullet_jaune_2 Systèmes de fichier adapté aux flashs (JFFS2, UBIFS, ...)
bullet_jaune_2 Systèmes de fichier adaptés à l'embarqué (ROMFS, CRAMFS, ...)
bullet_jaune_2 Systèmes de fichiers compatibles "desktop" (EXT2, FAT)
Boot de Linux
bullet_jaune_2 Partionnement d'un disque Linux
bullet_jaune_2 Bootloaders (lilo, grub, U-boot...)
bullet_jaune_2 Paramètres du noyau au boot
bullet_jaune_2 Etapes de chargement et de démarrage du noyau
bullet_jaune_2 Choix des programmes lançés au démarrage (runlevels, services, suppression de l'IHM...)
Exercice : Partitionnement dynamique de la NAND
Exercice : Flashage du noyau et du système de fichier
Exercice : Boot depuis la mémoire flash
4ème jour
Développement croisé
bullet_jaune_2 Préparation de la machine hôte
bullet_jaune_3 Services réseau (DHCP, TFTP)
bullet_jaune_3 Partage du système de fichier (NFS)
bullet_jaune_3 Etude des outils de développement (gcc, gdb, les Makefiles)
bullet_jaune_3 Utilisation de l'IDE Eclipse pour la programmation et le debug croisé
bullet_jaune_2 Préparation de la cible
bullet_jaune_3 Téléchargement d'un noyau par TFTP
bullet_jaune_3 Démarrage sur un système de fichier distant (diskless)
bullet_jaune_3 Utilisation de gdbserver pour le debug distant
bullet_jaune_2 Utilisation de Qemu pour simuler une carte complète
Exercice : Installation d'une distribution complète sur carte PowerPC, ARM ou sur simulateur d'ARM (Qemu)
Exercice : Compilation, test et debug distant d'une application embarquée
Exercice : Compilation et installation de modules noyau indépendants
Exercice : Compilation croisé de paquetage