chapitre3

3.1     Le système d’exploitation TinyOS

                                       

3.1.1    Introduction 

 

             Dans la vie courante, l’utilisation des capteurs sans fil est de plus en plus demandée pour la supervision et la sécurité. Les industries proposent alors des capteurs sans fil qui peuvent renseigner l’utilisateur sur plusieurs données.

            Ces capteurs peuvent aussi être reliés ensemble pour former un réseau sans fil se basant sur des protocoles pour se communiquer et proposant des programmes et des réseaux embarqués. Les capteurs fonctionnent donc à basse tension et ceci est géré par un système d’exploitation spécialisé : TinyOS.

            Il est le système actuellement le plus utilisé dans les applications nécessitant des capteurs. Enfin, pour le développement des applications légères, il n’existe actuellement qu’un langage de programmation capable d’interagir avec le système d'exploitation TinyOs : NesC. Ce langage dédié est proche du C traditionnel mais il est orienté composants.

            TOSSIM, le simulateur de TinyOS est un outil très utile pour le débogage et le test des programmes de TinyOS.

 

3.1.2    Présentation

             TinyOS est un système principalement développé et soutenu par l’université américaine de Berkeley, qui le propose en téléchargement sous la licence BSD (Berkeley Software Distribution license : une licence libre utilisée pour la distribution de logiciels) et en assure le suivi. Ainsi, l’ensemble des sources sont disponibles pour de nombreuses cibles matérielles. 

            TinyOS est un système d’exploitation open-source conçu pour des réseaux de capteurs sans fil. Il respecte une architecture basée sur une association de composants, réduisant la taille du code nécessaire à sa mise en place. Cela s’inscrit dans le respect des contraintes de mémoires qu’observent les réseaux de capteurs.

            Pour autant, la bibliothèque de composant de TinyOS est particulièrement complète puisqu’on y retrouve des protocoles réseaux, des pilotes de capteurs et des outils d’acquisition de données. L’ensemble de ces composants peuvent être utilisés tels quels, ils peuvent aussi être adaptés à une application précise.

            TinyOS a été créé pour répondre aux caractéristiques et aux nécessités des réseaux de capteurs, telles que :

  • Une taille de mémoire réduite.
  • Une basse consommation d’énergie.
  • Des opérations d’assistance intensive.
  • Des opérations robustes.
  • Il est optimisé en termes d’usage de mémoire et d’énergie.

3.2       Propriétés du TinyOS 

Propriété

Valeur pour TinyOS

Type

Event-driven

Disponibilité

Open-source

Langage

NesC

Préemptif

Non

Temps (Le temps est un concept développé pour représenter la variation du monde : l'Univers n'est jamais figé, les...) réel

Non

Sources

Fournies

 

3.2.1   Disponibilité et sources : TinyOS est un système principalement développé et soutenu par l’université (Une université est un établissement d'enseignement supérieur dont l'objectif est la production du savoir (recherche),...) américaine de Berkeley, qui le propose en téléchargement (En informatique, le téléchargement (en anglais download) est l’opération de transmission d’informations...) sous la licence BSD (La licence BSD (Berkeley software distribution license) est une licence libre utilisée pour la distribution de...) et en assure le suivi. Ainsi, l’ensemble des sources sont disponibles pour de nombreuses cibles matérielles.

3.2.2  Event-driven : Le fonctionnement d’un système basé sur TinyOS s’appuie sur la gestion des évènements se produisant. Ainsi, l’activation (Activation peut faire référence à :) de tâches, leur interruption ou encore la mise en veille du capteur s’effectue à l’apparition d’évènements, ceux-ci ayant la plus forte priorité. Ce fonctionnement évènementiel (event-driven) s’oppose au fonctionnement dit temporel (time-driven) où les actions du système sont gérées par une horloge donnée (Dans les technologies de l'information (TI), une donnée est une description élémentaire, souvent codée, d'une chose,...).

3.2.3   Langage : Comme nous l’avons évoqué plus haut, TinyOS a été programmé en langage NesC que nous allons détailler plus loin.

3.2.4   Préemptif : Le caractère préemptif d’un système d’exploitation précise si celui-ci permet l’interruption d’une tâche en cours. TinyOS ne gère pas ce mécanisme de préemption entre les tâches mais donne la priorité aux interruptions matérielles. Ainsi, les tâches entre-elles ne s’interrompent pas mais une interruption peut stopper l’exécution d’une tâche.

3.2.5   Temps réel : Lorsqu’un système est dit « temps réel » celui-ci gère des niveaux de priorité dans ses tâches permettant de respecter des échéances données par son environnement (L'environnement est tout ce qui nous entoure. C'est l'ensemble des éléments naturels et artificiels au sein duquel se...). Dans le cas d’un système strict, aucune échéance ne tolère de dépassement contrairement à un système temps réel (En informatique industrielle, on parle d'un système temps réel lorsque ce système informatique contrôle (ou pilote) un...) mou. TinyOS se situe au-delà de ce second type car il n’est pas prévu pour avoir un fonctionnement temps réel.

3.2.6   Consommation : TinyOS a été conçu pour réduire au maximum la consommation en énergie (Dans le sens commun l'énergie désigne tout ce qui permet d'effectuer un travail, fabriquer de la chaleur, de la...) du capteur. Ainsi, lorsqu’aucune tâche n’est pas active, il se met automatiquement en veille.

  TinyOS est donc basé sur une structure a deux niveaux de planification :

ü  Les évènements : ils sont utilisés pour réaliser de petits processus (par exemple quand le compteur du « timer » arrive à son terme). De plus ils peuvent interrompre les tâches qui sont exécutées.

ü  Les tâches : les tâches sont pensées pour réaliser une plus grande quantité de traitements et elles ne sont pas critiques dans le temps. Les tâches sont exécutées complètement, mais l’initialisation et la terminaison d’une tâche sont des fonctions séparées.

 

3.3     Allocation de la mémoire 

 

                    Il est très important d’aborder la façon avec laquelle un système d’exploitation gère la mémoire et plus spécialement quand celui-ci travaille dans un espace restreint. TinyOS ne nécessite pas beaucoup de place mémoire puisqu’il n’a besoin que de 300 à 400 octets dans le cadre d’une distribution minimale. Il est primordial d’avoir 4 Ko de mémoire libre qui se répartissent entre les différents besoins suivant :

 

-La Pile : Elle sert de mémoire temporaire pour l’empilement et le dépilement des variables locales.

-Les variables globales : Elles réservent un espace mémoire pour stocker des valeurs pouvant être accessibles depuis différentes tâches.

-La mémoire libre : Pour tout le reste du stockage temporaire. La notion d’allocation dynamique de mémoire n’est pas présente dans le système, ce qui simplifie l’implémentation mais, par ailleurs, il n’existe pas de mécanisme de protection de la mémoire, ce qui rend le système plus vulnérable au crash et aux corruptions de mémoire.

3.4     Allocation des ressources

3.4.1    L’Ordonnanceur TinyOS

         Le choix d’un Ordonnanceur déterminera le fonctionnement global du système et le dotera de propriétés précises telles que la capacité à fonctionner en temps réel.  L’Ordonnanceur TinyOS c’est :

·                    2 niveaux de priorité (bas pour les tâches, haut pour les évènements)

·                    1 file d’attente FIFO (disposant d’une capacité de 7)

Par ailleurs, entre les tâches, un niveau de priorité est défini permettant de classer les tâches, tout en respectant la priorité des interruptions (ou évènements). Lors de l’arrivée d’une nouvelle tâche, celle-ci sera placée dans la file d’attente en fonction de sa priorité (plus elle est grande, plus le placement est proche de la sortie). Dans le cas ou la file d’attente est pleine, la tâche dont la priorité est la plus faible est enlevée de la FIFO.

3.4.2    Package TinyOS

            TinyOS est prévu pour fonctionner sur une multitude de plates-formes, disponible dès l’installation. En effet, TinyOS peut être installé à partir d’un environnement Windows (2000 et XP) ou bien GNU/Linux (Red Hat essentiellement, mais d’autres distributions sont également possibles). Deux principales versions de TinyOS sont disponibles : la version stable  et la version actuellement en cours de tests.

3.5     Architecture générale des cibles utilisant TinyOS :

             On appelle généralement Mote la carte physique utilisant TinyOS pour fonctionner. Celle-ci a pour coeur le bloc constitué du processeur et des mémoires RAM et Flash. Cet ensemble est à la base du calcul binaire et du stockage, à la fois temporaire pour les données et définitif pour le système TinyOS.

            TinyOS est prévu pour mettre en place des réseaux sans fil, les équipements étudiés sont donc généralement équipés d’une radio ainsi que d’une antenne afin de se connecter à la couche physique que constituent les émissions hertziennes.

            TinyOS est prévu pour mettre en place des réseaux de capteurs, on retrouve donc des équipements bardés de différents types de détecteurs et autres entrées.

            Comme tout dispositif embarqué, ceux  utilisant TinyOS sont pourvus d’une alimentation autonome telle qu’une batterie.

 

3.6     TOSSIM : le simulateur de TinyOS

 

          TOSSIM  est un simulateur discret basé sur la programmation par événement et qui a  été conçu et désigné pour simuler les réseaux de capteurs qui utilise la plateforme TinyOS.  Le principale but de TOSSIM  est de créer une simulation très proche de ce qui ce passe dans ces  réseaux dans le monde réel. 

          TOSSIM simule le comportement des applications de TinyOS à un niveau très bas. Le réseau est  simulé au niveau des bits et chaque interruption dans le système est capturée.  TOSSIM fourni 2 modèles de radios pour la communication. Le modèle par défaut est celui  « simple ». Les paquets sont transmis dans le réseau avec aucune erreur et ils sont reçus par  chaque nœud. Avec ce modèle il est ainsi possible que deux nœuds différents peuvent envoyer un  paquet en même temps avec la conséquence que ces deux paquets seront alors détruit à cause du  chevauchement des signaux. Le deuxième modèle est le modèle « lossy ». Dans ce modèle les  nœuds sont placés dans un graphe direct formé d’un couple (a, b) ce qui signifie qu’un paquet  envoyé par le nœud a peut être été reçu par le nœud b. TOSSIM est équipé aussi d’un simulateur graphique TinyViz. Cette application est équipée par plusieurs API plugs-in qui permet d’ajouter  plusieurs fonctions à notre simulateur comme par exemple contrôler les entrées de notre radio ou  bien suivre la dépense d’énergie en utilisant un autre simulateur qui s’appelle PowerTOSSIM.

 

 

 

Figure 3.1  Architecture TOSSIM :Cadre, événement, modèles, composants et services

 

Le système TOSSIM effectue cinq étapes de base:

3.6.1        Rédaction d'un schéma XML,

3.6.2