Programmering af sensor netværk

Relaterede dokumenter
IBM Network Station Manager. esuite 1.5 / NSM Integration. IBM Network Computer Division. tdc - 02/08/99 lotusnsm.prz Page 1

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1

PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU

Netværk & elektronik

Hvor er mine runde hjørner?

Programmering i C Intro og grundlæggende C 5. marts 2007

Arduino Programmering

Brug sømbrættet til at lave sjove figurer. Lav fx: Få de andre til at gætte, hvad du har lavet. Use the nail board to make funny shapes.

PMDK PC-Side Basic Function Reference (Version 1.0)

CHAPTER 8: USING OBJECTS

En god Facebook historie Uddannelser og valgfag målrettet datacenterindustrien!?

Portal Registration. Check Junk Mail for activation . 1 Click the hyperlink to take you back to the portal to confirm your registration

VMware og dopsys-linux

Dell Cloud Client Computing Hvordan virtualisere vi de tunge grafisk applikationer?

AVR 용 USB-ISP V03 ( Model : AD-USBISP V03(-L) )

E-PAD Bluetooth hængelås E-PAD Bluetooth padlock E-PAD Bluetooth Vorhängeschloss

Privat-, statslig- eller regional institution m.v. Andet Added Bekaempelsesudfoerende: string No Label: Bekæmpelsesudførende

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index

Lærer nye styresystemer Installerer programmer som kun kan bruges i ældre versioner

Interconnect. Front end interface

Titel: Barry s Bespoke Bakery

Arduino Programmering

DSB s egen rejse med ny DSB App. Rubathas Thirumathyam Principal Architect Mobile

Vina Nguyen HSSP July 13, 2008

Black Jack --- Review. Spring 2012

The X Factor. Målgruppe. Læringsmål. Introduktion til læreren klasse & ungdomsuddannelser Engelskundervisningen

Serverteknologi I Project task list

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater

extreme Programming Kunders og udvikleres menneskerettigheder

Engelsk. Niveau D. De Merkantile Erhvervsuddannelser September Casebaseret eksamen. og

Teknologispredning i sundhedsvæsenet DK ITEK: Sundhedsteknologi som grundlag for samarbejde og forretningsudvikling

Engelsk. Niveau C. De Merkantile Erhvervsuddannelser September Casebaseret eksamen. og

Citrix CSP og Certificate Store Provider

IBM WebSphere Operational Decision Management

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/

DANSK INSTALLATIONSVEJLEDNING VLMT500 ADVARSEL!

IBM WebSphere Operational Decision Management

SOFTWARE PROCESSES. Dorte, Ida, Janne, Nikolaj, Alexander og Erla

SAS USER FORUM DENMARK 2017 USER FORUM. Rune Nordtorp

Tech College Aalborg. HomePort. Projekt Smart Zenior Home Guide til udvikling af nye adaptere til HomePort

Embedded controller, almen.

ECE 551: Digital System * Design & Synthesis Lecture Set 5

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

Status på det trådløse netværk

IPv6 Application Trial Services. 2003/08/07 Tomohide Nagashima Japan Telecom Co., Ltd.

Microcontroller, Arduino

Velkommen på kursus hos Microworld

Online kursus: Content Mangement System - Wordpress

Boligsøgning / Search for accommodation!

RoE timestamp and presentation time in past

CANSAT & ARDUINO step by step

TM4 Central Station. User Manual / brugervejledning K2070-EU. Tel Fax

18 stamtoner, version 1.0

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav.

02101 Indledende Programmering Introduktion til Eclipse

Basic statistics for experimental medical researchers

CONNECTING PEOPLE AUTOMATION & IT

Molio specifications, development and challenges. ICIS DA 2019 Portland, Kim Streuli, Molio,

Sesam Automationstrend. Spørgsmål til leverandørerne? New Automation Technology

Bemærk, der er tale om ældre versioner af softwaren, men fremgangsmåden er uændret.

OPC UA Information model for Advanced Manufacturing

On the complexity of drawing trees nicely: corrigendum

INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen. I3PRG3 + I3DTM3 + I3ISY1-3. semester

Design til digitale kommunikationsplatforme-f2013

Den uddannede har viden om: Den uddannede kan:

Automatic Code Orchestration from Descriptive Implementations

From innovation to market

QUICK START Updated: 18. Febr. 2014

MOC On-Demand Administering System Center Configuration Manager [ ]

Opsætning af xcon og Logix Controller

Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP)

QGIS Brugermde 9. marts Diaspora*: twitter.com/soerenbc soerenbredlundcaspersen.

Appendix 1: Interview guide Maria og Kristian Lundgaard-Karlshøj, Ausumgaard

Backup Applikation. Microsoft Dynamics C5 Version Sikkerhedskopiering

GUIDE TIL BREVSKRIVNING

Overfør fritvalgskonto til pension

Constant Terminal Voltage. Industry Workshop 1 st November 2013

Improving data services by creating a question database. Nanna Floor Clausen Danish Data Archives

Mustafa Saglam SAP Integration & Certification Center

Aktivering af Survey funktionalitet

Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov.

Sortering fra A-Z. Henrik Dorf Chefkonsulent SAS Institute

DK - Quick Text Translation. HEYYER Net Promoter System Magento extension

User Manual for LTC IGNOU

Transformering af OIOXML til OIOUBL og OIOUBL til OIOXML

MOC On-Demand Identity with Windows Server 2016 [20742]

OrCAD Capture TCL IDE med Eclipse

Det er muligt at chekce følgende opg. i CodeJudge: og

BACK-END OG DATA: ADMINISTRATION HVAD ER DE NYE MULIGHEDER MED VERSION 7.1? STEFFEN BILLE RANNES, 4. FEBRUAR 2015

Finn Gilling The Human Decision/ Gilling September Insights Danmark 2012 Hotel Scandic Aarhus City

Netkit Dokumentation

Sikkerhedsvejledning

Development environments made easy

LESSON NOTES Extensive Reading in Danish for Intermediate Learners #8 How to Interview

SAS2WPS Workshop. Torben Christensen! Senior Partner, MSc.! tlf: Copyright UniQcus 2014

Mobile Hospitals. A world on wheels

Modtageklasser i Tønder Kommune

Applications. Computational Linguistics: Jordan Boyd-Graber University of Maryland RL FOR MACHINE TRANSLATION. Slides adapted from Phillip Koehn

QUICK START Updated:

Dagens program. Domæner. change log- screen shots hver gang I har arbejdet med themet. Arkitekturen bag en wp blog. Hvad er widgets.

Transkript:

Programmering af sensor netværk

PC Programmering 101 En PC er typisk udstyret med: en 32/64 bit CPU Har en masse RAM En harddisk En skærm Et antal I/O porte og Er på netværk. Den benytter BIOS (Basic Input/Output System) til opstart Den benytter et operativsystem der indeholder: Memory Management Proceshåndtering I/O og Et filsystem Den understøtter et programmerings miljø med editor, oversætter, linker og flere forskellige slags programmeringssprog

Sensor netværk Programmering En sensor node er typisk udstyret med: En MCU på 8/16/32 bit En lille smule RAM (KB) En flashdisk Et antal lysdioder (LEDs) Et Seriel og/eller USB interface En radio Et antal sensorer og Et batteri HUSK: et sensor netværk er en samling af mange sensor noder Hvordan loader man et program? Hvordan skriver man et program? Hvordan udfører man et program?

Tilgængelige sensor node testnet Harvard Motelab har et netværk bestående af 190 Tmote Sky sensor noder. http://motelab.eecs.harvard.edu/ DSN Testbed at ETH Zurich. De har flere forskellige slags sensor noder tilgængelige http://www.btnode.ethz.ch/projects/jaws DIKU Testbed. The testbed has about 40 Freescale DIG-528 boards. A full scale deployment with about 120 boards is planned for 2006. http://www.distlab.dk/remote/

DIKUs testbed - Re-mote DEMO! (..det skal nok gå galt..)

Kryds-kompilering A cross compiler is a compiler capable of creating executable code for a platform other than the one on which the cross compiler is run. Cross compiler tools are generally found in use to generate compiles for embedded system or multiple platforms. It is a tool that one must use for a platform where it is inconvenient or impossible to compile on that platform, like microcontrollers that run with a minimal amount of memory for their own purpose.

Virtual machines Java Virtual Machine (JVM) er en virtuel maskine der fortolker og udfører Java bytekode. I programmeringssproget Java skrives alt source kode i alm. tekstfiler der ender med.java. Disse filer oversættes med javac compileren til.class filer. En.class fil indeholder bytekode der kan udføres på en JVM. Fordi JVM er tilgængelig på mange forskellige styresystemer, kan den samme.class fil udføres på både Microsoft Windows, såvel som på Solaris eller Linux eller Mac OS.

Oversættelse af java programmer Write once run anywhere

Squawk JVM Squawk is java virtual machine for embedded system and small devices. Most JVMs, if not all, are written in low level languages such as C/C++ and assembler. What makes Squawk different from the other virtual machine is that Squawk's core is mostly written in Java.

Hvordan man loader et program 1 node af gangen: En binær fil uploades via seriel eller USB interface fra host PC direkte til 1 sensor node Flere noder på en gang: En binær fil transmitteres over netværket til flere noder på en gang. Der findes en mekanisme til at holde styr på flere programmer på en gang (f.eks. En scheduler) Rent praktisk bruger man et lille program der kalders en programmer til at overføre programmet til sensor noden med

Udviklingsmiljø uundværlige redskaber 1) Programmet Make http://www.gnu.org/software/make/ 2) CVS/SVN concurrent versioning system http://subversion.tigris.org/ http://en.wikipedia.org/wiki/subversio n_(software) http://www.nongnu.org/cvs/ 3) Et godt IDE (Integrated Development Environment) til udvikling f.eks. Eclipse http://www.eclipse.org/ http://www.dcg.ethz.ch/~rschuler/arti cles/tutorial_wizard.htm

Hvad er TinyOS? TinyOS is an event based operating environment designed for use with embedded networked sensors. More specifically, it is designed to support the concurrency intensive operations required by networked sensors with minimal hardware requirements. The programming language of TinyOS is stylized C that uses a custom compiler 'NesC' (network embedded system C). The source for NesC as well as TinyOS are available on SourceForge. TinyOS was initially developed by the U.C. Berkeley EECS Department

Installing TinyOS 1) Installing a Java 1.5 (Java 5) JDK. Java is the most common way of interacting with mote base stations or gateways that are plugged into a PC or laptop. 2) (Windows only) Install Cygwin. This gives you a shell and many UNIX tools which the TinyOS environment uses, such as perl and shell scripts. 3) Installing native compilers. As you're compiling code for low-power microcontrollers, you need compilers that can generate the proper assembly code. If you using mica-family motes, you need the AVR toolchain; if you're using telos-family motes, you need the MSP430 toolchain. 4) Installing the nesc compiler. 5) Installing the TinyOS source tree. 6) Installing the Graphviz visualization tool. http://www.tinyos.net/tinyos-2.x/doc/html/install-tinyos.html

Hvad er et embedded program? Styresystemer er en del af programmet Styresystemet tilbyder ressourcestyring og kørselsmodel. Det laver initiel opsætning af og adgang til de forskellige hardware komponenter Der er ingen krystalklar grænse mellem userland og system space. Et program udfører følgende: Initialiserer hardwaren Sover Behandler hændelser

NesC struktur En nesc applikation består af en eller flere komponenter, der er blevet samlet eller wired til at forme en applikation. Komponenter spænder over to virkefelter: Et der indeholder deres specifikation, som indeholder navnene på deres interfaces og et andet til deres implementering. En komponent tilbyder og benytter interfaces (grænseflader). Den tilbyder interfaces, som er beregnet til at repræsentere den funktionalitet som komponenten gør tilgængelig for brugeren og de benyttede interfaces repræsenterer den funktionalitet som komponenten har brug for, for at kunne udføre opgaven i selve implementeringen. Interfaces er tovejede: De specifikerer et kommandosæt, som er funktioner der skal implementeres af service provideren, og en samling af events (hændelser), der skal implementeres af interfacets bruger. For at en komponent kan kalde kommandoerne i et interface, skal den implementere de mulige events. En enkelt komponents kan bruge og tilbyde mange forskellige interfaces og også flere instancer af det samme interface.

Modules and Configurations Configurations Modules Configurations are used to assemble other components together, connecting interfaces used by components to interfaces provided by others. Modules provide the implementations of one or more interfaces. Every nesc application is described by a top-level configuration that wires together the components inside. BlinkAppC.nc er testprogrammet Blink's konfiguration Module implementations are for the most part written in C, with some extra constructions for nesc abstractions. Modules can declare state variables. BlinkC.nc er testprogrammet Blink's modul

Konfigurationen BlinkAppC configuration BlinkAppC { } implementation { components MainC, BlinkC, LedsC; components new TimerMilliC() as Timer0; components new TimerMilliC() as Timer1; components new TimerMilliC() as Timer2; BlinkC -> MainC.Boot; MainC.SoftwareInit -> LedsC; BlinkC.Timer0 -> Timer0; BlinkC.Timer1 -> Timer1; BlinkC.Timer2 -> Timer2; BlinkC.Leds -> LedsC; }

Modulet BlinkC.nc module BlinkC { uses interface Timer<TMilli> as Timer0; uses interface Timer<TMilli> as Timer1; uses interface Timer<TMilli> as Timer2; uses interface Leds; users interface Boot; } implementation { // implementation code omitted }

Events implementation { event void Boot.booted() { call Timer0.startPeriodic( 250 ); call Timer1.startPeriodic( 500 ); call Timer2.startPeriodic( 1000 ); } event void Timer0.fired() { call Leds.led0Toggle(); } event void Timer1.fired() { call Leds.led1Toggle(); } }

Events - fortsat interface Leds { /** * Turn LED n */ async command async command async command on, off, or toggle its present state. void led0on(); void led0off(); void led0toggle(); async command void led1on(); async command void led1off(); async command void led1toggle(); /** * Get/Set the current LED settings as a bitmask. Each bit corresponds to * whether an LED is on; bit 0 is LED 0, bit 1 is LED 1, etc. */ async command uint8_t get(); async command void set(uint8_t val); }

Tasks Alt det kode vi har kigget på indtil nu har været synkront. Det vil sige at det udføres i en enkelt udførselssammenhæng og at det ikke giver slip på CPUen før det er kørt færdigt. Men hvis et lille stykke synkront kode kører i lang tid forhindrer det anden synkronkode i at blive kørt og kan påvirke systemets reaktionstid. En komponent kan have brug for at dele en stor beregning op i mindre dele, der kan udføres en af gangen. Nogle gange er det også i orden hvis beregningen bliver skubbet tidsmæssigt det behøver ikke være lige nu. Dette kan gøres med en task. Den declareres i implementationen og kan derefter kaldes med kommandoen: post taskname();

Lidt om datatyper i TinyOS Til forskel fra std. C navne som int, long eller char benytter TinyOS mere eksplicitte typer, der samtidig declarerer deres størrelse. TinyOS kode undgår f.eks. At bruge bruge den rene datatype int, fordi den er platform specifik. På Mica og Telos noder er int 16 bit, hvorimod den på IntelMote2 er 32 bit. TinyOS kode er storforbruger af unsigned værdier. De bliver brugt som wrappere, fordi negative tal kan føre til meget utilsigtede konsekvenser. signed unsigned 8 bits int8_t uint8_t 16 bits int16_t uint16_t 32 bits int32_t uint32_t 64 bits int64_t uint64_t

Afprøvningsstrategier Der er primært to slags måder at afprøve sit program på: Simulering Til TinyOS findes programmet TOSSIM, der er skrevet i java der simulererer et kørerende system Instumentation Konkret afprøvning på sensor noden Vha. En pakkesniffer Vha. Traces Ved at koble I/O enheder til der kan give synligt output "When all you have is a hammer, every problem looks like a nail."

Afrunding Næste gang skal i høre mere om hvordan selve netværket i sensor netværk fungerer.