next up previous contents
suivant: Les Linux Temps Réel monter: Dossier Technique précédent: Dossier Technique   Table des matières

Sous-sections

GNU/Linux comme système d'exploitation embarqué

Embarqué ?

De plus en plus d'objets quotidiens embarquent avec eux de l'intelligence. Un ordinateur embarqué se définit généralement par le fait qu'il n'est pas visible en tant que tel, mais est intégré dans un équipement doté d'une autre fonction ; on dit aussi que le système est enfoui, ce qui traduit plus fidèlement le terme anglais embedded.

Un inventaire à la Prévert serait nécessaire pour citer les systèmes informatiques embarqués que nous utilisons quotidiennement: gestion de l'ascenseur, auto radio, calculateur d'``air bag'', distributeur de boissons, routeur Internet ou téléphonique, téléphone mobile, distributeur de billets, une console de jeux, une carte graphique (bientôt un raton laveur car le chien électronique existe déjà !!))... Nous voyons bien que les contraintes imposées à tous ces systèmes ne sont pas les mêmes: qu'y a t'il de commun entre un satellite et une imprimante, à part le fait de contenir des processeurs ?

On peut classer les acteurs de l'informatique embarquée suivant de multiples critères:



Secteur d'activité Contraintes
Équipements scientifiques Performances, fiabilité, coût
Équipements militaires et aérospatiaux Performances, fiabilité, pérennité, intégration
Transports Fiabilité, coût, interactivité
Informatique industrielle Fiabilité, coût, pérennité
Matériel de bureau Performance, coût, standardisation
Réseau et télécommunications Performance, fiabilité, intégration
Électronique grand public Performance, coût, design / intégration



Ceci implique une diversité certaine des architectures matérielles...

Architectures matérielles

On peut s'amuser à découper une station de travail classique suivant cinq blocs fonctionnels. Puis, en éliminant tour à tour un ou plusieurs blocs, on obtient différentes configurations matérielles pouvant s'appliquer à un équipement embarqué. [*]

Figure 4.1: Typologie des architectures
\includegraphics{typolog.eps}

En utilisant le schéma 4.1 on peut construire:

  1. avec tous les blocs une station de travail industrielle connectée à un réseau
  2. avec l'unité centrale, une IHM, et de la mémoire de masse, un PC domestique
  3. avec l'unité centrale, et des entrées / sorties spécifiques, un système industriel indépendant que l'on peut relier à un réseau si on lui adjoint le bloc #3.
  4. ...
Il y a ainsi 14 configurations possibles (car certaines des 27 sont absurdes) décrivant chacune un équipement informatique. GNU/Linux est pensé à l'origine comme un système d'exploitation pour station de travail de type PC connectée à un réseau (blocs 1,2,3,4). Il faut donc voir s'il est assez configurable pour pouvoir animer les autres agencements de blocs sans trop de modifications et / ou de pertes de performance.

D'autre part, l'augmentation de la proportion de matériel standard (et notamment de type PC) dans les équipements embarqués est tout à fait remarquable. En effet,

font que ce type de matériel prend une place de plus en plus importante sur ce marché. Ces avantages proviennent du fait qu'il est produit en masse, par de multiples entreprises, tout autour du globe.

De part son gain de notoriété, GNU/Linux s'installe sur de nombreuses plates formes différentes de son ``nid'' d'origine PC/x86. On peut aussi trouver Linux codé pour les processeurs PPC, 68k, Alpha, MIPS, certains microcontrôleurs, ARM , SPARC, travaillant sur des architectures VME, CompactPCI, PC/104.

Plates-formes logicielles

Nous avons vu que les caractéristiques et besoins d'un système embarqué variaient beaucoup selon leur utilisation. Néanmoins, on peut décrire les composants essentiels dont un système embarqué a besoin:

Afin que ce système puisse faire quelque chose d'utile pour le monde réel, on doit ajouter:

Et de nos jours, on utilise assez souvent:

Linux peut apporter d'une part, un noyau répondant à toutes les exigences d'un système embarqué (réduction de taille jusqu'à 300 Koctets), d'autre part, l'ensemble des services utilisateurs imaginables. Linux peut convenir aussi bien à un équipement à taille ultra réduite qu'à un gros serveur d'applications mais l'adaptation à un pico-système demande beaucoup plus de malice et de travail: mais il faut aller chercher les outils de taille réduite car ils ne sont pas habituellement fournis dans les distributions standards. www.embedded-linux.org constitue un excellent ``portail'' pour les recherches d'outils de taille réduite (voir 4.3.3)

Pourquoi GNU/Linux ?

Avantages:

Gratuité à l'achat et pendant l'exploitation (runtime license), c'est l'avantage le plus populaire des logiciels libres et tout le travail de la Communauté est de rappeler que "libre" différent de "gratuit" !!!

Code modifiable à volonté du moment que les modifications sont mises dans le domaine public. Ceci permet d'adapter son système à ses besoins, d'avoir des exemples pour un développement similaire. Mais aussi, cette caractéristique est importante pour améliorer sécurité et fiabilité (les failles et erreurs sont rapidement repérées et corrigées par la Communauté).

Coûts de formation et maintenance faibles car GNU/Linux est basé sur POSIX (les administrateurs UNIX ont peu de mal à l'aborder).

Système d'exploitation fiable (mémoire protégée).

Un large éventail de protocoles, langages, pilotes, systèmes de fichiers, interfaces graphiques... sont supportés par cet OS. La liste des langages est par exemple absolument impressionnante (il manque seulement Visual Basic (!!) :-)

Inconvénients:

Linux n'est pas un micro-noyau, il en résulte que la taille minimale qu'il peut atteindre n'est pas aussi impressionnante que celle du noyau de QNX: Neutrino (quelques dizaines de Koctets). Mais, d'une part, les contraintes d'empreinte mémoire sont moins drastiques qu'il y a quelques années car on utilise maintenant des composants standards et grand public. La RAM est souvent bien supérieure a 4 Moctets et des Flash de 32 Moctets atteignent des prix raisonnables (développement des appareils photos numériques, balladeurs MP3...). De plus, Un micro-noyau a besoin de nombreux modules périphériques pour fonctionner, la taille totale augmente alors très vite...
Pour les adeptes du concept, il faut s'intéresser de près à Hurd, le micro-noyau libre ou ELKS pour les machines à base de 286 www.elks.ecs.soton.ac.uk/cgi-bin/ELKS/.

Les processeurs et / ou architectures différents de x86/PC demandent plus de travail de configuration. Les utilisateurs étant moins nombreux, on ne dispose pas d'une aide aussi rapide et les documents sont plus difficiles à trouver.

Aucune société n'est à l'origine du développement de GNU/Linux. Je vois plutôt ça comme un avantage et un gage de pérennité mais certains décideurs semblent le craindre. De plus, ceci est une opportunité pour des sociétés de service qui peuvent s'engager comme responsables de développements logiciels libres auprès de leurs clients.

Embarqué - temps réel

Un logiciel embarqué n'a pas forcément de contraintes temps réel. On peut s'attendre à ce qu'une machine doive suivre un tel comportement si elle est reliée au monde réel, via des entrées / sorties. Les événements extérieurs doivent être traités en un temps déterminé pour produire une réaction appropriée.



Un système fonctionne en temps réel lorsqu'il est capable d'absorber toutes les informations d'entrée sans qu'elles soient trop vieilles pour l'intérêt qu'elles présentent, et par ailleurs, de réagir à celles-ci suffisamment vite pour que cette réaction ait un sens.[*]

ou

Un logiciel ou un sous-ensemble de logiciel est dit temps réel ou déterministe si son exécution a lieu en un temps déterminé et connu.

Un système d'exploitation est dit temps réel ou déterministe s'il permet d'exécuter des tâches logicielles en temps réel. Cette notion est indépendante de la vitesse de calcul.





Pour assurer le déterminisme des tâches, un système d'exploitation doit être soit monotâche, soit multitâche et totalement préemptif. La préemptivité induit un autre concept, la notion de priorité. En effet, un noyau multitâche préemptif[*] recevant une interruption, doit répartir de nouveau le temps CPU entre les tâches. Cette répartition est effectuée par le moniteur système (scheduler) selon un critère:

Linux a été implémenté à partir des spécifications POSIX pour construire un système d'exploitation temps partagé. En revanche, la norme POSIX.1b spécifie des extensions temps réel au système de base (POSIX.1). Ces extensions, disponibles dans Linux, sont entre autres: sémaphores, timers, queues de messages et scheduler préemptif gérant les priorités. Il y a là tout ce qu'il nous faut !!!

Mais, le noyau Linux est non préemptif... Une tâche peut être interrompue et mise en attente par le moniteur, selon sa priorité. En revanche, un appel système ne peut être interrompu, il peut durer jusqu'à quelques centaines de milli-secondes (ex: fork() ). L'implémentation d'un comportement temps réel ``dur'' avec le noyau Linux n'est possible qu'au prix de sévères modifications du code du noyau. Cependant, des projets ont vu le jour pour améliorer les performances temps réel ``mou'' de Linux notamment dans le domaine du son. On peut trouver de tels projets en partant de www.crosswinds.net/ linuxmusic/lowlatency.html ou depuis la société MontaVista www.mvista.com.

L'approche ``bas niveau'' sera discutée dans la section 5.2 consacrée à l'architecture de RTLinux...

Distributions et outils

Divers projets libres

AlfaLinux
est basée sur la distribution Slackware et tient sur deux disquettes. alfalinux.sourceforge.net/alfaeng.php3
BYLD
Build Your Linux Disk: un paquet qui permet de générer des mini distributions Linux sur une disquette. get.to/byld/
CClinux
tenant sur une disquette, il utilise un maximum d'outils GNU.www.CosmicChaos.com/CClinux/
DosLinux:
un petit système d'exploitation Linux qui peu être installé au dessus d'un système Dos existant. gwyn.tux.org/pub/people/kent-robotti/index.html
Emblin:
Le but de ce projet est de créer un système Linux le plus petit possible contenant le maximum de fonctionnalités (serveur HTTP + CGI, FTP, Telnet ...), le tout tenant sur une seule disquette. www.master.cit.be/c27/index.html
LEM:
Linux EMbedded est une petite distribution basée sur la Mandrake. Elle fait tenir sur moins de 8Moctets un système complet contenant même Xwindow. Sur son site, il est décrit comment ajouter le navigateur Netscape 4 et un serveur web... Cette distribution, que j'ai utilisée lors de l'appel d'offre STNA, est formidable car elle met tous les outils nécessaires à la disposition du développeur. La liste de diffusion proposée est assez active et le groupe est un acteur majeur des Linux embarqués. Je pense qu'un système graphique plus petit serait en outre plus adapté que Xwindow. www.embedded-linux.org
Linux Router Project
Un projet centré sur le réseau, comme son nom l'indique ! www.linuxrouter.org
Tomsrtbt
disquette de boot/secours/circonstances critiques (mauvais paramétrage de LILO, crash disque...). Son insertion sur une disquette de 1,77Moctets lui permet de contenir beaucoup d'outils (avec les pages de man). Tournant depuis un disque mémoire il permet d'utiliser tout PC comme une station de travail sous GNU/Linux. Il contient une configuration réseau, un éditeur de textes, les utilitaires mount, gzip... La trousse de secours indispensable. Il donne de plus une bonne idée de la construction d'une mini-distribution. |ttp://www.toms.net/rb/|

Solutions d'entreprises commerciales

Les entreprises proposant une solution Linux embarqué:

BlueCat
de Lynx Real-Time Systems Inc. entre dans la stratégie d'éditeur de se rapprocher du monde des logiciels libres. Lynx nous dévoile sa stratégie Lynx Linux Initiative et LynuxWorks... Lynx Inc. met aussi en place une compatibilité binaire entre Linux (format ELF) et son RTOS LynxOS 4.0. Sur le diagramme suivant, on peut se rendre compte des possibilités qu'offre BlueCat Linux et des outils qu'il fournit. Le manuel utilisateur est extrêmement précis et guide le concepteur à travers des exemples pertinents. www.bluecat.com.

Embedix:
Lineo développe et vend des composants logiciels et des solutions de systèmes embarqués en interaction avec Internet. Lineo détient Embedix (embedded Linux OS), Embrowser (embedded web browser), DR DOS et de nombreuses technologies de l'embarqué. En rachetant Zentropix, il s'impose comme un acteur majeur de l'enfoui et du temps réel à base de Linux.
Hard Hat Linux
est un produit commercial de la société Monta Vista qui s'attache à faciliter le développement de systèmes embarqués. Elle initie de nombreux travaux pour améliorer les performances temps réel du noyau Linux (modification du scheduler). www.mvista.com .

Les entreprises proposant une solution Linux temps réel:


Les utilitaires de taille réduite

ae
petit éditeur de textes.
ash
très petit Bourne shell.
Busybox
petit programme binaire qui fournit la quasi totalité des commandes POSIX de base i.e. cat, cp, mv, ls, cd, mount... Il est employé dans la plupart des mini-distributions: Linux Router Project, LEM et par l'installation de Debian... Son développement est sponsorisé par Lineo.
elvis-tiny
un autre éditeur de textes de style vi.
iproute
remplaçant de ifconfig, route, etc. Petit, il apporte aussi des fonctions avancées.
TinyLogin
suite d'utilitaires permettant de se ``loger'' sur le système, et faire la maintenance des utilisateurs. Sécurisé il utilise le mécanisme de ``shadow password''.

Outils documentaires

Il est fort intéressant, lorsque l'on développe une solution à base de logiciels libres, de disposer d'une liaison Internet pour avoir accès aux forums de discussions et aux listes de diffusions. En effet, on trouve rapidement une réponse en posant une question sur un des forums/listes dédiés aux Linux temps-réels car ce milieu est passionné et enthousiaste. Attention tout de même de ne pas poser une question à réponse triviale : lire la documentation avant toute requête.

Internet est une base de documentation inépuisable et effervescente ! Il est impossible de faire le tour de tous les papiers mis à la disposition du développeur. Il faut donc avoir quelques flotteurs pour ne pas se noyer et ``surfer'' confortablement d'un renseignement à l'autre...


Les outils les plus efficaces, à la disposition du développeur sont principalement:

Exemple: Pour le temps réel...

Realtimelinux.org a une ``mailing lists'' permettant de se tenir au courant des nouveautés dans le monde des Linux temps réel. Chacun peut émettre un point de vue, poser une question ou demander de l'aide... Pour souscrire à cette liste, il suffit de se rendre sur le site realtimelinux.org et de suivre la procédure décrite (Archives des mailing lists www.realtimelinux.org/archives/). La plus intéressante des ces listes et la plus active est celle intitulée ``realtime''.

Un autre groupe, plus proche du produit RTLinux et extrêmement actif est la liste de diffusion maintenue par rtlinux.org. Elle apporte de bons renseignements au jour le jour, il me semble indispensable d'y souscrire : www.rtlinux.org



Notes

... embarqué.[*]
Cette excellente idée est tirée du livre ``Java embarqué'' [10].
... sens.[*]
ABRIAL et BOURGNE
... préemptif[*]
Dont la tâche courante peut être interrompue.

next up previous contents
suivant: Les Linux Temps Réel monter: Dossier Technique précédent: Dossier Technique   Table des matières
Nicolas Ferre 2000-12-08