|
|
|
|
| 1er jour |
| Architecture de Linux |
 |
Présentation de Linux |
 |
Licences GPL et open source |
 |
Distributions Linux |
 |
Architecture et modularité de Linux |
| Les outils Linux pour l'embarqué |
 |
Les firmware/bootloader (Uboot, Redboot,...) |
 |
Les librairies adaptée à l'embarqué (uClibc, dietlibc,...) |
 |
Les IHM adaptées à l'embarqué (miniGUI, Qt/embedded, Nano-X,...) |
 |
Busybox, le "couteau suisse" de Linux embarqué |
 |
Les distributions spécialisées |
|
 |
Commerciales (MontaVista, Sysgo, Timesys, Windriver,...) |
|
 |
Open Source (ELDK, Koan, RTAI,...) |
| Les chaînes de compilation croisée |
 |
Chaînes complètes (ELDK, CodeSourcery, ...) |
 |
Outils de compilation de chaînes (Crosstool-ng, Buildroot, ...) |
 |
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é |
 |
Téléchargement des sources |
 |
Etude du Makefile du noyau |
 |
Configuration du noyau |
 |
Compilation du noyau et des modules |
 |
Installation des modules et du noyau |
| Etude du support des MTD dans Linux (Memory Technology Devices) |
 |
Les mémoires de type NOR |
 |
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) |
 |
Etude des BSP ARM |
|
 |
Les numéros de machine ARM |
|
 |
Organisation des fichiers sources |
|
 |
Les Makefiles |
|
 |
Les fichiers de configuration |
|
 |
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 |
 |
Périphériques, programmes, bibliothèques, ... |
 |
Installation des modules |
 |
Recherche et installation des bibliothèques dynamiques nécessaires |
 |
Vérification de la cohérence du système de fichier |
 |
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 |
 |
Ramdisk/initrd |
 |
Systèmes de fichier adapté aux flashs (JFFS2, UBIFS, ...) |
 |
Systèmes de fichier adaptés à l'embarqué (ROMFS, CRAMFS, ...) |
 |
Systèmes de fichiers compatibles "desktop" (EXT2, FAT) |
| Boot de Linux |
 |
Partionnement d'un disque Linux |
 |
Bootloaders (lilo, grub, U-boot...) |
 |
Paramètres du noyau au boot |
 |
Etapes de chargement et de démarrage du noyau |
 |
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é |
 |
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 |
| 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 |