Training Programmation Linux embarqué - ac6

publicité
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/
Téléchargement