http://www-adele.imag.fr/users/didier.donsez/cours Linux pour les systèmes embarqués Didier DONSEZ Université Joseph Fourier Grenoble 1 PolyTech Grenoble LIG/ADELE Didier.Donsez@imag.fr, Didier.Donsez@ieee.org
Linux pour l embarqué Inconvénients Empreinte mémoire minimum : 4 Mo Problème GPL/LGPL Standard 2
Différentes approches Création d une distribution from scratch de la distribution standard (Linus Torvald) Explications: http://www.linuxfromscratch.org/ http://www.kernel.org Puis make xconfig Produit commercial Outil de création/ gestion de projet graphique Vente du support technique (bug, drivers, ) Embedix (Embedix Inc.; http://www.embedix.com/) BlueCat Linux (LynuxWorks; http://www.linuxworks.com/) MontaVista Linux ( ex Hard Hat Linux http://www.mvista.com/) Embedded Linux (Red Hat; http://www.redhat.com/) Choix d un outil libre PeeWee Linux, Embedded Debian Project, ETLinux, uclinux 3
Distribution embarquée PeeWee Linux RT/Linux RT/AI MontaVista: SOftRT µclinux Blue Cat 4
Empreinte mémoire Embarqué typique Embarqué très embarqué µclinux Sans MMU 5
Facteurs de forme (Form factor) PC 104 (90x96 mm) Empilable par un bus ISA 104 broches x86 (386/25 au PIII/700) ou autre 16 Mo RAM ou plus CompactFlash/miniDD RS232/CAN/Ethernet VGA parfois Basse consommation PC104+ Comporte un bus PCI (120 broches) en plus CompactPCI (170x170mm), Micro-ITX (170x170mm), Nano-ITX (120x120mm) PC de bureau + ports complet DIL Dual In Line (82x28mm) SIMM (30 broches) Dédié PC104 Quand on peut en produit des dizaines de milliers! (console de jeux, ) Quand la forme est importante : portable, caméscope, 6
Facteurs de forme (Form factor) Exemple en boîtier industriel 7
Langages utilisés Assembleur depuis longtemps C/C++ (gcc Os), shell (version réduites: ash, msh), HTML/CGI (mhttpd) Perl, Python, Tcl/Tk peu utilisé à cause de la taille BusyBox: version simplifiée des commandes UNIX+shell Java J2ME / CDC ou CDLC 8
Phases de contruction d un système Optimisation de la procédure de démarrage <10s en général Réduction drastique du nombre de commandes disponibles et des bibliothèques partagées Optimisation du noyau en fonctionnalités nécessaires Réduction et simplification du nombre de fichiers et répertoires de configuration comme /etc Suppression du système de swap Surtout si c est de la flash 9
Optimisation du démarrage 1. Boot du système par LILO ou équivalent 2. Chargement du noyau 3. Lancement par le noyau du processus /sbin/init 4. Lecture de /etc/inittab par le processus init qui contient en general le nom du script runlevel rcx.d Rc.S effectue les actions suivantes Démarrage de /sbin/update destiné à vider les buffers mémoire 10
Réduction du nombre de commandes et de bibliothèques Graphe de dépendance direct donné /usr/bin/ldd et chroot Mklibs.sh (DEBIAN) v d /mnt/emb/lib bin/* sbin/* Recompiler les packages Os, pas de PAM (Pluggage Authentication Module) Ash plutot que bash Attention aux bibliotheque chargées a l execution non visibles (dlopen) Configuration du /etc et /dev Peu volumineux 11
Optimisation du noyau Ne jamais utiliser la configuration standard du noyau Il faut recompiler le noyau http://www.kernel.org/pub/linux/kernel/v2.4/ Eviter les distributions contructeurs car il faudra appliquer les patchs!!! Pilote péripherique non utilisée Pilote de FS non utilisé MSDOS, VFAT, Voir instructions dans les commentaires 12
Mimimun Si application unique LILO: linux init=/bin/mon_programme Utilisation d un RAMDisk si pas de probleme de perte de données 13
Interface graphique Concerne une partie des systèmes embarqués STB, TV Numérique, PDA, Smart Phone Pas pour les serveurs FTPD, XFree86 : plusieurs méga quand même Mais Mode VESA Frame-Buffer Linux Qt/Embedded QT base de KDE Saurus de Sharp (GPL) -> applications doit etre GPL Micro-Windows/Nano-X GTK DILLO Mini brouteur HTML 14
Config Statique /boot vmlinux Dynamique /lib/module On ne peut laisser que les modules nécessaires Q: statique/module + Module: maj pour faible surcout mem 15
Choix d un système de fichiers (File system) Systèmes de fichiers journalisés résistant aux arrêts imprévus Ext3 Évolution de Ext2. Compatible Ext2 ReiserFS Performant mais partition >32Mo JFFS2 Adapté aux mémoires Flash SF pour ROM Car tient compte de la dégradation du point mémoire Flash lors des écritures CRAMFS (Compressed ROM FS) ROM, Image ISO du CRROM, Read only, compression zlib - fichier < 16Mo, partition < 256Mo RAMDisk + accès rapide, + coût inférieure de la RAM / FlashRAM Parfois RAM sauvegardée par pile (TINI) 16
Amorçage du noyau LILO GRUB LoadIn LinuxBIOS RedBoot 17
Mise au point JTAG (Joint Test Advisory Group) IEEE1149.1 Interface de test pour système enfoui, ASIC, http://www.temento.com/ftestinto.htm 18
Linux et Temps-Réel 19
Standardisation Linux embarqué consortium ELC (Embedded Linux Consortium) http://www.embedded-linux.org/ Acteurs IBM, 20
µclinux http://www.uclinux.org/ Portage du noyau Linux Cibles: µp et µc 16-bits et 32-bits sans MMU Motorola 683xx, Motorola ColdFire, Intel i960 d Intel, ARM7TDMI, Altera NIOS, Empreinte mémoire Noyau inférieure à 512 Ko. Noyau + commandes Linux inférieures à 900 Ko. Limitations d usage Pas de mémoire virtuelle Pas de espace protégé (overflow possible) Pile fixé pour chaque processus (pas de sbk()) Pas de fork() mais vfork() L appelant est bloqué du exec() jusqu au exit() Image binaire d un processus < 256Ko Outils de développement GNU gcc, gdb, Portage de shells, serveur Web, Pile TCP/IP complète 21
Bibliographie Karim Yaghmour,»Building Embedded Linux Systems», Ed O'Reilly, April 2003, ISBN 0-596-00222-X, p416 Un des plus détaillés Pierre Ficheux, «Linux embarqué», Eyrolles, 2005, 2 ème édition, ISBN : 2-212- 11674-8 En français Dr. Craig Hollabaugh, "Embedded Linux: Hardware, Software and Interfacing", Ed Addison Wesley Professional, ISBN: 0672322269 John Lombardo, "Embedded Linux", Ed New Riders Publishing 07/2001, 0-7357-0998-X, http://safari.informit.com/?xmlid=0-7357-0998-x Abbott, "Linux for Embedded and Real-Time Applications", Ed Butterworth- Heinemann, (September 2002), ISBN: 0750675462 Daniel P. Bovet, Marco Cesati, "Understanding the Linux Kernel", 2nd Edition, Ed O'Reilly, December 2002, ISBN : 0-596-00213-0, Pages : 784 La bible sur les internes du noyau!! Claudia Salzberg Rodriguez, Gordon Fischer, Steven Smolski, Linux Kernel Primer, The: A Top-Down Approach for x86 and PowerPC Architectures, Prentice Hall, Date: September 19, 2005, ISBN-10: 0-13-118163-7 22
Webographie Livre «Linux From Scratch» en Ligne (et en français) http://www.fr.linuxfromscratch.org/view/lfs-5.0-fr/ Liste des devices EL http://www.linuxdevices.com/ 23
Linux sur une disquette (d apres Kadionik) Tom s Boot Root http://www.toms.net/~toehser/rb Boot/root rescue/emergency floppy image with more stuff than can fit. Bzip2, 1722Mb formatting, and tight compilation options helped jam a lot on. It is useful for "learn unix on a floppy" as it runs from ramdisk, includes the manpages for everything, and behaves in a generally predictable way. Linux Router Project :(IS DEAD) http://www.linuxrouter.org LRP is small enough to fit on a single 1.44MB floppy disk, and makes building and maintaining routers, access servers, thin servers, thin clients, network appliances, and typically embedded systems next to trivial. 24