La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Diffusion libre Développement d'un driver radio pour réseau de capteurs Orange Labs Matthieu ANNE & Julien TOUS, Recherche & Développement jeudi 23 octobre.

Présentations similaires


Présentation au sujet: "Diffusion libre Développement d'un driver radio pour réseau de capteurs Orange Labs Matthieu ANNE & Julien TOUS, Recherche & Développement jeudi 23 octobre."— Transcription de la présentation:

1 diffusion libre Développement d'un driver radio pour réseau de capteurs Orange Labs Matthieu ANNE & Julien TOUS, Recherche & Développement jeudi 23 octobre 2008, présentation pour le Master 2 « Electronique des Télécommunications » de l'Université de Savoie

2 2 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 sommaire partie 1Présentation générale du projet partie 2Think : Infrastructure de développement de logiciels à base de composants partie 3Exemple : eNose partie 4Objectifs du projet

3 3 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Partie 1 : Présentation générale du projet

4 4 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Orange Le groupe Orange cest: –Dans le monde: –Une présence dans 220 pays –170 millions de clients –En Europe: –Le troisième opérateur mobile –Le premier fournisseur daccès ADSL –Un chiffre daffaire de 52,9 milliards deuros en 2007 La division R&D : Orange Labs –16 sites répartis sur 4 continents –3800 chercheurs et ingénieurs –8500 brevets

5 5 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Réseaux de capteurs Chaque nœud possède : –Des capacités d'acquisition d'information sur son environnement –Des ressources de calculs –Un système de communication sans fils Principale contrainte : autonomie

6 6 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Matériel Cognichip Extension EM2420 DKcarrierBoard EM2420 RCM

7 7 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Driver EM2420 Implémenter un driver pour les puces radio EM2420 Le driver devra respecter la norme 802.15.4 Driver sous la forme d'un ensemble de composants Think Architecture du driver devra faciliter son utilisation sur différentes plateformes (cognichip, EM2420 RCM, …)

8 8 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 sommaire partie 1Présentation générale du projet partie 2Think : Infrastructure de développement de logiciels à base de composants partie 3Exemple : eNose partie 4Objectifs du projet

9 9 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Partie 2 : Think Infrastructure de développement de logiciels à base de composants

10 10 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Think en bref Implémentation "C" du modèle à composant Fractal Projet "Open source" (GPL) hébergé par Object Web Langages : –ADL : Architecture Description Language –IDL : Interface Description Language –NuptC: C + annotations Chaîne de compilation Bibliothèque de composants Kortex (LGPL): –Composants systèmes : ordonnanceurs, pilots matériels, files d'attentes … –Plateformes : AVR, ARM, MPS 430

11 11 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Le modèle Fractal – en bref Modèle de composants au développement et à l'exécution Composant = brique logiciel, unité de composition de déploiement et d'administration Modèle réflexif –Introspection : connaître la constitution d'un système à l'exécution –Intercession : modification de l'architecture Modèle récursif –Un composant peut être constitué d'autres composants Implémentations –Java : Julia (implémentation de référence) –C : Think – Nuptse (V4) : simplification et prise en compte des contraintes relatives à l'embarqué – travaux réalisés et exploités à FT – …

12 12 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Les composants Think (1/3) Un composant : –Fournie des interfaces serveurs –Requière des interfaces clientes –A des attributs composant interface cliente 1 interface serveur n interface serveur 1 att 1, att l, interface cliente m interfaces de contrôles

13 13 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Les composants Think (2/3) Le contenu : –Implémente les interfaces serveur –Code fonctionnel NuptC –Sous-composants La membrane : –Implémente les interfaces de contrôles (ContentController, LifeCycleController,…) –Est facultative Implem.c Impl composant membrane contenu interface cliente 1 interface serveur n interface serveur 1 interfaces de contrôles att 1, att l, interface cliente m sous- composant

14 14 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Les composants Think (3/3) Les liaisons : –Canal de communication d'une interface client vers une interface serveur –Permettent le transfert entre l'interface d'un composant et celle d'un de ses sous- composants C Implem.c Impl composant membrane contenu interface cliente 1 interface serveur n interface serveur 1 interfaces de contrôles att 1, att l, interface cliente m liaison sous- composant

15 15 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 La compilation Haut niveau: –Transformations d'architecture (AST), optimisations (propriétés) –Transforme et génère du code "C" Bas niveau –Utilisation de gcc pour produire l'image binaire du système ou d'une partie du système pour téléchargement dynamique gcc/ld C C C elf Think IDL ADL NuptC ADL IDL

16 16 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Architecture Description Language ADL (1/2) component main { contains boot = boot.lib.boot contains wtsh = helloWorld.lib.wishToSayHello contains hw = helloWorld.lib.helloWorld assigns hw.repeat = 3 binds boot.entry to wtsh.main binds wtsh.hello to hw.hello } main.adl component helloWorld.lib.wishToSayHello { provides activity.api.Main as main requires helloWorld.api.SayHello as hello content wishToSayHello } wishToSayHello.adl component helloWorld.lib.helloWorld { provides helloWorld.api.SayHello as hello attribute int repeat content helloWorld } helloWorld.adl wishToSayHello.c mainhello wtsh helloWorld.c hello hw boot.c entry boot main

17 17 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 ADL - extension de définition (2/2) abstract component helloWorld.lib.helloWorld { provides helloWorld.api. as hello attribute int repeat } helloWorld.adl frenchHello.adl hello hw component englishHello extends helloWorld.lib.helloWorld { content englishHello } englishHello.adl englishHello.c hello englishHello component frenchHello extends helloWorld.lib.helloWorld { content frenchHello } frenchHello.c hello frenchHello

18 18 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Interface description Language (IDL) (1/2) Les interfaces des composants sont définies en utilisant l'IDL Déclaration du type de interface hello (helloworld.api.SayHello.idl) package helloWorld.api; public interface SayHello { void printHello (); } SayHello.idl

19 19 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Interface description Language (IDL) (2/2) type et typedef dans l'IDL package helloWorld.api; Typedefs myTypes; public interface SayHello { void printHello (char* info, myType2 moreInfo); } SayHello.idl typedef int myType1; typedef struct { myType1 toto; } * myType2; myTypes.h

20 20 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Programmation des composants (1/2) nuptC : langage utilisé pour le code fonctionnel nuptC : langage C + annotations Annotation = correspondance entre ADL et code C /* * @@ ClientInterfacePrefix(hello, HELLO_) @@ * @@ DefaultServerMethods @@ */ void main (int argc, char* argv) { HELLO_printHello(); } wishToSayHello.c component helloWorld.lib.wishToSayHello { provides activity.api.Main as main requires helloWorld.api.SayHello as hello content wishToSayHello } wishToSayHello.adl

21 21 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Programmation des composants (2/2) Plus d'une 10 ème d'annotations –DefaultServerMethods –DefaultClientMethods –DefaultAttributes –PrivateData –PrivateMethod –… Annotations par défaut –SRV_itf__methodName(…) –CLT_itf__methodName(…) –PRV_methodName(…) –…

22 22 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Bibliothèque de composants : Kortex src |-- arch | |-- arm | |-- avr | |-- msp430 | `-- unix |-- buzz | |-- arch | `-- generic |-- chip | |-- adc | |-- eNose | |-- memory | |-- radio | `-- serialnum |-- generic | |-- activity | |-- boot | … | |-- net | |-- patterns | |-- types.h | |-- util | `-- video `-- platform |-- at91sam7x-ek |-- cognichip2561 |-- em128 `-- ipaq avr |-- activity |-- adc |-- api |-- atm128 |-- atm2561 |-- boot |-- hw |-- irq |-- kortex_types_avr.h |-- kortex_types_avr6.h |-- libc |-- loader |-- memory `-- net atm2561 |-- boot | `-- lib | |-- boot.adl | |-- head.S | |-- reconf.adl | `-- reconf.c |-- hw | `-- lib | |-- PORTA.adl | |-- PORTB.adl | |-- PORTC.adl | … | |-- PORTJ.adl | |-- PORTK.adl | `-- PORTL.adl |-- irq | |-- api | | `-- TrapHandler.idl | `-- lib | |-- busylock.adl | |-- busylock.c | … | |-- timerType.adl | |-- trap.adl | |-- trap.c | |-- trap_interrupt.adl | `-- trap_interrupt.c `-- net `-- lib |-- traped_usart0.adl |-- usart0.adl |-- usart1.adl `-- usart_sender.adl PB: très peu de doc

23 23 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 sommaire partie 1Présentation générale du projet partie 2Think : Infrastructure de développement de logiciels à base de composants partie 3Exemple : eNose partie 4Objectifs du projet

24 24 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Partie 3 : Exemple eNose

25 25 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 eNose

26 26 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Architecture générale

27 27 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Architecture : driver eNose

28 28 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Lego logiciel & matériel sensorBoard muxsensors layout leds dataProcessor manager boot

29 29 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 leds dataProcessor manager boot Lego logiciel & matériel sensorBoard muxsensors layout

30 30 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Chip ltc2408 : description component adc.ltc2408.lib.ltc2408 { provides adc.ltc2408.api.MuxChannelControl as channelControl provides adc.ltc2408.api.GetAdcData as getData requires activity.api.Delay as wait requires hw.api.BitControl as sck // synchro clock requires hw.api.BitControl as chipSelect //CS requires hw.api.BitControl as channelSelect //DIN requires hw.api.BitControl as data //SDO (Serial Data Output) … } ltc2408.adl package hw.api; public interface BitControl { void set(); void unset(); kt_native get(); } BitControl.idl chanelControl getData wait sck chipSelect channelSelect data ltc2408

31 31 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Chip ltc2408 : code fonctionnel (convertisseur) … //@@ PrivateMethod @@ kt_native getDataBit(){ kt_native dataBit; SCK_set(); WAIT_udelay(CLOCK_LENGTH); dataBit = DATA_get(); SCK_unset(); WAIT_udelay(CLOCK_LENGTH); return dataBit; } … // getData server method ltc2408_data_t getData(){ kt_u8 i; … for(i=0; i<DATA_SIZE; i++){ muxData.data = muxData.data << 1; muxData.data |= getDataBit(); } … return muxData; } /** * @@ DefaultServerMethods @@ * @@ ClientInterfacePrefix (wait, WAIT_) @@ * @@ ClientInterfacePrefix (sck, SCK_) @@ * @@ ClientInterfacePrefix (chipSelect, CS_) @@ * @@ ClientInterfacePrefix (data, DATA_) @@ */ … ltc2408.c

32 32 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Composant Layout component cognichip2561.eNose.eNoseLayout { provides fractal.api.LifeCycleController as lcc provides hw.api.BitControl as sck // synchro clock provides hw.api.BitControl as chipSelect //CS provides hw.api.BitControl as channelSelect //DIN provides hw.api.BitControl as data //SDO //(Serial Data Output) requires hw.api.GPIO as porta requires hw.api.GPIO as portd content cognichip2561.eNose.eNoseLayout } layout.adl //@@ ServerInterfacePrefix (sck, SCK_) @@ //@@ ClientInterfacePrefix (porta,PORTA_) @@ #define SCK_BIT 0x02 … void SCK_set(){ PORTA_set_POUT(PORTA_get_POUT() | SCK_BIT); } void SCK_unset(){ PORTA_set_POUT(PORTA_get_POUT() & ~SCK_BIT); } kt_native SCK_get(){ if (PORTA_get_POUT() & SCK_BIT) return 1; else return 0; } … // @@ DefaultServerMethods (lcc) @@ void start(){ //defining ios //out xxxx 111x PORTA_set_PDIR(PORTA_get_PDIR() | 0x0E); //in xxxx 0xxx PORTD_set_PDIR(PORTD_get_PDIR() & ~0x08);} void stop(){ } layout.c sck chipSelect channelSelect data lcc porta portd gpio porta gpio portd layout sck chipSelect channelSelect data wait ltc2408

33 33 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 sommaire partie 1Présentation générale du projet partie 2Think : Infrastructure de développement de logiciels à base de composants partie 3Exemple : eNose partie 4Objectifs du projet

34 34 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Partie 4 : Objectifs du projet

35 35 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 I/ Driver bas niveau EM2420 Faire communiquer deux 2 cartes Ember EM2420 RCM [7](DkcarrierBoard.pdf [8]) par liaison radio hadhoc (couche MAC et supérieur). A ce niveau, les deux composants logiciels principaux à fournir sont les composants « phy- cc2420 » et « layout ». Le composant phycc2420 est en charge de l'implémentation de la couche physique du protocole 802.15.4 [9]. Quand au composant layout, il doit permettre l'abstraction du matériel afin de facilité la portabilité. –Définition des interfaces et du composant phy-cc2420 ainsi que son implémentation. –Assemblage du composant layout pour la carte EM2420 RCM à partir des composants bas niveau existants dans la bibliothèque Kortex (gpio...).

36 36 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 II/ Driver multi-plateformes Lobjectif est de faire communiquer un Cognichip (carte d'expérimentation d'Orange (Atm2561 + extension EM2420)) et la carte EM2420 RCM par une liaison radio hadhoc (couche MAC et supérieur). –Définition d'un composant layout pour le Cognichip à partir des composants bas niveau existants dans la bibliothèque Kortex (gpio...).

37 37 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 III/ Sur-couche 802.15.4 L'objectif visé ici est l'implémentation de la couche MAC de la norme 802.15.4. Cet objectif est divisé en trois étapes. Ci-dessous un schéma représentant les applications correspondant à l'objectif 3. –Étape 1 : Implémentation partielle (Reduced Function Device) capable de s'insérer dans un réseau 802.15.4 existant. Lobjectif est de faire communiquer le Cognichip et/ou la carte EM2420 RCM avec un device 802.15.4 banalisé, par exemple la carte EM2420 RCM avec le logiciel propriétaire fournis par Ember. Pour cela il faudra définir les interfaces et le composant MAC-802.15.4 ainsi que son implémentation. –Étape 2 : Création d'un réseau 802.15.4 aux fonctionnalités partielles Utiliser le Cognichip comme coordinateur 802.15.4 (Full Function Device) avec la carte Ember comme end-device. (Note malgré la dénomination « Full Function Device » cet implémentation pourra se limiter à un sous ensemble de 802.15.4 commun avec le « Reduce Function Device » développé précédemment.) –Étape 3 : Implémentation complète de la norme 802.15.4 Cognichip coordinateur, capable de supporter n'importe quel EndDevice 802.15.4

38 38 diffusion libre Orange Labs - Recherche & Développement – Driver radio EM2420 – 23/10/2008 Organisation du travail Prise en main de Think –http://think.objectweb.org/getting_started.html Travaux pratiques –Vendredi 7 novembre 2008 –Leds, buzzer, boutons… (DKcarrierBoard) Subversion –Création de comptes sur ObjectWeb –Branche du projet dans kortex Contact: –matthieu.anne@orange-ftgroup.commatthieu.anne@orange-ftgroup.com –jtous.ext@orange-ftgroup.comjtous.ext@orange-ftgroup.com –ruan.he@orange-ftgroup.comruan.he@orange-ftgroup.com

39 diffusion libre Bon courage!


Télécharger ppt "Diffusion libre Développement d'un driver radio pour réseau de capteurs Orange Labs Matthieu ANNE & Julien TOUS, Recherche & Développement jeudi 23 octobre."

Présentations similaires


Annonces Google