Les systèmes embarqués sont apparus lors de la conquête spatiale quand il a fallu placer un système informatique à bord d'une
navette. Le bon fonctionnement de ce système nécessitait la réalisation de calculs en un temps très court, ces calculs étant entre
autres basés sur des informations collectées par des capteurs. De cette époque découle le terme anglo-saxon "embedded system" qui
a été traduit par "embarqué".
De nos jours, de nombreux appareils utilisent de tels systèmes. Le terme "embarqué" pour un système dans un frigo n'était pas
appropriée, ce terme "embarqué" a été remplacé par "enfoui". Un système enfoui est un système informatique constituant un
composant d'un système plus complexe. Aujourd'hui, une très grande part des systèmes informatiques fabriqués et utilisés dans le
monde sont des systèmes enfouis. Ces systèmes sont évidemment présents dans les télécommunications et les transports mais aussi
dans de nombreuses applications d'utilisation plus discrète, mais d'une importance tout aussi grande voire critique vis-à-vis du
grand public. Evoquons par exemple les systèmes de contrôle aérien, les systèmes de régulation et d'alarme des centrales nucléaires,
les serveurs de télécommunication. Ces systèmes sont de très grandes applications, d'une ingénierie complexe, faisant appel à de
multiples compétences et soumis à des contraintes temps-réel fortes.
L'aspect temps-réel est fondamental pour les systèmes enfouis. Les systèmes temps-réel doivent répondre dans un intervalle de
temps donné et souvent court. Pour déterminer si un tel système fonctionne correctement, il faut non seulement vérifier qu'il produise
des résultats corrects mais qu'il les produise dans l'intervalle de temps fixé. Pour définir cette intervalle, on parle de contrainte
temps-réel. Le système temps-réel garantit quoi qu'il arrive, qu'il fournira une réponse dans le délai défini par la contrainte
temps-réel.
Le système de gestion des airbags dans une voiture possède des contraintes temps-réel très importantes. Quand un capteur détecte
une déformation de la carrosserie suffisamment importante, il envoie un signal au contrôleur qui doit avoir gonflé les airbags dans les
10 ms sous peine d'arriver trop tard, ce qui aurait des conséquences désastreuses pour les occupants de la voiture. Même si un
capteur tombe en panne et qu'il n'envoie plus d'informations, le système doit continuer à fonctionner et fournir les meilleures
réponses possibles.
Mais un système temps-réel n'a jamais une seule tâche à effectuer, certains systèmes ont des dizaines de tâches à effectuer en
même temps, chacune avec ses propres contraintes temps-réel. Il faut donc un système principal qui gère l'ordonnancement de ces
tâches. Dès que le système devient un peu complexe, c'est un système d'exploitation temps-réel qui gère l'exécution des différentes
tâches.
La différence principale entre un système d'exploitation généraliste et un système d'exploitation temps-réel, c'est que le
système temps-réel est déterministe. Deux exécutions du même programme entraînent le même entrelacement des tâches et exactement la
même exécution, ce qui n'est pas du tout garanti par un système d'exploitation généraliste. C'est cet aspect déterministe qui
permet le respect de contraintes temps-réel.
D'un tout autre coté, depuis quelques années, la mobilité est devenue le cheval de bataille d'une grande partie de l'industrie.
Une personne doit être joignable, avoir accès à toute l'information et pouvoir travailler n'importe où, n'importe quand.
Il a fallu attendre la miniaturisation de l'électronique pour pouvoir embarquer suffisamment de puissance et de ressources dans
un volume très réduit. Les assistants personnels ou PDA 1.1 sont une des conséquences de ce désir
de mobilité. Le GSM est dès a présent entré dans tous les foyers et est déjà bien installé dans les moeurs, le PDA suit et arrivera
chez Monsieur tout le monde dans les années futures. En voyant le marché actuel, on peut même dire que les deux vont fusionner
et que le GSM et le PDA ne feront qu'un pour offrir cette mobilité tant convoitée.
L'objectif principal de ce travail se situe à la rencontre de ces deux aspects : la mobilité et les systèmes temps-réel. Notre
but est de proposer une plateforme portable qui permette de piloter des applications temps-réel. Imaginons par exemple
disposer d'une machine qui tient dans une poche et qui permettrait de contrôler une expérience scientifique, de piloter un robot ou
tout autre contrôleur industriel qui doit respecter des contraintes temporelles.
La première étape est de trouver une machine légère et de petit format qui dispose d'une puissance de calcul suffisante pour
réaliser des applications temps-réel. Cette machine doit aussi être relativement bon marché et être disponible dans le commerce
à un prix raisonnable. Actuellement, la plateforme matérielle la plus adaptée est sans conteste les ordinateurs de poche ou
assistants de données personnels. A la base, ces machines sont destinées à fournir toute l'information dont une personne a besoin
au quotidien. Elles fournissent un agenda, un carnet d'adresse, des mémos, des logiciels financiers voir des applications
multimédia, etc. Pourquoi ne pas utiliser ces machines pour leur puissance de calcul et leur ajouter le logiciel qui permettrait
le développement d'applications temps-réel? L'avantage des ordinateurs de poche par rapport aux ordinateurs portables est bien
sur leur taille et leur prix.
La deuxième étape est de concevoir un système d'exploitation temps-réel pour cette plateforme matérielle. Ce système
d'exploitation fournira l'interface nécessaire avec le matériel, il permettra de disposer de mécanismes simples pour communiquer
avec l'extérieur. Il fournira le moyen d'exécuter plusieures tâches simultanément en respectant les contraintes temps-réel associées
à chacune.
La troisième étape est d'installer le système d'exploitation sur la machine. Nous avons deux possibilités pour l'installer :
Le système d'exploitation développé porte le nom "Expresso". Expresso possède les caractéristiques suivantes :
A première vue, on pourrait croire que toute la difficulté réside dans le système logiciel qui assure la fiabilité. Ce système
qui doit pouvoir répondre dans des délais fixés et qui doit faire cela de manière efficace sans gaspiller les ressources si
précieuses dans le contexte de ces machines. Mais en fait la complexité réside surtout dans l'intégration entre la couche logiciel
et la machine. Une machine telle que le Palm m500 possède un nombre incroyable de fonctionnalités, de mécanismes de communication
comme la dizaine de contrôleurs inclus dans le processeur, les fonctions USB, infra rouge, le LCD, l'écran tactile, etc.
Pour bien maîtriser ces machines, il faut avoir une connaissance très appronfondie de toutes ces possibilités.
L'autre défi est d'arriver à prendre le contrôle total de la machine et forcer l'exécution de notre code sans pour cela effacer toute la ROM vu les risques que cette opération comporte. L'intégration du système d'exploitation sur la machine est une étape très spécifique qui charge le code de l'OS en RAM et modifie la valeur courante du compteur de programme pour effectuer notre code.
Le système d'exploitation temps-réel Expresso associé à un PDA permet d'imaginer une multitude d'applications qui pourraient
utiliser cet environnement. Nous pourrions imaginer un robot entièrement piloté par cette machine, il suffirait en effet d'ajouter
quelques roues et une caméra pour qu'elle se transforme en robot. On pourrait aussi imaginer des expériences de physique ou
de chimie entièrement pilotées par ce système qui recevrait les informations des capteurs, effectuerait les calculs nécessaires et
enverrait les réponses dans les délais définis.
L'avantage de cette plateforme est la facilité de programmation qu'elle fournit. Dans le domaine de la recherche, si on veut faire une expérience et que l'on a besoin d'un programme qui traite des données et calcule un résultat. Il est très facile de le faire sur un PC courant et d'installer sur le PDA ensuite. Ce système offre donc une flexibilité incomparable.
Une page web a été créée pour rassembler toutes les informations relatives à ce travail. Le code source d'Expresso est
disponible, le rapport et des exemples d'applications compilés. L'adresse de cette page est :
www.montefiore.ulg.ac.be/skivee
Chapitre 2 Choix de la plateforme Ce chapitre présente un aperçu du marché des ordinateurs de poche de type Palm Pilot. Nous
analyserons les avantages et inconvénients de chacun et le choix que nous avons fait concernant le PDA.
Chapitre 3 Architecture du Palm Ce chapitre décrit la structure matérielle du Palm, principalement le processeur. Les modules
les plus importants du processeur comme le contrôleur d'interruption, le timer et le contrôleur UART seront analysés en détails.
Chapitre 4 Concepts des systèmes d'exploitation temps-réel Ce chapitre présente les principaux concepts des systèmes
d'exploitation temps-réel comme les sections critiques, le multitâche, le changement de contexte, l'ordonnancement, ..
Chapitre 5 Couche indépendante du hardware Ce chapitre décrit la couche portable d'Expresso, la gestion des tâches,
l'ordonnanceur, la gestion du temps et les mécanismes de communication entre tâches que sont les sémaphores et les files de
messages
Chapitre 6 Couche dépendante du hardware Ce chapitre présente les particularités du hardware de la machine choisie et décrit
l'organisation d'Expresso pour faciliter le portage sous une autre architecture. Cette couche gère les exceptions, l'UART, le LCD,
l'écran tactile 1.2, etc.
Chapitre 7 Intégration et utilisation sur le Palm Ce chapitre décrit le procédé pour installer Expresso sur le Palm.
Expresso peut être installé en RAM ou ROM. Ensuite, nous verrons les paramètres de configuration possible et comment développer
une application pour Expresso.
Chapitre 8 Exemples d'applications Ce chapitre contient quelques applications réalisées avec Expresso. Ces applications
fournissent des exemples d'utilisation.
Annexe A Description des outils Tout le développement a été réalisé sous Linux, des outils spécifiques à cet
environnement sont nécessaires. Ce chapitre présente brièvement ces outils. Le simulateur sera vu un peu plus en détail ainsi que les
améliorations apportées pour faciliter le debbuging.
Annexe B Configuration des ports du Palm m500 Cette annexe donne l'affectation des ports d'entrées/sorties du Palm m500.