Linux 4e édition embarqué Nouvelle étude de cas Traite d OpenEmbedded Pierre Ficheux Éric Bénard
Un ouvrage de référence accompagné de deux études de cas Sans équivalent en français, cet ouvrage s ouvre par un panorama du marché de l embarqué et des solutions Linux existantes en les comparant aux alternatives propriétaires. Il indique ensuite la méthodologie à suivre pour construire, à partir du noyau Linux, un système embarqué adapté. Les règles d utilisation des licences GPL/LGPL pour les systèmes embarqués, ainsi que la prise en charge des dernières versions du noyau Linux (3.0 et supérieures) sont détaillées. L ouvrage décrit les derniers outils utilisés dans le monde Linux embarqué tels que l émulateur de matériel QEMU, l environnement de développement Buildroot et OpenEmbedded, le chargeur de démarrage Barebox, nouveau-venu après U-Boot, les extensions temps réel Xenomai et PREEMPT-RT, ou encore la bibliothèque graphique embarquée Qt4 développée par Nokia. En outre, un chapitre entier est dédié à l utilisation des outils de mise au point, tels que Ftrace/trace-cmd et KernelShark, KGDB, OProfile ou les sondes d émulation JTAG. Les exemples de l ouvrage portent sur l architecture ARM, aujourd hui la plus répandue pour les applications embarquées, mais également sur les processeurs x86, très présents au travers du processeur Intel Atom(r). La majorité des exemples décrits peuvent être directement exploités par le lecteur dans un environnement ARM9 émulé par l outil libre et gratuit QEMU. Cette quatrième édition est enrichie d un chapitre dédié à OpenEmbedded, d un chapitre détaillé sur le démarrage d une carte ARM, du bootloader à l application dans le cadre d une étude de cas complète. Au sommaire Les logiciels embarqués et leurs domaines d application. Panorama des systèmes existants : VxWorks, QNX, µc/os (microc OS) et µc/os II, Windows, LynxOS, Nucleus, VRTX, ecos Linux comme système embarqué. Contraintes des systèmes embarqués propriétaires. Systèmes embarqués basés sur le noyau Linux : Wind River Linux, MontaVista Linux, BlueCat Linux, ELDK, Android Choix du matériel. Architecture PC/86 ou non? Processeur : MMU ou non? Processeurs compatibles x86. Mémoire de masse. Bus d extension et de communication ISA et PCI. Port série, bus USB, I2C, SPI, FireWire. Cartes mères Structure du système Linux. Noyau, répertoires et fichiers principaux Environnement de développement. Choisir un système de développement. Chaîne de compilation croisée. Choix de la libc : Glibc, uclibc, Eglibc. ELDK, Crosstool, Crosstool-NG. Compilation et débogueurs. Autres outils de développement : EDI, émulateur de matériel, émulation de terminal Construction de la distribution. Choix du compilateur croisé et compilation du noyau. Création du système de fichiers racine basé sur Busybox. Partir d une distribution classique existante (Fedora) Configuration du réseau. Commandes ifconfig et route. Test d une application réseau (wget). Scripts de configuration du réseau. Configuration de PPP Chargeur de démarrage. Utilisation de GRUB, de Syslinux, de U-Boot, de Barebox Mémoire de masse et système de fichiers. Technologies des mémoires : RAM, ROM, flash Choix du support physique. CompactFlash, clé USBB, Disk OnModule. Utilisation du pilote MTD : Flash NOR ou NAND, architecture, configuration et mise en place, utilisation des formats CRAMFS et TMPFS et de mtd-utils Utiliser Buildroot Utiliser OpenEmbedded Outils de mise au point. Mise en place de traces avec syslog. Utilisation de strace et ltrace, utilisation de GBD. Outils de mise au point mémoire. Mise en œuvre d OProfile et de Ftrace Systèmes temps réel. Patch PREEMPT-RT. Utilisation d un co-noyau Interface homme-machine. La console et les terminaux. X Window System. Framebuffer de Linux. DirectFB. SDL. Toolkits graphiques. LCDproc. Pilotage à distance Étude de cas. Développer une interface homme-machine pour un équipement industriel. À qui s adresse cet ouvrage? Aux développeurs Linux et aux ingénieurs ayant à réaliser des systèmes embarqués. Aux décideurs et industriels ayant à choisir une solution pour leurs applications embarquées. P. Ficheux Ingénieur des Arts et Métiers, Pierre Ficheux est un linuxien de renom, initiateur de plusieurs sites Linux et auteur de nombreux tutoriels. Il a travaillé entre autres chez Red Hat et s est spécialisé dans les applications industrielles de Linux embarqué. Il est directeur technique d Open Wide, société de services spécialisée dans les technologies open source. Il est également enseignant, intervenant dans les options systèmes embarqués et temps réel pour l ENSEIRB-MATMECA (Bordeaux) et l EPITA (Paris). É. Bénard Ingénieur ENSEIRB, Éric Bénard développe des architectures électroniques propulsées par le noyau Linux et des Logiciels Libres depuis une dizaine d années. Il a créé Eukréa Electromatique en 2004, concepteur de cartes électroniques, fabricant de modules processeurs, ainsi que société de services spécialisée dans les Logiciels Libres embarqués. Il contribue notamment aux projets OpenEmbedded, Barebox ainsi qu au noyau Linux et dispense régulièrement des formations professionnelles. Conception : Nord Compo embarqué Code éditeur : G13482 ISBN : 978-2-212-13482-7 Linux 4e édition
Linux embarqué
Chez le même éditeur Dans la collection Les guides de formation Tsoft J.-F. Bouchaudy. Linux Administration. Tome 1 : les bases de l administration système. N 12624, 2 e édition, 2009, 270 pages. J.-F. Bouchaudy. Linux Administration. Tome 2 : administration système avancée. N 12882, 2 e édition, 2011, 504 pages. J.-F. Bouchaudy. Linux Administration. Tome 3 : sécuriser un serveur Linux. N 13462, 2 e édition, 2012, 400 pages. J.-F. Bouchaudy. Linux Administration. Tome 4 : les services applicatifs Internet (Web, email, FTP). N 12248, 2009, 400 pages. Autres ouvrages R. Hertzog, P. Habouzit. Mémento Git à 100%. N 13438, 2012, 18 pages (Collection Mémento). C. Blaess. Développement système sous Linux. Ordonnancement multitâches, gestion mémoire, communications, programmation réseau. N 12881, 3 e édition, 2011, 1004 pages (Collection Blanche). C. Blaess. Shells Linux et Unix par la pratique. N 12273, 2008, 262 pages (Collection Blanche). I. Hurbain, E. Dreyfus. Mémento Unix/Linux N 13306, 2 e édition, 2011, 14 pages. R. Stallman, S. Williams, C. Masutti. Richard Stallman et la révolution du logiciel libre. N 12609, 2010, 324 pages (Collection Accès libre). P. Hansteen, adapté par M. Derche. Le livre de Packet Filter (PF). N 12516, 2009, 194 pages (Cahiers de l Admin). J. Gabès. Nagios 3 pour la supervision et la métrologie. Déploiement, configuration et optimisation. N 12473, 2009, 482 pages (Cahiers de l Admin). R. Hertzog, R. Mas. Debian Lenny. Gnu/Linux. N 12443, 2009, 462 pages avec DVD-Rom (Cahiers de l Admin). B. Boutherin, B. Delaunay. Sécuriser un réseau Linux. N 11960, 3 e édition, 2007, 266 pages (Cahiers de l Admin). M. Krafft. Debian. Administration et configuration avancées. N 11904, 2006, 674 pages (Collection Blanche). M. Bäck et al. Monter son serveur de mails sous Linux. N 11931, 2006, 360 pages (Collection Accès libre). R. Stallman et al. Richard Stallman et la révolution du logiciel libre. Une biographie autorisée - Une initiative Framasoft. N 12609, 2010, 324 pages (Collection Accès libre). C. Blaess. Solutions temps réel sous Linux. N 13382, 2012, 294 pages (Collection Blanche).
Linux 4 e édition embarqué Nouvelle étude de cas Traite d OpenEmbedded Pierre Ficheux Éric Bénard
ÉDITIONS EYROLLES 61, bd Saint-Germain 75240 Paris Cedex 05 www.editions-eyrolles.com En application de la loi du 11 mars 1957, il est interdit de reproduire intégralement ou partiellement le présent ouvrage, sur quelque support que ce soit, sans l autorisation de l Éditeur ou du Centre Français d exploitation du droit de copie, 20, rue des Grands Augustins, 75006 Paris. Groupe Eyrolles, 2012, ISBN : 978-2-212-13482-7
Préface L informatique prend une part grandissante dans notre vie, et tout le monde est en train de prendre conscience de la très forte dépendance que nous avons développée sur Internet, le Web, les moteurs de recherche et les réseaux sociaux, qui étaient pourtant inconnus du grand public il y a seulement quinze ans. Mais pour un observateur averti, ceci n est que l une des facettes de l impact de l informatique sur notre monde : enfouis profondément dans des objets de tous les jours, on retrouve du logiciel pratiquement partout. Il y a évidemment les téléphones portables, qui se rapprochent chaque jour des ordinateurs portables, pour puissance et fonctionnalités, mais il y a aussi du logiciel très sophistiqué dans les voitures, les avions, les systèmes de contrôle commande, les machines industrielles, les lecteurs multimédias, les différentes «box» qui nous permettent de nous connecter à Internet, les téléviseurs, les appareils ménagers, les caisses des supermarchés, les guichets automatiques, etc. Ces logiciels, qu on appelle logiciels embarqués, ne sont pas tous soumis aux mêmes contraintes : s il existe bien une obligation de tout faire pour prévenir et éviter les erreurs dans le système de commande d un avion, il n est par contre pas rare d être obligé de redémarrer un téléphone, ce qui était inimaginable il y a quinze ans, et on sait qu un pourcentage significatif des pannes immobilisantes des voitures modernes sont d origine logicielle. Dans ce contexte, la généralisation de l usage de briques logicielles libres, et en particulier de noyaux de systèmes d exploitation comme Linux, peut contribuer à améliorer la qualité des logiciels embarqués : il devient possible de développer des pilotes adaptés pour des périphériques spécifiques, d apporter des modifications fines à des composants du noyau, de mutualiser une connaissance poussée entre développeurs d entreprises différents, d examiner le code du système, sans les entraves posées par les logiciels propriétaires.
VI Linux embarqué Cet ouvrage est une excellente introduction à ce domaine pour ceux qui s intéressent à l utilisation de Linux pour construire un système embarqué, en particulier pour l intégrer à un équipement industriel dédié : il présente de manière simple et pragmatique les concepts essentiels et donne de très nombreux exemples concrets qui permettent de se former en mettant «la main à la pâte». Roberto Di Cosmo, directeur du laboratoire de l IRILL (Initiative de Recherche et d Innovation pour le Logiciel libre), professeur en Informatique à l Université Paris Diderot Paris 7 Août 2010
Table des matières Avant-propos... 1 À qui s adresse ce livre?............................................. 1 Structure de l ouvrage............................................... 2 Précisions concernant les troisième et quatrième éditions................... 3 PREMIÈRE PARTIE Introduction à Linux et aux systèmes embarqués...5 CHAPITRE 1 Les logiciels embarqués et leurs domaines d application... 7 Qu est-ce qu un logiciel embarqué?.................................... 7 Caractéristiques des logiciels embarqués................................ 8 Logiciel embarqué ou système embarqué?.............................. 10 Les champs d application........................................... 11 Tour d horizon des systèmes existants................................. 13 VxWorks...................................................... 13 QNX........................................................ 13 µc/os (micro-c OS) et µc/os II.................................. 13 Windows..................................................... 14 LynxOS...................................................... 14 Nucleus....................................................... 14 VRTX....................................................... 14 ecos......................................................... 14 Conclusion...................................................... 15 CHAPITRE 2 Linux comme système embarqué... 17 Contraintes des systèmes embarqués propriétaires........................ 17 Les avantages de l open source....................................... 18 Les inconvénients................................................. 20 La crédibilité de l open source..................................... 21
VIII Linux embarqué Le support technique........................................... 21 La complexité des licences....................................... 23 La compatibilité ascendante...................................... 23 Pourquoi Linux est-il adapté à l embarqué?............................. 23 La fiabilité................................................... 25 Le faible coût................................................. 25 Les performances.............................................. 25 La portabilité et l adaptabilité..................................... 26 L ouverture.................................................. 27 Dans quels cas Linux peut-il être inadapté?............................. 28 Les systèmes embarqués basés sur le noyau Linux........................ 29 Wind River Linux............................................. 29 MontaVista Linux............................................. 29 BlueCat Linux................................................ 29 ELDK...................................................... 30 Android..................................................... 30 Conclusion...................................................... 31 CHAPITRE 3 Choix du matériel... 33 Choix d une architecture, PC/x86 ou non?............................. 33 La notion de MMU............................................... 36 uclinux : un noyau Linux sans MMU............................... 36 Les processeurs compatibles x86...................................... 37 Les autres architectures............................................ 38 La mémoire de masse.............................................. 39 Les bus d extension et de communication.............................. 40 Les bus d extension ISA et PCI................................... 40 Les ports série................................................ 40 Le bus USB.................................................. 41 Les autres bus : I2C, SPI, FireWire................................ 42 Quelques exemples de cartes mères................................... 42 Le projet Armadeus............................................ 42 Les cartes Eukréa.............................................. 43 Les cartes FOX (ACME Systems)................................. 43 Les cartes Pragmatec........................................... 44 Récupération de cartes existantes.................................. 44 Les formats Mini-ITX et Micro-ITX............................... 45 Le standard PC/104 (x86)....................................... 46 Conclusion...................................................... 47
Table des matières IX DEUXIÈME PARTIE Mise en place d un système Linux embarqué...49 CHAPITRE 4 Structure du système Linux... 51 Le noyau Linux................................................... 53 Structure globale du noyau....................................... 53 Les modules dynamiques du noyau................................. 54 Compilation du noyau.......................................... 59 Obtention et extraction des sources.................................. 59 Configuration du noyau.......................................... 62 Compilation et installation....................................... 68 Répertoires et fichiers principaux..................................... 69 Organisation générale........................................... 70 Le répertoire /dev.............................................. 72 Le système de fichiers /proc...................................... 72 Le système de fichiers /sys....................................... 75 Les niveaux d exécution ou run levels............................... 76 Les bibliothèques partagées...................................... 78 Le répertoire /var.............................................. 80 Conclusion...................................................... 80 CHAPITRE 5 Environnement de développement... 81 Choisir un système de développement................................. 81 Quelle distribution Linux?....................................... 82 Quels composants installer?...................................... 83 Utilisation d une machine virtuelle................................. 84 Utilisation de Cygwin........................................... 85 Autre choix possible : Mac OS X?................................. 91 La chaîne de compilation croisée..................................... 92 Le choix de la libc............................................. 95 Glibc......................................................... 95 uclibc........................................................ 96 Eglibc........................................................ 97 Utiliser ELDK................................................ 97 Utiliser Crosstool.............................................. 99 Description de la structure....................................... 100 Exemple de production d une chaîne ARM........................... 101 Utiliser Crosstool-NG......................................... 105
X Linux embarqué Exemples de compilation....................................... 108 Compilation d un noyau Linux.................................... 109 Débogueur GDB croisé.......................................... 109 Programme gdbserver........................................... 110 Débogueur GDB natif ARM..................................... 110 Utilisation d un fichier Makefile................................... 110 Les autres outils de développement.................................. 110 Utilisation d un EDI.......................................... 111 Émulateur de matériel......................................... 112 Quelques mots sur l émulateur QEMU.............................. 112 Mode utilisateur............................................... 113 Installation de QEMU.......................................... 114 Test de QEMU pour une application embarquée...................... 116 Quelques options utiles.......................................... 118 L émulation de terminal........................................ 119 Utilisation de screen............................................ 120 Utilisation de minicom.......................................... 120 Et maintenant?................................................. 123 CHAPITRE 6 Construction de la distribution... 125 Les éléments d une distribution Linux minimale........................ 126 Choix du compilateur croisé..................................... 126 Compilation du noyau......................................... 128 Création du système de fichiers racine................................ 130 Le coup du coucou!........................................... 131 Un système de fichiers racine basé sur Busybox....................... 134 Les problèmes des distributions classiques............................ 134 Busybox, la solution universelle de l embarqué........................ 134 Compiler et installer Busybox..................................... 136 Installer le répertoire /dev........................................ 139 Tester la distribution........................................... 139 Configuration de Busybox........................................ 140 Amélioration de l image......................................... 142 Authentification des utilisateurs................................... 146 Utilisation d un initramfs........................................ 150 Conclusions sur la construction du système de fichiers racine.............. 151 Partir d une distribution classique existante............................ 152 Adaptation d un Live-CD Fedora................................. 152 Conclusion..................................................... 156
Table des matières XI CHAPITRE 7 Configuration du réseau... 157 La commande ifconfig............................................ 158 La commande route.............................................. 161 Test d une application réseau (wget).................................. 161 Configuration du client DHCP sur la distribution.................... 162 Utilisation d un pont (bridge).................................... 166 Scripts de configuration du réseau................................... 169 Le script rc.inet1............................................. 171 Initialisation de l interface locale.................................. 171 Initialisation de l interface Ethernet, PPP ou PPPOE.................. 172 Calcul du fichier /etc/resolv.conf................................... 174 Nom de domaine et nom du système................................ 174 Arrêt des interfaces............................................. 175 Le script rc.inet2............................................. 175 Configuration de PPP............................................ 176 Validation du support PPP...................................... 177 Installation du programme pppd.................................. 177 Mise en place du répertoire /etc/ppp............................... 178 Passons aux choses sérieuses!....................................... 181 CHAPITRE 8 Le chargeur de démarrage... 183 Utilisation de GRUB............................................. 184 Nommage des périphériques..................................... 184 Mode interactif.............................................. 185 Fichier de configuration........................................ 185 Installation de GRUB sur une clé USB............................. 187 Création d une image ISO bootable avec GRUB...................... 189 Utilisation de Syslinux............................................ 190 Utilisation de U-Boot............................................. 191 Compilation de la version modifiée de QEMU....................... 192 Compilation de U-Boot........................................ 192 Installation et test de l image U-Boot sous QEMU.................... 193 Installation sur une carte réelle................................... 195 Les principes de U-Boot........................................ 196 La syntaxe de U-Boot.......................................... 197 Exemples de manipulation....................................... 197 Liste des principales commandes et variables......................... 198 Un premier exemple de démarrage de la carte........................ 199 Installation du serveur TFTP.................................... 200
XII Linux embarqué Configuration du serveur NFS.................................... 201 Paramétrage U-Boot pour NFS-Root.............................. 201 Démarrage automatique de la distribution........................... 203 Utilisation d un fichier de définition de variables...................... 204 Utilisation de Barebox............................................ 205 Compilation de Barebox........................................ 206 Installation et test de l image Barebox sous QEMU.................... 207 Utilisation de Barebox......................................... 216 Copie des fichiers sur le serveur TFTP.............................. 216 Téléchargement et programmation en flash........................... 216 Démarrage de Linux sur la carte................................... 218 En résumé.................................................... 219 Exploration des sources de Barebox............................... 220 Conclusion..................................................... 220 CHAPITRE 9 Mémoire de masse et système de fichiers... 221 Rappels sur les technologies des mémoires............................. 222 La mémoire RAM............................................ 222 La mémoire ROM............................................ 223 La mémoire flash............................................. 224 Choix du support physique......................................... 224 La CompactFlash............................................. 225 La clé USB................................................. 228 La carte Disk On Module...................................... 230 Utilisation du périphérique......................................... 230 Partitionnement.............................................. 230 Formatage.................................................. 231 Installation de la distribution.................................... 232 Installation du bootloader GRUB................................. 233 Utilisation du pilote MTD......................................... 234 Flash NOR ou NAND......................................... 235 Architecture du pilote MTD.................................... 236 Configuration et mise en place de MTD............................ 237 Paramétrage du noyau Linux..................................... 237 Découpage de la flash........................................... 239 Copie du noyau sur la flash....................................... 240 Installation du système de fichiers racine sur la flash.................... 241 Test du système................................................ 243 Utilisation du format CRAMFS.................................. 246 Cas d une flash NAND.......................................... 247
Table des matières XIII Utilisation du format TMPFS................................... 252 Utilisation de mtd-utils........................................ 254 Disponibilité dans ELDK-4.2.................................... 254 Génération à partir des sources.................................... 254 Exemple d utilisation........................................... 255 Conclusion..................................................... 257 TROISIÈME PARTIE Techniques avancées...259 CHAPITRE 10 Utiliser Buildroot... 261 Buildroot, une introduction........................................ 261 Qu est-ce que Buildroot?....................................... 262 Buildroot aujourd hui.......................................... 262 Quand utiliser Buildroot?...................................... 263 Installation et utilisation........................................... 263 Un premier test de génération.................................... 265 Création d une configuration prédéfinie............................ 271 Aperçu de la structure de Buildroot................................ 272 Système de gestion des paquets................................... 274 Exemple du paquet fbv.......................................... 276 Reconstruction des paquets....................................... 279 Ajout de paquets externes........................................ 279 Nouvelle syntaxe pour les paquets.................................. 283 Utilisation de Buildroot sur une véritable carte......................... 285 Ajout du support des cartes Pragmatec DEV2410..................... 287 Ajout de la prise en charge de Pragmatec dans les cibles.................. 287 Configuration U-Boot.......................................... 294 Configuration du noyau Linux................................... 294 Format des images de système de fichiers racine produites................ 296 Périphérique utilisé pour la console................................. 297 Cas d une chaîne de compilation externe............................. 298 Sauvegarde de la configuration.................................... 299 Test sur la carte DEV2410......................................... 300 Cas des dernières versions de Buildroot (2011, 2012).................... 300 Quelques exemples d utilisation.................................. 302 QEMU/Versatile PB........................................... 302 SODIMM2410............................................... 303 Eukréa CPUIMX51SD......................................... 303 Conclusion..................................................... 304
XIV Linux embarqué CHAPITRE 11 Utiliser OpenEmbedded... 305 OpenEmbedded, historique du projet................................ 305 Principe de base................................................. 308 Installation..................................................... 309 Prérequis................................................... 309 Téléchargement de l outil et préparation de l environnement............. 310 Premiers pas avec qemuarm..................................... 312 Exploration des répertoires...................................... 314 Organisation générale........................................... 314 Les métadonnées............................................... 315 L environnement de travail...................................... 316 Résultat de la construction........................................ 318 Test de l image avec QEMU.................................... 320 Concepts d OpenEmbedded....................................... 322 Le grand chef : bitbake......................................... 323 Le livre de recettes : OpenEmbedded.............................. 324 Éléments de syntaxe........................................... 325 À propos des tâches........................................... 327 Anatomie d une recette......................................... 329 Recette à partir de sources brutes................................... 329 Recette à partir de sources utilisant Autotools......................... 332 Recette de compilation d une application Qt.......................... 335 Premier projet avec OpenEmbedded................................. 337 Comment travailler avec OpenEmbedded?......................... 337 Sélection des couches............................................. 338 Création de la couche du projet.................................. 340 Création d une image personnalisée............................... 342 Génération d un SDK......................................... 343 Astuces utiles................................................ 344 Reconstruire un paquet.......................................... 344 Étude des dépendances........................................... 345 Dépôt de paquets............................................... 345 Libérer l espace disque........................................... 347 Travailler sans connexion Internet................................. 348 Construire une recette sans gestion de dépendances..................... 348 Que valent les variables d une recette?.............................. 349 Un problème, une solution, un patch................................ 349 Perspectives.................................................... 351 Documentation................................................. 353
Table des matières XV CHAPITRE 12 Outils de mise au point... 355 Quels outils de mise au point sous Linux?............................. 356 Mise en place de traces............................................ 357 Introduction à syslog.......................................... 358 Trace depuis un programme utilisateur.............................. 358 Trace depuis un module noyau.................................... 359 Configuration par /etc/syslog.conf.................................. 360 Cas de Busybox................................................ 361 Utilisation de strace et ltrace........................................ 362 Utilisation de GDB.............................................. 365 Mise au point avec gdbserver.................................... 367 Utilisation de l émulateur QEMU................................ 369 Mise au point du noyau Linux.................................... 370 Mise au point d un module dynamique.............................. 371 Mise au point du bootloader U-Boot............................... 375 Utilisation de KGDB.......................................... 377 Mise au point du noyau Linux.................................... 377 Utilisation d une sonde JTAG................................... 379 Mise en œuvre de la sonde BDI3000............................... 380 Outils de mise au point mémoire.................................... 385 Allocation de mémoire......................................... 386 Les outils disponibles.......................................... 387 Mise en œuvre d OProfile.......................................... 389 Installation d OProfile......................................... 389 Configuration d OProfile....................................... 389 Enregistrement des informations de profiling........................ 390 Production des résultats........................................ 391 Mise en œuvre de Ftrace........................................... 392 Ftrace ou LTT/LTTng?....................................... 393 Activation dans le noyau........................................ 393 Premières utilisations de Ftrace.................................. 393 Trace de fonction.............................................. 394 Trace d événement............................................. 395 Quelques utilisations plus avancées................................ 396 Exploitation des résultats....................................... 399 Utilisation de trace-cmd........................................ 400 Conclusion..................................................... 404
XVI Linux embarqué CHAPITRE 13 Systèmes temps réel... 405 Gestion du temps dans les systèmes d exploitation....................... 405 Système à temps partagé........................................ 406 Système temps réel............................................ 406 Test d une application temps réel sous Linux........................... 408 Description de l expérience...................................... 409 Développement du programme de test............................. 410 Configuration des options de préemption............................. 414 Modification de la politique d ordonnancement........................ 414 Le noyau Linux n est définitivement pas temps réel.................... 416 Le patch PREEMPT-RT......................................... 416 Modifications effectuées........................................ 417 Installation.................................................. 417 Test de performances.......................................... 418 Utilisation d un co-noyau.......................................... 420 RTLinux................................................... 421 RTAI..................................................... 422 Compilation et installation du noyau Linux modifié................... 422 Compilation et installation de la distribution RTAI................... 423 Test de la distribution........................................... 425 Xenomai................................................... 426 Architecture de Xenomai......................................... 426 ADEOS..................................................... 428 Structure et fonctionnement d une application Xenomai................. 429 Installation de Xenomai......................................... 431 Compilation et installation du noyau Linux modifié................... 431 Compilation et installation de la distribution Xenomai................. 432 Test de la distribution........................................... 433 Interface /proc................................................ 435 Prise en compte du multiprocessing (SMP)........................... 435 Adaptation de l exemple de test du port parallèle....................... 436 Introduction à RTDM......................................... 443 Test de Xenomai/ADEOS sur une architecture ARM................... 450 Conclusion..................................................... 452 CHAPITRE 14 Interface homme-machine... 453 La console et les terminaux......................................... 454 Configuration d une disposition clavier spécifique..................... 454
Table des matières XVII X Window System............................................... 455 Une introduction à X.......................................... 455 Adaptation du système X11..................................... 457 Le framebuffer de Linux........................................... 457 Configuration du framebuffer.................................... 458 Utilisation du framebuffer...................................... 459 Utilisation de DirectFB........................................... 461 Utilisation de SDL............................................... 463 Les toolkits graphiques............................................ 466 Qt/Embedded............................................... 466 Architecture de Qt/Embedded..................................... 467 Mise en place de Qt/Embedded.................................... 467 GTK+ sur framebuffer (GTK-DFB).............................. 475 La bibliothèque wxwidgets..................................... 475 Le toolkit EFL............................................... 475 LCDproc, une bibliothèque d affichage LCD.......................... 476 Pilotage à distance............................................... 478 Serveur et navigateur web....................................... 478 Nouvelles techniques du Web.................................... 479 Java........................................................ 480 Ajax........................................................ 480 Adobe Flash.................................................. 480 HTML5.................................................... 481 Conclusion..................................................... 481 CHAPITRE 15 Étude de cas... 483 Description du projet............................................. 483 Éléments composant le système..................................... 484 Le bootloader................................................ 484 Le noyau................................................... 500 Le système de fichiers racine..................................... 513 Le SDK.................................................... 521 L application................................................ 522 Le déploiement.............................................. 527 En résumé.................................................. 531 Index... 533