0% ont trouvé ce document utile (0 vote)
68 vues22 pages

Introduction à TinyOS pour capteurs

TinyOS est un système d'exploitation open-source conçu pour les réseaux de capteurs sans fil. Il utilise une architecture à base de composants modulaires et un fonctionnement événementiel pour s'adapter aux contraintes de mémoire des capteurs. Le document décrit les caractéristiques, la structure et le fonctionnement de TinyOS.

Transféré par

Hayder Henchiri
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
68 vues22 pages

Introduction à TinyOS pour capteurs

TinyOS est un système d'exploitation open-source conçu pour les réseaux de capteurs sans fil. Il utilise une architecture à base de composants modulaires et un fonctionnement événementiel pour s'adapter aux contraintes de mémoire des capteurs. Le document décrit les caractéristiques, la structure et le fonctionnement de TinyOS.

Transféré par

Hayder Henchiri
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Master Rseaux Mobiles et Services

Systme dexploitation des capteurs


TinyOS

Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

TinyOS
TinyOS est un systme d'exploitation open-source conu pour des
rseaux de capteurs sans-fil. Il respecte une architecture base sur
une association de composants, rduisant la taille du code
ncessaire sa mise en place. Cela s'inscrit dans le respect des
contraintes de mmoires qu'observent les rseaux de capteurs.
La bibliothque de composant de TinyOS est particulirement
complte puisqu'on y retrouve des protocoles rseaux, des pilotes
de capteurs et des outils d'acquisition de donnes.
L'ensemble de ces composants peut tre et adapt une
application prcise.
En s'appuyant sur un fonctionnement vnementiel, TinyOS
propose l'utilisateur une gestion trs prcise qui permet de mieux
s'adapter la nature alatoire de la communication sans fil entre
interfaces physiques.

Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

Caractristiques
Disponibilit : TinyOS est un systme principalement dvelopp et
soutenu par l'universit amricaine de Berkeley, qui le propose en
tlchargement sous une licence libre et en assure le suivi. Ainsi,
l'ensemble des sources sont disponibles pour de nombreuses cibles
matrielles.
Event-driven : Le fonctionnement d'un systme bas sur TinyOS
s'appuie sur la gestion des vnements. Ainsi, l'activation de tches,
leur interruption ou encore la mise en veille du capteur s'effectue
l'apparition d'vnements, ceux-ci ayant la plus forte priorit. Ce
fonctionnement vnementiel (event-driven) s'oppose au
fonctionnement dit temporel (time-driven) o les actions du
systme sont gres par une horloge donne.
Langage : TinyOS utilise comme langage de programmation NesC .

Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

Caractristiques
Premptif : Le caractre premptif d'un systme d'exploitation
prcise que celui-ci permet l'interruption d'une tche en cours.
TinyOS ne gre pas ce mcanisme de premption entre les tches
mais donne la priorit aux interruptions matrielles. Ainsi, les
tches entre-elles ne s'interrompent pas mais une interruption peut
stopper l'excution d'une tche.
Temps rel : Lorsqu'un systme est dit temps rel celui-ci gre des
niveaux de priorit dans ses tches permettant de respecter des
chances donnes par son environnement. Dans le cas d'un
systme strict, aucune chance ne tolre de dpassement
contrairement un systme temps rel souple. TinyOS se situe audel de ce second type car il n'est pas prvu pour avoir un
fonctionnement temps rel.
Consommation : TinyOS a t conu pour rduire au maximum la
consommation en nergie du capteur. Ainsi, lorsqu'aucune tche
n'est active, il se met automatiquement en veille.
Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

Allocation de la mmoire

Il est important de prciser de quelle faon un systme d'exploitation aborde la


gestion de la mmoire.
C'est encore plus significatif lorsque ce systme travaille dans un espace restreint.
TinyOS a une empreinte mmoire trs faible puisqu'il ne prend que 300 400
octets dans le cadre d'une distribution minimale. En plus de cela, il est ncessaire
d'avoir 4 Ko de mmoire libre
La pile : sert de mmoire temporaire au fonctionnement du systme notamment pour
l'empilement et le dpilement des variables locales.
Les variables globales : rservent un espace mmoire pour le stockage de valeurs pouvant tre
accessible depuis des applications diffrentes.
La mmoire libre : pour le reste du stockage temporaire.

La gestion de la mmoire possde de plus quelques proprits. Ainsi, il n'y a pas


d'allocation dynamique de mmoire et pas de pointeurs de fonctions. Bien sur cela
simplifie grandement l'implmentation.
Par ailleurs, il n'existe pas de mcanisme de protection de la mmoire sous TinyOS
ce qui rend le systme particulirement vulnrable aux crash et corruptions de la
mmoire.

Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

Structure logicielle
Le systme d'exploitation TinyOS s'appuie sur le langage NesC.
Celui-ci propose une architecture base sur des composants,
permettant de rduire considrablement la taille mmoire du
systme et de ses applications.
Chaque composant correspond un lment matriel (LEDs, timer,
ADC . . . ) et peut tre rutilis dans diffrentes applications.
Ces applications sont des ensembles de composants associs dans
un but prcis.
Les composants peuvent tre des concepts abstraits ou bien des
interfaces logicielles lies aux entres-sorties matrielles de la cible
tudie (carte ou dispositif lectronique).
L'implmentation de composants s'effectue en dclarant des
tches, des commandes ou des vnements.

Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

Structure logicielle

Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

Les tches, commandes, vnements


Les tches sont utilises pour effectuer la plupart des blocs
d'instruction d'une application. A l'appel d'une tache, celle-ci va
prendre place dans une file d'attente de type FIFO (First In First Out)
pour tre excute.
Comme nous l'avons vu, il n'y a pas de mcanisme de premption
entre les tches et une tache active s'excute en entier. Ce mode
de fonctionnement permet dviter des oprations pouvant bloquer
le systme (inter-blocage, famine, . . . ). Par ailleurs, lorsque la file
d'attente des taches est vide, le systme d'exploitation met en
veille le dispositif jusqu'au lancement de la prochaine interruption
(on retrouve le fonctionnement (event-driven).
Les vnements sont prioritaires par rapport aux tches et peuvent
interrompre la tache en cours d'excution. Ils permettent de faire le
lien entre les interruptions matrielles (pression d'un bouton,
changement d'tat d'une entre, . . . ) et les couches logicielles que
constituent les taches.
Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

L'ordonnanceur TinyOS
Le choix d'un ordonnanceur dterminera le fonctionnement global
du systme et le dotera de proprits prcises telles que la capacit
fonctionner en temps rel.
L'ordonnanceur TinyOS a deux niveaux de priorit (bas pour les
tches, haut pour les vnements), une file d'attente FIFO
(disposant d'une capacit de 7)
Par ailleurs, entre les tches, un niveau de priorit est dni
permettant de classer les tches, tout en respectant la priorit des
interruptions (ou vnements). Lors de l'arrive d'une nouvelle
tache, celle-ci sera place 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 tche dont la priorit
est la plus faible est enleve de la FIFO

Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

Le langage NesC
Dans la pratique, NesC permet de dclarer 2
types de composants : les modules et les
configurations :
Les modules constituent les briques lmentaires
de code et implmentent une ou plusieurs
interfaces.
Les configurations pour regrouper les
fonctionnalits des modules.
Un fichier top-level configuration permet de faire
le lien entre tous les composants.
Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

10

Construction dune application en


NesC
Toutes les applications ont besoin dun fichier de configuration de haut
niveau.
Par exemple [Link] est le fichier de configuration de
lapplication et le fichier source que le compilateur nesC utilise pour
gnrer lexcutable.
[Link] quant lui correspond limplmentation
proprement dit de lapplication.
Les composants nesC peuvent se relier les uns aux autres, et ici cest le
fichier [Link] qui permet de faire cette connexion entre le
module [Link] et les autres composants auxquels
lapplication fait appel.
La convention de TinyOS veut alors que [Link] reprsente la
configuration et [Link] reprsente le module
correspondant.
Il faut donc respecter cette convention pour utiliser le Makefile livr avec
la distribution de TinyOS.
Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

11

Construction dune application en


NesC
Le fichier de configuration [Link]
:
[Link] :

configuration NomApplication {

implementation {

components ;

}
Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

12

Construction dune application en


NesC
La premire chose noter est le mot cl configuration
qui indique quil sagit dun fichier de configuration dont le
nom est NomApplication .
A lintrieur des accolades, il est possible de spcifier des
interfaces requises ou offertes par la configuration.
La vritable configuration est implmente au sein des
deux accolades qui suivent le mot cl implementation .
La ligne components spcifie les diffrents composants
auxquels la configuration fait rfrence.
Le reste de limplmentation consiste connecter les
interfaces utilises par certains composants aux interfaces
fournies par les autres.

Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

13

Construction dune application en


NesC

Le composant Main est le premier excut dans une application TinyOS. Pour tre plus prcis,
la commande [Link]() est la premire fonction tre excut suivi de
[Link]().
Donc toute application TinyOS doit avoir un composant "Main" dans sa configuration.
StdControl est une interface de base utilise afin dinitialiser et de dmarrer des composants
TinyOS.
interface StdControl {
command result_t init();
command result_t start();
command result_t stop();
}
Nous pouvons voir que StdControl dfinit trois commandes, init() , start() et
stop() .
init() La premire est appele quand un composant est initialis pour la premire fois,
start() quand il est dmarr, cest dire excut pour la premire fois.
stop() quand le composant est arrt, par exemple pour teindre le dispositif physique
quil contrle.

Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

14

Construction dune application en


NesC

Le module [Link] :
[Link]
includes ......;
module NomApplicationM {
provides {
interface StdControl;
}
uses {
interface Timer ;
.........
}
}
implementation {
;

Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

15

Construction dune application en


NesC
La premire ligne cest linclusion dun fichier den tte.
La deuxime signale quil sagit dun module appel
NomApplicationM et dclare les interfaces fournies
et utilises.
Nous voyons quil fournit linterface StdControl par
exemple. elle est ncessaire pour initialiser et
dmarrer du composant. Il utilise ensuite plusieurs
interfaces: par exemple : le Timer.
Ces dclarations donnent accs NomApplicationM
aux commandes de ces interfaces, et loblige
implmenter les vnements (events) dclars dans
ces interfaces.
Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

16

Exemple: [Link]

[Link]
/**
* Blink is a basic application that toggles the leds on the mote on every clock interrupt.
* The clock interrupt is scheduled to occur every second. The initialization of the clock
* can be seen in the Blink initialization function, [Link]().<p>
*
* @author tinyos-help@[Link]
**/
configuration Blink {
}
implementation {
components Main, BlinkM, SingleTimer, LedsC;
[Link] -> [Link];
[Link] -> [Link];
[Link] -> [Link];
[Link] -> LedsC;
}

Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

17

Exemple: [Link]
[Link]
/**
* Implementation for Blink application. Toggle the red LED when a Timer
fires.
**/
module BlinkM {
provides {
interface StdControl;
}
uses {
interface Timer;
interface Leds;
}
}

Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

18

Exemple: [Link]

implementation {
/**
* Initialize the component.
*
* @return Always returns <code>SUCCESS</code>
**/
command result_t [Link]() {
call [Link]();
return SUCCESS;
}
/**
* Start things up. This just sets the rate for the clock component.
*
* @return Always returns <code>SUCCESS</code>
**/
command result_t [Link]() {
// Start a repeating timer that fires every 1000ms
return call [Link](TIMER_REPEAT, 1000);
}

Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

19

Exemple: [Link]

/**
* Halt execution of the application. This just disables the clock component.
*
* @return Always returns <code>SUCCESS</code>
**/
command result_t [Link]() {
return call [Link]();
}
/**
* Toggle the red LED in response to the <code>[Link]</code> event.
*
* @return Always returns <code>SUCCESS</code>
**/
event result_t [Link]()
{
call [Link]();
return SUCCESS;
}
}

Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

20

Le Makefile
COMPONENT=Blink
include ../Makerules
$ make mica2 /* installer l'application sur un capteur
mica2 */
ou
$ make pc /* compiler l'application sur pc pour la
tester avec le simulateur tossim cela generera un
dossier build/pc/ dans lequel se trouve votre [Link]
*/
Pour lancer un vizualisateur graphique :
$ tinyviz -run build/pc/[Link] 10
Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

21

Travail demand
Raliser un programme de la diffusion directe
dans lequel chaque capteur priodiquement
diffuse un message a ses voisins directs dans
sa port , qui font la mme chose pour leurs
voisins directes.

Anne universitaire 2012/2013

[Link], STIC Lab, Dp GEE, Universit de


Tlemcen

22

Vous aimerez peut-être aussi