Training Programmation Linux embarqué: Installation de Linux embarqué et programmation utilisateur - Operating Systems: Linux NX1 - Programmation Linux embarqué Installation de Linux embarqué et programmation utilisateur Objectifs Comprendre l'architecture de Linux Embarquer Linux sur cible embarquée Détailler la procédure de boot Linux Personnaliser, réduire et configurer le noyau Linux Monter un système de fichier distant Booter un noyau Linux distant Utiliser le shell Linux et écrire des scripts Utiliser les outils de développement natifs ou croisés Programmer des applications Linux Programmation multi-tâches et temps réel Communications inter-processus Entrées-sorties Réseau Matériel Un PC Linux par binôme Une carte embarquée à base d'ARM 926 par binôme Support de cours CDROM avec documentation et outils utilisés Pré-requis Bonne maîtrise de la programmation en C, si possible en environnement embarqué Plan Premier jour Architecture de Linux Présentation de Linux Licences GPL et open source Distributions Linux Architecture et modularité de Linux NX1 - Programmation Linux embarqué Linux et le temps réel défauts de Linux en temps réel les évolutions de la version 2.6 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é, et ses "cousins" TinyLogin, EmbUtils, ... Les distributions spécialisées Commerciales (MontaVista, Sysgo, Timesys, Windriver, ...) Open Source (ELDK, Koan, RTAI,...) Les outils de génération de chaines croisées (Buildroot, ELDK, ...) Exercice: Utilisation de "buildroot" pour compiler une chaîne de développement croisée utilisant uClibc Création du système de fichier racine Contenu du système de fichier racine Périphériques, programmes, librairies... Installation des modules Recherche et installation des librairies dynamiques nécessaires Vérification de la cohérence du système de fichier Choix du type de système de fichier Ramdisk/initrd Systèmes de fichier adapté aux flashs (JFFS2) Systèmes de fichier adaptés à l'embarqué (ROMFS, CRAMFS) Systèmes de fichiers compatibles "desktop" (EXT2, FAT) Utilisation d'outils de génération de systèmes de fichiers racine embarqués (BuildRoot, OpenEmbedded, TLIB, ...) Exercice: Création d'un système de fichier racine minimal "à la main" Exercice: Création d'un système de fichier racine complet avec busybox Deuxième jour Boot de Linux Partionnement d'un disque Linux Bootloaders (lilo, grub, syslinux, U-boot, Redboot, ...) 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: Installation d'une distribution autonome sur la cible embarquée Exercice: Ajout de programmes et de services lançés au démarrage de busybox Développement croisé Préparation de la machine hôte Services réseau (DHCP, TFTP) Partage du système de fichier (NFS) Compilation et installation d'une chaîne de développement croisé pour ARM 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 Exercice: Installation d'une distribution complète sur carte ARM ou sur simulateur d'ARM (Qemu) Exercice: Test et debug distant d'une application embarquée 04/25/17 NX1 - Programmation Linux embarqué Le développement d'applications Le shell Linux (bash) utilisation interactive gestion des jobs les scripts Exercice: Création d'un script shell L'éditeur vi Développement d'applications outils de compilation librairies standard makefile environnements intégrés (Eclipse, ...) Exercice: Ecriture d'un programme simple Debug d'applications utilisateur le debugger gdb et son intégration dans Eclipse et DDD les autres outils de debug (gprof, gcov, strace, ...) Gestionnaire mémoire utilisateur (malloc/free) Erreurs d'allocations fuites mémoire accès à de la mémoire non initialisée accès à de la mémoire libérée outils de détection des erreurs mémoire (Mtrace, Mcheck, Electric Fence, Valgrind) Exercice: Détection de fuites mémoire Développement de librairies statiques partagées debug des accès aux librairies partagées avec ltrace Exercice: Ecriture d'une bibliothèque et de son programme de test - version statique - version dynamique Troisième jour Entrées-sorties et réseau Entrées sorties standard fichiers disques fichiers d'E/S Programmation réseau sockets protocoles UDP et TCP Exercice: Ecriture d'une application client-serveur réseau - en utilisant TCP - en utilisant UDP Entrées-sorties asynchrones multiplexées notifiées Accès au matériel en mode utilisateur Espaces I/O du processeur I/O en mémoire Bus PCI Exercice: Utilisation des E/S asynchrones dans le serveur pour gérer plusieurs connections en parallèle 04/25/17 NX1 - Programmation Linux embarqué 04/25/17 Signaux et gestion du temps Gestion de signaux Entrées-sorties asynchrones notifiées Horloge temps réel Timers utilisateurs Exercice: Gestion de timeouts à l'aide de timers utilisateurs Quatrième et cinquième jours Programmation Multitâches Les processus concept de processus état des processus le "fork" et l'"exec" sécurité des processus Gestion mémoire par le noyau gestion de la mémoire par la MMU pagination et protection Les threads threads utilisateur et noyau threads POSIX Ordonnancement la communtation de contexte stratégies d'ordonnancement L'architecture SMP Exercice: Création d'un serveur réseau multi-connections - version multi-process - version multi-threads Communication entre tâches et processus (IPCs) Communication entre tâches Pipes Boites aux lettres Mémoire partagée Synchronisation des tâches sémaphores mutex signaux Les IPCs System V (annexe) Exercice: Extension du serveur réseau pour partager des données entre les divers threads ou process; maintient de statistiques - par connection - globales. Renseignements pratiques Duration : 5 jours Cours intra-entreprise : Nous consulter pour dates et tarif SARL au capital de 138600 € - SIRET 449 597 103 00026 - RCS Nanterre - NAF 722C - Centre de Formation : 19, rue Pierre Curie - 92400 Courbevoie Siège social et administration : 21, rue Pierre Curie - 92400 Courbevoie - Tél. 01 41 16 80 10 - Fax. 01 41 16 07 78 Last site update: Tue Apr 25 11:25:25 2017 http://www.ac6-formation.com/