Présentation
Auteur(s)
-
Pierre FICHEUX : Ingénieur arts et métiers - Directeur technique chez Open Wide Ingénierie - Enseignant à l'ENSEIRB (Bordeaux) - Enseignant et responsable de la majeure GISTRE (Génie informatique des systèmes temps réel et embarqués) à l'EPITA (Paris)
Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.
Lire l’articleINTRODUCTION
Lorsque Linus TORVALDS, alors jeune étudiant de l'Université d'Helsinki publie sur Internet, en juillet 1991, son premier message concernant le développement balbutiant de son noyau UNIX libre, il ne se doute certainement pas qu'à l'instar d'autres célébrités de la technologie comme Steve JOBS ou Bill GATES, il est sur le point de changer le monde.
Linux est un système d'exploitation multitâche de la famille UNIX. Il fut initialement développé sur processeur de type Intel x86 (386 et 486), mais il a depuis été adapté sur un grand nombre d'architectures matérielles comme les PowerPC, ARM, SH4 et désormais des processeurs industriels spécialisés comme Nios II, MicroBlaze ou Blackfin. Au final, 25 architectures sont supportées par la version officielle du noyau Linux.
Linux est conforme au standard POSIX (Portable Operating System Interfaces), ce qui signifie que les sources développées sous Linux peuvent être compilées facilement sur d'autres systèmes d'exploitation compatibles POSIX. Linux est également réputé pour sa grande interopérabilité, c'est-à-dire qu'il peut facilement s'intégrer dans un système informatique complexe utilisant d'autres systèmes d'exploitation. Le code source du noyau Linux est disponible librement sur le réseau Internet, tout en respectant la licence GPL définie pour le projet GNU.
Initialement, le logiciel embarqué était un marché spécialisé totalement dominé par des éditeurs de taille modeste (comme Wind River, éditeur du système VxWorks, fondée en 1981), pratiquant des coûts de licence très élevés du fait du faible volume de production qui se résumait aux applications militaires, spatiales et industrielles en général. Les contraintes du logiciel embarqué sont très différentes de celles du logiciel classique, en particulier sur la notion de durée de vie du logiciel, bien plus importante. À titre d'exemple, le télescope spatial Hubble utilisant le système d'exploitation VRTX tourne – au sens propre – depuis 1990.
Au début des années 2000, Linux est déjà très utilisé dans le monde des serveurs et ce directement en concurrence avec les solutions Microsoft. Déjà à l'époque, de nombreux développeurs et utilisateurs de Linux pensent que ce dernier peut être utilisé pour des solutions industrielles et embarquées et ce de par sa fiabilité, la disponibilité de son code source et bien sûr son coût de redistribution nul. L'évolution de l'informatique embarquée vers le multimédia de par la généralisation de l'accès à Internet a depuis permis à Linux de devenir un acteur majeur dans le domaine puisque les systèmes d'exploitations embarqués propriétaires n'étaient pas adaptés à ces fonctionnalités.
Les équipements d'accès à Internet set-top box utilisent majoritairement des systèmes d'exploitation basés sur Linux, citons les Freebox, Neufbox, BBox et autre Livebox. De nombreux smartphones utilisent également Linux au travers de systèmes comme Android (Google) ou plus récemment Bada (SAMSUNG). Même si Windows CE est très présent dans le domaine des équipements graphiques comme les GPS, certains modèles (TomTom) sont également basés sur Linux.
La connaissance de ce système et des spécificités des versions embarquées et industrielles est désormais une nécessité pour les entreprises – et donc les ingénieurs – des domaines concernés, qu'ils soient fabricants de matériel électronique, éditeurs de logiciels, de solutions de développement ou d'exploitation.
La compréhension de ce dossier est facilitée si le lecteur est déjà un utilisateur du système Linux. Cependant, nous effectuerons quelques rappels nécessaires pour le plus grand nombre de lecteurs. Nous décrirons la réalisation d'une véritable distribution Linux utilisable sur une cible x86 ou bien ARM9.
VERSIONS
- Version courante de août 2019 par Pierre FICHEUX
DOI (Digital Object Identifier)
CET ARTICLE SE TROUVE ÉGALEMENT DANS :
Accueil > Ressources documentaires > Archives > [Archives] Technologies logicielles et architecture des systèmes > Linux embarqué > Architecture d'un système Linux embarqué
Cet article fait partie de l’offre
Automatique et ingénierie système
(138 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Présentation
4. Architecture d'un système Linux embarqué
Il n'y a pas de différence de structure notable entre un système Linux classique (Fedora, Ubuntu, Debian...) et un système Linux embarqué mise à part un certain nombre d'optimisations dont le choix très sélectif des composants indispensable. En effet, l'inflation de l'espace disponible à la fois sur la mémoire vive – plusieurs gigaoctets – et les disques durs – plusieurs téraoctets – fait qu'une bonne partie des composants installés sur un PC/x86 de développement est en fait inutile. Il n'en est rien pour un système embarqué. Les smartphones les plus récents disposent de quelques gigaoctets de mémoire flash et de quelques centaines de mégaoctets de mémoire vive, ce qui fait qu'une optimisation rigoureuse est nécessaire.
4.1 Structure du système Linux
À quelques exceptions près, la structure du système Linux est calquée sur celle des autres systèmes UNIX, à savoir :
-
un noyau ou kernel réalisant les fonctions essentielles comme la gestion des tâches et de la mémoire, ainsi que l'interfaçage entre le matériel et les applicatifs, grâce – entre autres – aux pilotes de périphériques, plus souvent nommés device drivers ;
-
les exécutables du système, dont certains sont indispensables. Nous évoquons plus loin l'exécutable init ou l'interpréteur de commandes sh ;
-
l'ensemble des bibliothèques utilisées par les applicatifs. À minima, on doit disposer de la bibliothèque libc contenant les fonctions de base utilisées dans le cas du développement C/C++. Dans le cas de Linux, la référence est la Glibc, mais nous évoquons d'autres versions par la suite.
La structure du système est décrite sur la figure 2.
Aux éléments décrits précédemment, il faut ajouter un programme de démarrage ou bootloader. Pour l'architecture x86, le plus fréquent est GRUB (Grand Unified Bootloader ). Dans les cas des autres architectures comme ARM ou PowerPC, on utilise très fréquemment U-Boot (Universal Bootloader ).
HAUT DE PAGE4.2 Démarrage du système
Le schéma de démarrage d'un...
Cet article fait partie de l’offre
Automatique et ingénierie système
(138 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Architecture d'un système Linux embarqué
BIBLIOGRAPHIE
-
(1) - FICHEUX (P.) - Linux embarqué. - Troisième édition, Eyrolles (2010).
-
(2) - YAGHMOUR (K.) - Building embedded linux systems. - O'Reilly (2008).
-
(3) - SALLY (G.) - Pro Linux embedded systems. - Apress (2010).
-
(4) - STALLMAN (R.) - R. Stallman et la révolution du logiciel libre. - Eyrolles (2010).
DANS NOS BASES DOCUMENTAIRES
ANNEXES
FAQ de la licence GPL http://www.gnu.org/licences/gpl-faq.html
Conférence de Richard Stallman en janvier 2010 (Eyrolles) http://www.dailymotion.com/video/xbuw37_1-5-richard-stallman-et-la-revoluti_tech
Projet OpenEmbedded http://www.openembedded.org
Projet Buildroot http://buildroot.uclibc.org
Projet Open Wrt http://openwrt.org
PTXdist http://www.ptxdist.org/software/ptxdist/index_en.html
Projet Crosstool-NG (production de compilateur croisé) http://www.crosstool-ng.org
Portail Linux embarqué par Patrice Kadionik http://www.enseirb.fr/~kadionik
Projet Busybox http://www.busybox.net
Bootloader U-Boot http://www.denx.de/wiki/U-Boot
PREEMPT-RT http://rt.wiki.kernel.org
Projet ADEOS http://home.gna.org/adeos
Xenomai http://www.xenomai.org
Portage de PREEMPT-RT...
Cet article fait partie de l’offre
Automatique et ingénierie système
(138 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive