Internship at Sentilla. Chris Merlin March 08 - June 08
|
|
- Bryce Shaw
- 5 years ago
- Views:
Transcription
1 Internship at Sentilla Chris Merlin March 08 - June 08
2 Overview The Sentilla Co. and The Product The smallest platform to carry a JVM Particularities of Coding in Java Application Engineering
3 Sentilla Formerly Moteiv (2003) o Moteiv was focused on hardware (products: tmote-sky, tmote-invent, etc.) o Moteiv used TinyOS Sentilla (2007) now oriented toward software o Adopted Java Simple programming language 6 million Java programmers in the world Small team Venture-backed Company: Onset, Claremont Creek
4 The Sentilla Product: Sentilla Work Focus of Sentilla: to provide Software for quick Pervasive Computing deployments using Java IDE (Sentilla Work): Lets programmers write Java Code Comes with help and tutorials Allows to burn motes with firmware Has to be understood as Windows of WSN: Provides APIs, Drivers, libraries Client can run Java applets to interface with Internet or other elements of computer Manages applications Users write applications for their needs
5 Firmware / MAC MAC: Part of firmware: cannot be changed MAC is Low-Power-Listening scheme: value of LPL interval fixed, but can be chosen to be one of 3 values Passphrase for data encryption: slows communications by factor of 3-4 Communication channel fixed makes subnetwork
6 Overview The Sentilla Co. and The Product The smallest platform to carry a JVM Particularities of Coding in Java Application Engineering
7 The JVM Core based on Ti MSP430 o 16bit, 8MHz CPU o 48K flash on CPU o 10K RAM o 1MB external flash Runs a Java Virtual Machine Now CLDC 1.0 compliant
8 Advantages of Java Object-Oriented programming language: o Particularly well adapted to wireless sensor nodes o Allows to instantiate different objects depending on the mote ID public static void motemain() { long id = [...]; if (id == mote1_id) new app1(); else new app2(); now, code for sender and receiver can be clearly separated
9 (...2) Advantages of Java import com.sentilla.io.*; import com.sentilla.system.*; import javax.measure.*; public class SensorApp { public static class SensorMessage implements Serializable { nx_uint16_t interval; /* Samping period. */ Compact programming language public long address; public Measurable<Temperature> value; public static void motemain() { Sensor<Temperature> temp = SensorDriver.create( mcutemp, Temperature.class); Sender sender = SenderDriver.create( collect ); SensorMessage msg = new SensorMessage(); msg.address = PropertyDriver.open("mac64").readLong(); while (true) { msg.value = temp.read(); if (msg.value.doublevalue(si.celsius) > (double)50) { sender.send( msg ); try { Thread.sleep(1000); catch (Exception e) { e.printstacktrace() #ifndef MULTIHOP_OSCILLOSCOPE_H #define MULTIHOP_OSCILLOSCOPE_H enum { /* Number of readings per message. If you increase this, you may have to increase the message_t size. */ NREADINGS = 5, DEFAULT_INTERVAL = 1024, AM_OSCILLOSCOPE = 0x93 ; typedef nx_struct oscilloscope { nx_uint16_t version; /* Version of the interval. */ nx_uint16_t id; /* Mote id of sending mote. */ nx_uint16_t count; /* The readings are samples count * NREADINGS onwards */ nx_uint16_t readings[nreadings]; oscilloscope_t; #endif configuration MultihopOscilloscopeAppC { implementation { components MainC, MultihopOscilloscopeC, LedsC, new TimerMilliC(), new DemoSensorC() as Sensor; MultihopOscilloscopeC.Boot -> MainC; MultihopOscilloscopeC.Timer -> TimerMilliC; MultihopOscilloscopeC.Read -> Sensor; MultihopOscilloscopeC.Leds -> LedsC; components CollectionC as Collector, // Collection layer ActiveMessageC, // AM layer new CollectionSenderC(AM_OSCILLOSCOPE), // Sends multihop RF SerialActiveMessageC, // Serial messaging new SerialAMSenderC(AM_OSCILLOSCOPE); // Sends to the serial port MultihopOscilloscopeC.RadioControl -> ActiveMessageC; MultihopOscilloscopeC.SerialControl -> SerialActiveMessageC; MultihopOscilloscopeC.RoutingControl -> Collector; MultihopOscilloscopeC.Send -> CollectionSenderC; MultihopOscilloscopeC.SerialSend -> SerialAMSenderC.AMSend; MultihopOscilloscopeC.Snoop -> Collector.Snoop[AM_OSCILLOSCOPE]; MultihopOscilloscopeC.Receive -> Collector.Receive[AM_OSCILLOSCOPE]; MultihopOscilloscopeC.RootControl -> Collector; components new PoolC(message_t, 10) as UARTMessagePoolP, new QueueC(message_t*, 10) as UARTQueueP; MultihopOscilloscopeC.UARTMessagePool -> UARTMessagePoolP; MultihopOscilloscopeC.UARTQueue -> UARTQueueP; #include "Timer.h" #include "MultihopOscilloscope.h" module MultihopOscilloscopeC { uses { // Interfaces for initialization: interface Boot; interface SplitControl as RadioControl; interface SplitControl as SerialControl; interface StdControl as RoutingControl; // Interfaces for communication, multihop and serial: interface Send; interface Receive as Snoop; interface Receive; interface AMSend as SerialSend; interface CollectionPacket; interface RootControl; interface Queue<message_t *> as UARTQueue; interface Pool<message_t> as UARTMessagePool; // Miscalleny: interface Timer<TMilli>; interface Read<uint16_t>; interface Leds; implementation { task void uartsendtask(); static void starttimer(); static void fatal_problem(); static void report_problem(); static void report_sent(); static void report_received(); uint8_t uartlen; message_t sendbuf; message_t uartbuf; bool sendbusy=false, uartbusy=false; oscilloscope_t local; uint8_t reading; /* 0 to NREADINGS */ bool suppress_count_change; event void Boot.booted() { local.interval = DEFAULT_INTERVAL; local.id = TOS_NODE_ID; local.version = 0; // Beginning our initialization phases: if (call RadioControl.start()!= SUCCESS) fatal_problem(); if (call RoutingControl.start()!= SUCCESS) fatal_problem(); event void RadioControl.startDone(error_t error) { if (error!= SUCCESS) fatal_problem(); if (sizeof(local) > call Send.maxPayloadLength()) fatal_problem(); if (call SerialControl.start()!= SUCCESS) fatal_problem(); event void SerialControl.startDone(error_t error) { if (error!= SUCCESS) fatal_problem(); // This is how to set yourself as a root to the collection layer: if (local.id % 500 == 0) call RootControl.setRoot(); starttimer(); static void starttimer() { if (call Timer.isRunning()) call Timer.stop(); call Timer.startPeriodic(local.interval); reading = 0; event void RadioControl.stopDone(error_t error) { event void SerialControl.stopDone(error_t error) { event message_t* Receive.receive(message_t* msg, void *payload, uint8_t len) { oscilloscope_t* in = (oscilloscope_t*)payload; oscilloscope_t* out; if (uartbusy == FALSE) { out = (oscilloscope_t*)call SerialSend.getPayload(&uartbuf); if (len!= sizeof(oscilloscope_t)) { return msg; else { memcpy(out, in, sizeof(oscilloscope_t)); uartlen = sizeof(oscilloscope_t); post uartsendtask(); else { // The UART is busy; queue up messages and service them when the // UART becomes free. message_t *newmsg = call UARTMessagePool.get(); if (newmsg == NULL) { // drop the message on the floor if we run out of queue space. report_problem(); return msg; //Prepare message to be sent over the uart out = (oscilloscope_t*)call SerialSend.getPayload(newmsg); memcpy(out, in, sizeof(oscilloscope_t)); if (call UARTQueue.enqueue(newmsg)!= SUCCESS) { call UARTMessagePool.put(newmsg); fatal_problem(); return msg; return msg; task void uartsendtask() { if (call SerialSend.send(0xffff, &uartbuf, uartlen)!= SUCCESS) { report_problem(); else { uartbusy = TRUE; event void SerialSend.sendDone(message_t *msg, error_t error) { uartbusy = FALSE; if (call UARTQueue.empty() == FALSE) { message_t *queuemsg = call UARTQueue.dequeue(); if (queuemsg == NULL) { fatal_problem(); return; memcpy(&uartbuf, queuemsg, sizeof(message_t)); if (call UARTMessagePool.put(queuemsg)!= SUCCESS) { fatal_problem(); return; post uartsendtask(); event message_t* Snoop.receive(message_t* msg, void* payload, uint8_t len) { oscilloscope_t *omsg = payload; report_received(); // If we receive a newer version, update our interval. if (omsg->version > local.version) { local.version = omsg->version; local.interval = omsg->interval; starttimer(); // If we hear from a future count, jump ahead but suppress our own // change. if (omsg->count > local.count) { local.count = omsg->count; suppress_count_change = TRUE; return msg; event void Timer.fired() { if (reading == NREADINGS) { if (!sendbusy) { oscilloscope_t *o = (oscilloscope_t *)call Send.getPayload(&sendbuf); memcpy(o, &local, sizeof(local)); if (call Send.send(&sendbuf, sizeof(local)) == SUCCESS) sendbusy = TRUE; else report_problem(); reading = 0; /* Part 2 of cheap "time sync": increment our count if we didn't jump ahead. */ if (!suppress_count_change) local.count++; suppress_count_change = FALSE; if (call Read.read()!= SUCCESS) fatal_problem(); event void Send.sendDone(message_t* msg, error_t error) { if (error == SUCCESS) report_sent(); else report_problem(); sendbusy = FALSE; event void Read.readDone(error_t result, uint16_t data) { if (result!= SUCCESS) { data = 0xffff; report_problem(); local.readings[reading++] = data; // Use LEDs to report various status issues. static void fatal_problem() { call Leds.led0On(); call Leds.led1On(); call Leds.led2On(); call Timer.stop(); static void report_problem() { call Leds.led0Toggle(); static void report_sent() { call Leds.led1Toggle(); static void report_received() { call Leds.led2Toggle();
10 (...3) Advantages of Java Dynamic memory allocation o Garbage collector o Supported Objects: Strings Arrays of variable size Native code still used for interfacing with hardware Multi-threading 6,000,000+ Java Programmers in the World (200,000 TinyOS)
11 Disadvantages of Java Slower than native code (4 orders of magnitude) I measured 17ms to toggle LEDs! JVM takes a large part of the available resources Forces to use swapping: slow
12 Overview The Sentilla Co. and The Product The smallest platform to carry a JVM Particularities of Coding in Java Application Engineering
13 Driver Instantiation Since OO programming language, every layer of the stack becomes an Object To send a packet: instantiate a SenderDriver as such: public class Message Implements Serializable { public float data; Sender sender = SenderDriver.create( local ); Message msg = new Message(); sender.send(msg); Instantiate Receiver, Sender, Leds, messages, DigitalPins, VoltageAdc, etc.
14 Interrupts Java offers a relatively simple way to handle events/interrupts Need to instantiate an InterruptPin (for instance) Two solutions: Invoke blocking calls: the thread hangs until specified timeout or event completed pin.block().wait(timeout); Blocking call stops thread may need to create other threads for rest of program If loop cannot be stopped, keep checking whether event has happened or not pin.isdone();
15 ( 2) Interrupts Receiver has a blocking call: can specify timeout after which thread continues if no packet received (ACKs) InterruptPin s can specify rising / falling edge, or either Go hand-in-hand with atomicity concerns
16 Atomicity Handled very differently than in TinyOS x.x No tasks No synchronous or asynchronous events No events Use of lock (a mutex): Declare an Object that will be your mutex Enter a Synchronized block; locks mutex The code within Synchronized blocks over the same mutex is mutually exclusive At end of block, release mutex (convention)
17 Sample Code public class LeftMonitorThread extends Thread{ public LeftMonitorThread(){ msg.countin = 0; msg.countout = 0; public void run(){ int direction; while(true){ direction = 0; leftbeam.edge(false, true); synchronized(lock){ lasttimelefttripped = ava.lang.system.currenttimemillis(); lock.notifyall(); Thread.sleep(100); if (!leftbeam.read()){ synchronized(lock){ lasttimelefttripped = 0; lock.notifyall(); If other beam broken less than 700ms ago: person else{ synchronized(lock){ if (lasttimelefttripped - lasttimerighttripped < 700){ msg.countout++; lasttimelefttripped = 0; direction = -1; lock.notifyall(); displayleds(direction, (short)2, (direction == 0? false : true)); Probably was nothing (a fly)
18 Tricks and Customs Coding in Java for extremely small platforms unusual Same ideas apply as when first cell phones appeared and were running Java Do not keep re-instantiating / Reuse objects Take allocations out of loop Have as many blocking commands as possible Avoid loop that keeps checking status (keeps CPU in sleep mode) Threads are expensive (2) Keep number of classes low to reduce look-up Use fewer LEDs (3mA per LED) / blink them Avoid frequent packets Use raw values whenever possible (for accelerometer, etc.)
19 Debugging Java throws Exceptions when normal flow of execution is interrupted Exceptions are propagated and appear on console The JCreate has 8LEDs Problem: native code cannot be debugged without help of JTag
20 Overview The Sentilla Co. and The Product The smallest platform to carry a JVM Particularities of Coding in Java Application Engineering
21 Application Engineering Consists in a team of 3 engineers The team is the service side of the business model Writing applications for the office to showcase Developing applications for conferences Providing services for customer s specific needs (energy scavenging, deployment challenges, etc.) Developed JCreate as a prototyping platform: Has a MSP430 based core Has an accelerometer 8 LEDs 2 AAA batteries
22 The JCreate Accelerometer 3-axis accelerometer built in JCreate Formerly, only 1 channel of ADC could be sampled before return statement Code for multiple channel samples: o Sequential mode o Channels to sample placed in array of variable size (in TinyOS!) o Values returned in buffer of variable size For 3 read operations, time went from 30ms to 10ms
23 Java Accelerometer Driver Instantiates ADC pins (constructor argument is pin number), allocates memory Starts the Accelerometer chip Sets sensitivity Keeps track of monitored axis Gets raw values (4B int) x is raw value Voltage = x >> 20 (or division by )
24 Applications: POV Persistence of Vision Display a sentence onto mote s LEDs by moving JCreate back and forth Accelerometer starts display sequence according to hand position
25 Java One Keynote Count people in and out of rooms Emitter: o 2 IR beams sent by emitter (9V individual power) o 36KHz and 56kHz to discriminate between beams o Brought power from 3.5W to 1.75W Receiver: o Mote powers and reads two IR receivers o Depending on which beam cut first: direction of person walking known o Uses interrupt pins: CPU waits for interrupt (sleeps) => low energy use
26 ( 2) Java One Keynote Monitor humidity, light and temperature Use of collect protocol Many-to-one Routing over several hops Every node sends its data Buggy protocol Information reported to website: data displayed over time
27 Questions and Answers
Wireless Systems Laboratory 4 November 2013
Wireless Systems Laboratory 4 November 2013 A. Cammarano, A.Capossele, D. Spenza Contacts Cammarano: Capossele: Spenza: cammarano@di.uniroma1.it capossele@di.uniroma1.it spenza@di.uniroma1.it Tel: 06-49918430
More informationPolitecnico di Milano Advanced Network Technologies Laboratory. Internet of Things. TinyOS Programming and TOSSIM (and Cooja)
Politecnico di Milano Advanced Network Technologies Laboratory Internet of Things TinyOS Programming and TOSSIM (and Cooja) 20 April 2015 Agenda o Playing with TinyOS n Programming and components n Blink
More informationPolitecnico di Milano Advanced Network Technologies Laboratory. Internet of Things. TinyOS Programming and TOSSIM
Politecnico di Milano Advanced Network Technologies Laboratory Internet of Things TinyOS Programming and TOSSIM 11 April 2011 Agenda Playing with TinyOS Programming and components Blink Application Using
More informationPolitecnico di Milano Advanced Network Technologies Laboratory. Internet of Things. TinyOS Programming and TOSSIM (and Cooja)
Politecnico di Milano Advanced Network Technologies Laboratory Internet of Things TinyOS Programming and TOSSIM (and Cooja) 19 March 2018 Agenda Playing with TinyOS Programming and components Blink Application
More informationPolitecnico di Milano Advanced Network Technologies Laboratory. TinyOS
Politecnico di Milano Advanced Network Technologies Laboratory TinyOS Politecnico di Milano Advanced Network Technologies Laboratory A Bit of Context on WSNs Technology, Applications and Sensor Nodes WSN
More informationWSN Programming. Introduction. Olaf Landsiedel. Programming WSNs. ! What do we need to write software for WSNs?! Programming language
WSN Programming Introduction Lecture 2 Olaf Landsiedel Programming WSNs! What do we need to write software for WSNs?! Programming language " With compiler, etc.! OS / runtime libraries " Access to system
More informationWSN Programming. Introduction. Olaf Landsiedel
WSN Programming Introduction Olaf Landsiedel Programming WSNs What do we need to write software for WSNs? (or: for any system, like your laptop, cell phone?) Programming language With compiler, etc. OS
More informationIntroduction to TinyOS
Fakultät Informatik Institut für Systemarchitektur Professur Rechnernetze Introduction to TinyOS Jianjun Wen 21.04.2016 Outline Hardware Platforms Introduction to TinyOS Environment Setup Project of This
More informationCollection. Abstract. 1. Introduction. Note. TEP: 119 Net2 Working Group
Collection TEP: 119 Group: Net2 Working Group Type: Documentary Status: Final TinyOS-Version: > 2.1 Author: Rodrigo Fonseca, Omprakash Gnawali, Kyle Jamieson, and Philip Levis Draft-Created: 09-Feb-2006
More informationANEXO D CÓDIGO DE LA APLICACIÓN. El contenido de los archivos de código fuente almacenados en el directorio Nodo desconocido es el siguiente:
ANEXO D CÓDIGO DE LA APLICACIÓN El contenido de los archivos de código fuente almacenados en el directorio Nodo desconocido es el siguiente: APPLICATIONDEFINITIONS.H #ifndef APPLICATIONDEFINITIONS_H #define
More informationTinyOS Tutorial. Greg Hackmann CSE 521S Fall 2010
TinyOS Tutorial Greg Hackmann CSE 521S Fall 2010 Outline Installing TinyOS and Building Your First App Hardware Primer Basic nesc Syntax Advanced nesc Syntax Network Communication Sensor Data Acquisition
More informationWireless Sensor Networks (WSN)
Wireless Sensor Networks (WSN) Operating Systems M. Schölzel Operating System Tasks Traditional OS Controlling and protecting access to resources (memory, I/O, computing resources) managing their allocation
More informationIntroduction to Programming Motes
Introduction to Programming Motes Mohamed M. El Wakil http://mohamed.elwakil.net mohamed.elwakil@wmich.edu Wireless Sensornets (WiSe) Laboratory Department of Computer Science Western Michigan University
More informationThe Emergence of Networking Abstractions and Techniques in TinyOS
The Emergence of Networking Abstractions and Techniques in TinyOS CS295-1 Paper Presentation Mert Akdere 10.12.2005 Outline Problem Statement & Motivation Background Information TinyOS HW Platforms Sample
More informationComplete Network Embedded System
Wireless Embedded Systems and Networking Foundations of IP-based Ubiquitous Sensor Networks TinyOS 2.0 Design and Application Services David E. Culler University of California, Berkeley Arch Rock Corp.
More informationnesc Prof. Chenyang Lu How should network msg be handled? Too much memory for buffering and threads
nesc Prof. Chenyang Lu CSE 521S 1 How should network msg be handled? Socket/TCP/IP? Too much memory for buffering and threads Data buffered in network stack until application threads read it Application
More informationWireless Sensor Networks
Wireless Sensor Networks Interface Lecturer: Junseok KIM http://usn.konkuk.ac.kr/~jskim Blink Example If a uses a interface, it can call the interface s commands and must implement handlers for the interface
More informationEnabling Networked Sensors
Politecnico di Milano Advanced Network Technologies Laboratory Enabling Networked Sensors A Primer on TinyOS Ing. Matteo Cesana Office: DEI 3 Floor Room 335 Email: cesana@elet.polimi.it Phone: 0223993695
More informationRF Networking With MSP430 & the ez430-rf2500 Session 2 Miguel Morales, MSP430 Applications 6/5/2008 1
RF Networking With MSP430 & the ez430-rf2500 Session 2 Miguel Morales, MSP430 Applications 6/5/2008 1 Agenda Recap of Session 1 Hardware description Session 2 Lab Overview Lab 2.1 Tilt & Ambient Noise
More informationnesc Ø Programming language for TinyOS and applications Ø Support TinyOS components Ø Whole-program analysis at compile time Ø Static language
nesc Ø Programming language for TinyOS and applications Ø Support TinyOS components Ø Whole-program analysis at compile time q Improve robustness: detect race conditions q Optimization: function inlining
More informationINTRODUCTION TO WIRELESS SENSOR NETWORKS. CHAPTER 2: ANATOMY OF A SENSOR NODE Anna Förster
INTRODUCTION TO WIRELESS SENSOR NETWORKS CHAPTER 2: ANATOMY OF A SENSOR NODE Anna Förster OVERVIEW 1. Hardware components 2. Power Consumption 3. Operating Systems and Concepts 1. Memory Management 2.
More informationWireless Embedded Systems and Networking. How to get TinyOS open source dist.
Wireless Embedded Systems and Networking Lab Day 5: Part 1: TinyOS Programming on Open Source Distribution Jaein Jeong University of California, Berkeley 1 How to get TinyOS open source dist. Latest version
More informationIntegrating Concurrency Control and Energy Management in Device Drivers. Chenyang Lu
Integrating Concurrency Control and Energy Management in Device Drivers Chenyang Lu Overview Ø Concurrency Control: q Concurrency of I/O operations alone, not of threads in general q Synchronous vs. Asynchronous
More informationA Virtual Machine-Based Programming Environment for Rapid Sensor Application Development
A Virtual Machine-Based Programming Environment for Rapid Sensor Application Development Jui-Nan Lin and Jiun-Long Huang Department of Computer Science National Chiao Tung University Hsinchu, Taiwan, ROC
More informationInside the Garbage Collector
Inside the Garbage Collector Agenda Applications and Resources The Managed Heap Mark and Compact Generations Non-Memory Resources Finalization Hindering the GC Helping the GC 2 Applications and Resources
More informationCM5000 DATASHEET v0.1
CM5000 DATASHEET - 2 - http://www.advanticsys.com/cm5000.html v0.1 Table of Contents 1. INTRODUCTION... 5 2. HARDWARE CHARACTERISTICS... 6 2.1 CM5000 DIAGRAMS... 6 2.2 MICROCONTROLLER DESCRIPTION - TI
More informationSensor Networks. Part 3: TinyOS. CATT Short Course, March 11, 2005 Mark Coates Mike Rabbat. Operating Systems 101
Sensor Networks Part 3: TinyOS CATT Short Course, March 11, 2005 Mark Coates Mike Rabbat 1 Operating Systems 101 operating system (äp ǝr āt ing sis tǝm) n. 1 software that controls the operation of a computer
More informationParallel Programming Languages COMP360
Parallel Programming Languages COMP360 The way the processor industry is going, is to add more and more cores, but nobody knows how to program those things. I mean, two, yeah; four, not really; eight,
More informationIntegrating Concurrency Control and Energy Management in Device Drivers
Integrating Concurrency Control and Energy Management in Device Drivers Kevin Klues, Vlado Handziski, Chenyang Lu, Adam Wolisz, David Culler, David Gay, and Philip Levis Overview Concurrency Control: Concurrency
More informationCS 31: Introduction to Computer Systems : Threads & Synchronization April 16-18, 2019
CS 31: Introduction to Computer Systems 22-23: Threads & Synchronization April 16-18, 2019 Making Programs Run Faster We all like how fast computers are In the old days (1980 s - 2005): Algorithm too slow?
More informationECE 462 Object-Oriented Programming using C++ and Java. Scheduling and Critical Section
ECE 462 Object-Oriented Programming g using C++ and Java Scheduling and Critical Section Yung-Hsiang Lu yunglu@purdue.edu d YHL Scheduling and Critical Section 1 Thread States born terminated ready running
More informationMiddleware for Wireless Sensor Networks: An Outlook
Middleware for Wireless Sensor Networks: An Outlook Gian Pietro Picco disi.unitn.it/~picco d3s.disi.unitn.it Department of Information Engineering & Computer Science University of Trento, Italy joint work
More informationAP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS
AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS PAUL L. BAILEY Abstract. This documents amalgamates various descriptions found on the internet, mostly from Oracle or Wikipedia. Very little of this
More informationMobile and Ubiquitous Computing TinyOS application example. Niki Trigoni
Mobile and Ubiquitous Computing TinyOS application example Niki Trigoni www.dcs.bbk.ac.uk/~niki niki@dcs.bbk.ac.uk Application Consider an application with the following functionality: The gateway node
More informationCMSC 433 Programming Language Technologies and Paradigms. Concurrency
CMSC 433 Programming Language Technologies and Paradigms Concurrency What is Concurrency? Simple definition Sequential programs have one thread of control Concurrent programs have many Concurrency vs.
More informationEMBEDDED SYSTEMS WITH ROBOTICS AND SENSORS USING ERLANG
EMBEDDED SYSTEMS WITH ROBOTICS AND SENSORS USING ERLANG Adam Lindberg github.com/eproxus HARDWARE COMPONENTS SOFTWARE FUTURE Boot, Serial console, Erlang shell DEMO THE GRISP BOARD SPECS Hardware & specifications
More informationEE445L Fall 2014 Final Version A Page 1 of 7
EE445L Fall 2014 Final Version A Page 1 of 7 Jonathan W. Valvano First: Last: This is the closed book section. You must put your answers in the boxes. When you are done, you turn in the closed-book part
More informationProcess Management And Synchronization
Process Management And Synchronization In a single processor multiprogramming system the processor switches between the various jobs until to finish the execution of all jobs. These jobs will share the
More informationMonitors; Software Transactional Memory
Monitors; Software Transactional Memory Parallel and Distributed Computing Department of Computer Science and Engineering (DEI) Instituto Superior Técnico March 17, 2016 CPD (DEI / IST) Parallel and Distributed
More informationAIM: To create a project for implement a wireless communication protocol on an embedded system- ZigBee.
AIM: To create a project for implement a wireless communication protocol on an embedded system- ZigBee. Introduction ZigBee is one of the Advanced Wireless Technology and CC2430 is the first single-chip
More informationVirtual Machine Design
Virtual Machine Design Lecture 4: Multithreading and Synchronization Antero Taivalsaari September 2003 Session #2026: J2MEPlatform, Connected Limited Device Configuration (CLDC) Lecture Goals Give an overview
More informationADHOC ROUTING BASED DATA COLLECTION APPLICATION IN WIRELESS SENSOR NETWORKS MALLIKARJUNA RAO PINJALA B.E, OSMANIA UNIVERSITY, INDIA, 2004 A REPORT
ADHOC ROUTING BASED DATA COLLECTION APPLICATION IN WIRELESS SENSOR NETWORKS by MALLIKARJUNA RAO PINJALA B.E, OSMANIA UNIVERSITY, INDIA, 2004 A REPORT Submitted in partial fulfillment of the requirements
More informationDistributed Pervasive Systems
Distributed Pervasive Systems CS677 Guest Lecture Tian Guo Lecture 26, page 1 Outline Distributed Pervasive Systems Popular Application domains Sensor nodes and networks Energy in Distributed Systems (Green
More informationIndriya_DP_03A14. Features. Block Diagram. XBEE based Wireless Sensor Network development platform
Indriya TM is a hardware development environment for building ambient intelligence based wireless sensor network applications. Features Simple, pervasive & low power 8-bit microcontroller core with low-power
More informationIntroduction to Visual Basic and Visual C++ Introduction to Java. JDK Editions. Overview. Lesson 13. Overview
Introduction to Visual Basic and Visual C++ Introduction to Java Lesson 13 Overview I154-1-A A @ Peter Lo 2010 1 I154-1-A A @ Peter Lo 2010 2 Overview JDK Editions Before you can write and run the simple
More informationTinyOS 2.x. Hongwei Zhang
TinyOS 2.x Hongwei Zhang http://www.cs.wayne.edu/~hzhang Adapted from the IPSN 09 tutorial by Stephen Dawson-Haggerty, Omprakash Gnawali, David Gay, Philip Levis, Răzvan Musăloiu-E., Kevin Klues, and John
More informationA VIRTUALLAB APPROACH FOR WIRELESS SENSOR MOTES AND WIRELESS SENSOR NETWORKS
A VIRTUALLAB APPROACH FOR WIRELESS SENSOR MOTES AND WIRELESS SENSOR NETWORKS Anghel V. CONŢIU, Adina ŢOPA, Vasile T. DĂDÂRLAT Technical University of Cluj-Napoca, Str. Ctin Daicoviciu nr. 15, 400027 Cluj-Napoca,
More informationLow Power and Low Latency MAC Protocol: Dynamic Control of Radio Duty Cycle
24 IJCSNS International Journal of Computer Science and Network Security, VOL.12 No.12, December 212 Low Power and Low Latency MAC Protocol: Dynamic Control of Radio Duty Cycle Jeehoon Lee*, Jongsoo Jeong,
More informationOCF for resource-constrained environments
October 11 13, 2016 Berlin, Germany OCF for resource-constrained environments Kishen Maloor, Intel 1 Outline Introduction Brief background in OCF Core Constrained environment charactertics IoTivity-Constrained
More informationNeed for synchronization: If threads comprise parts of our software systems, then they must communicate.
Thread communication and synchronization There are two main aspects to Outline for Lecture 19 multithreaded programming in Java: I. Thread synchronization. thread lifecycle, and thread synchronization.
More informationJava Threads. COMP 585 Noteset #2 1
Java Threads The topic of threads overlaps the boundary between software development and operation systems. Words like process, task, and thread may mean different things depending on the author and the
More informationMiddleware for Sensor Networks
Middleware for Sensor Networks Krzysztof Piotrowski piotrowski@ihp-ffo.de Background Application Middleware Sensor Network Application Middleware Sensor Network Middleware for Sensor Networks 2 Middleware
More informationProgramming in Parallel COMP755
Programming in Parallel COMP755 All games have morals; and the game of Snakes and Ladders captures, as no other activity can hope to do, the eternal truth that for every ladder you hope to climb, a snake
More informationSystem Architecture Directions for Networked Sensors[1]
System Architecture Directions for Networked Sensors[1] Secure Sensor Networks Seminar presentation Eric Anderson System Architecture Directions for Networked Sensors[1] p. 1 Outline Sensor Network Characteristics
More informationJAVA and J2EE UNIT - 4 Multithreaded Programming And Event Handling
JAVA and J2EE UNIT - 4 Multithreaded Programming And Event Handling Multithreaded Programming Topics Multi Threaded Programming What are threads? How to make the classes threadable; Extending threads;
More informationTAG: A TINY AGGREGATION SERVICE FOR AD-HOC SENSOR NETWORKS
TAG: A TINY AGGREGATION SERVICE FOR AD-HOC SENSOR NETWORKS SAMUEL MADDEN, MICHAEL J. FRANKLIN, JOSEPH HELLERSTEIN, AND WEI HONG Proceedings of the Fifth Symposium on Operating Systems Design and implementation
More informationCSC 774 Advanced Network Security
Computer Science CSC 774 Advanced Network Security Topic 4.3 Mitigating DoS Attacks against Broadcast Authentication in Wireless Sensor Networks 1 Wireless Sensor Networks (WSN) A WSN consists of a potentially
More informationThreads Synchronization
Synchronization Threads Synchronization Threads share memory so communication can be based on shared references. This is a very effective way to communicate but is prone to two types of errors: Interference
More informationTinyOS Lesson 6 Topology Control
TinyOS Lesson 6 Topology Control Object To learn how to adjust the power level when sending the data, and retrieve the RSSI and LQI values from the receiver. Use the program named RssiSend to transmit
More informationInter-Integrated Circuit Bus IIC I2C TWI
Inter-Integrated Circuit Bus IIC TWI Bus Synchronous, multi-master, multi-slave, packet switched, single ended serial bus Developed by Philips in the early 1980 s (prior to SPI) Intended for on-board communications
More informationStackVsHeap SPL/2010 SPL/20
StackVsHeap Objectives Memory management central shared resource in multiprocessing RTE memory models that are used in Java and C++ services for Java/C++ programmer from RTE (JVM / OS). Perspectives of
More informationLast Class: Synchronization
Last Class: Synchronization Synchronization primitives are required to ensure that only one thread executes in a critical section at a time. Concurrent programs Low-level atomic operations (hardware) load/store
More informationDistributed Systems Exam 1 Review Paul Krzyzanowski. Rutgers University. Fall 2016
Distributed Systems 2015 Exam 1 Review Paul Krzyzanowski Rutgers University Fall 2016 1 Question 1 Why did the use of reference counting for remote objects prove to be impractical? Explain. It s not fault
More informationThe Kernel Abstraction
The Kernel Abstraction Debugging as Engineering Much of your time in this course will be spent debugging In industry, 50% of software dev is debugging Even more for kernel development How do you reduce
More informationProgramming Sensor Networks
Programming Sensor Networks Distributed Computing Group Nicolas Burri Pascal von Rickenbach Overview TinyOS Platform Program Development Current Projects MOBILE COMPUTING 2 Sensor Nodes System Constraints
More informationBluetooth low energy technology Bluegiga Technologies
Bluetooth low energy technology Bluegiga Technologies Topics Background What is Bluetooth low energy? Basic concepts Architecture Differentiation and comparison Markets and applications Background Background
More informationAccelerometer with Analog and Digital I/O for StackableUSB USB1600
The USB1600 accelerometer module provides the ideal mix of sensing ranges, resolutions, and sampling rates for rugged, compact embedded systems. The module stacks directly onto any StackableUSB Host computer
More informationLesson I2C. I²C (Inter-Integrated Circuit) Lab Assignment: I2C Slave Driver
Lesson I2C I²C (Inter-Integrated Circuit) Lab Assignment: I2C Slave Driver I²C (Inter-Integrated Circuit) What is I 2 C I2C is pronounced "eye-squared see". It is also known as "TWI" because of the initial
More informationSensors Network Simulators
Sensors Network Simulators Sensing Networking Qing Fang 10/14/05 Computation This Talk Not on how to run various network simulators Instead What differentiates various simulators Brief structures of the
More informationMultitasking Multitasking allows several activities to occur concurrently on the computer. A distinction is usually made between: Process-based multit
Threads Multitasking Multitasking allows several activities to occur concurrently on the computer. A distinction is usually made between: Process-based multitasking Thread-based multitasking Multitasking
More informationSBD WARRIOR DATA SHEET
SBD WARRIOR DATA SHEET www.satelligent.ca v1.3 Features Controller for Iridium 9603 SBD transceiver 48 channel SiRFstarIV chipset based GPS Serial interface for 3rd party equipment or PC control Wide supply
More informationContents. G53SRP: Java Threads. Definition. Why we need it. A Simple Embedded System. Why we need it. Java Threads 24/09/2009 G53SRP 1 ADC
Contents G53SRP: Java Threads Chris Greenhalgh School of Computer Science 1 Definition Motivations Threads Java threads Example embedded process Java Thread API & issues Exercises Book: Wellings 1.1 &
More informationComputation Abstractions. Processes vs. Threads. So, What Is a Thread? CMSC 433 Programming Language Technologies and Paradigms Spring 2007
CMSC 433 Programming Language Technologies and Paradigms Spring 2007 Threads and Synchronization May 8, 2007 Computation Abstractions t1 t1 t4 t2 t1 t2 t5 t3 p1 p2 p3 p4 CPU 1 CPU 2 A computer Processes
More informationDEVELOPMENT TEAM: Jeremiah Prousalis: Project Lead Firmware Lead Bluetooth Module Interfacing
DEVELOPMENT TEAM: Jeremiah Prousalis: Project Lead Firmware Lead Bluetooth Module Interfacing Nathaniel Bradley: Hardware Lead Analog IR Design Power System Design Jesus Castro: Software Lead Android Application
More informationProduct Specification
Product Specification 15mm x 27mm Description One of the most capable Bluetooth modules available, the BT-21 Bluetooth OEM Module is designed for maximum flexibility. The BT-21 module includes 14 general
More informationSynchronization COMPSCI 386
Synchronization COMPSCI 386 Obvious? // push an item onto the stack while (top == SIZE) ; stack[top++] = item; // pop an item off the stack while (top == 0) ; item = stack[top--]; PRODUCER CONSUMER Suppose
More informationG52CON: Concepts of Concurrency
G52CON: Concepts of Concurrency Lecture 4: Atomic Actions Natasha Alechina School of Computer Science nza@cs.nott.ac.uk Outline of the lecture process execution fine-grained atomic actions using fine-grained
More informationBT-22 Product Specification
BT-22 Product Specification Features Amp ed RF, Inc. Description 10.4 mm x 13.5 mm Our micro-sized Bluetooth module is the smallest form factor available providing a complete RF platform. The BT-22 is
More informationA TEMPORAL MESSAGE ORDERING AND OBJECT TRACKING APPLICATION. by LAKSHMAN KAVETI
A TEMPORAL MESSAGE ORDERING AND OBJECT TRACKING APPLICATION by LAKSHMAN KAVETI B.E., Deccan College of Engineering and Technology (affiliated with Osmania University), India, 2006 A REPORT Submitted in
More informationPractical Aspects of CTI WSN Testbed
Practical Aspects of CTI WSN Testbed Dpt. of Computer Engineering and Informatics, University of Patras, Greece Research Academic Computer Technology Institute (CTI), Patras, Greece 2nd PROSENSE Meeting
More informationTEVATRON TECHNOLOGIES PVT. LTD Embedded! Robotics! IoT! VLSI Design! Projects! Technical Consultancy! Education! STEM! Software!
Summer Training 2016 Advance Embedded Systems Fast track of AVR and detailed working on STM32 ARM Processor with RTOS- Real Time Operating Systems Covering 1. Hands on Topics and Sessions Covered in Summer
More informationCS11 Java. Fall Lecture 7
CS11 Java Fall 2006-2007 Lecture 7 Today s Topics All about Java Threads Some Lab 7 tips Java Threading Recap A program can use multiple threads to do several things at once A thread can have local (non-shared)
More informationIntroduction to OS Synchronization MOS 2.3
Introduction to OS Synchronization MOS 2.3 Mahmoud El-Gayyar elgayyar@ci.suez.edu.eg Mahmoud El-Gayyar / Introduction to OS 1 Challenge How can we help processes synchronize with each other? E.g., how
More informationPresented by: Murad Kaplan
Presented by: Murad Kaplan Introduction. Design of SCP-MAC. Lower Bound of Energy Performance with Periodic Traffic. Protocol Implementation. Experimental Evaluation. Related Work. 2 Energy is a critical
More informationKMote - Design and Implementation of a low cost, low power platform for wireless sensor networks. Naveen Madabhushi
KMote - Design and Implementation of a low cost, low power platform for wireless sensor networks Naveen Madabhushi Presentation Outline Introduction Related Work Motivation and Problem Statement Design
More informationExercise Session Week 8
Chair of Software Engineering Java and C# in Depth Carlo A. Furia, Marco Piccioni, Bertrand Meyer Exercise Session Week 8 Java 8 release date Was early September 2013 Currently moved to March 2014 http://openjdk.java.net/projects/jdk8/milestones
More informationCh 9: Control flow. Sequencers. Jumps. Jumps
Ch 9: Control flow Sequencers We will study a number of alternatives traditional sequencers: sequential conditional iterative jumps, low-level sequencers to transfer control escapes, sequencers to transfer
More informationEE445L Fall 2014 Final Version A solution Page 1 of 7
EE445L Fall 2014 Final Version A solution Page 1 of 7 Jonathan W. Valvano Solution This is the closed book section. You must put your answers in the boxes. When you are done, you turn in the closed-book
More information27 March 2018 Mikael Arguedas and Morgan Quigley
27 March 2018 Mikael Arguedas and Morgan Quigley Separate devices: (prototypes 0-3) Unified camera: (prototypes 4-5) Unified system: (prototypes 6+) USB3 USB Host USB3 USB2 USB3 USB Host PCIe root
More informationWhat is a thread anyway?
Concurrency in Java What is a thread anyway? Smallest sequence of instructions that can be managed independently by a scheduler There can be multiple threads within a process Threads can execute concurrently
More informationRemote Procedure Call
Remote Procedure Call Remote Procedure Call Integrate network communication with programming language Procedure call is well understood implementation use Control transfer Data transfer Goals Easy make
More informationSynchronising Threads
Synchronising Threads David Chisnall March 1, 2011 First Rule for Maintainable Concurrent Code No data may be both mutable and aliased Harder Problems Data is shared and mutable Access to it must be protected
More informationException Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011
More C++ David Chisnall March 17, 2011 Exceptions A more fashionable goto Provides a second way of sending an error condition up the stack until it can be handled Lets intervening stack frames ignore errors
More informationImplementation Garbage Collection
CITS 3242 Programming Paradigms Part IV: Advanced Topics Topic 19: Implementation Garbage Collection Most languages in the functional, logic, and object-oriented paradigms include some form of automatic
More informationFaust Android API. Using This Package
Faust Android API This API allows to interact with a natively compiled Faust object and its associated audio engine at a very high level from the JAVA layer of an Android app. The idea is that all the
More informationCS 333 Introduction to Operating Systems. Class 3 Threads & Concurrency. Jonathan Walpole Computer Science Portland State University
CS 333 Introduction to Operating Systems Class 3 Threads & Concurrency Jonathan Walpole Computer Science Portland State University 1 The Process Concept 2 The Process Concept Process a program in execution
More informationAVR XMEGA Product Line Introduction AVR XMEGA TM. Product Introduction.
AVR XMEGA TM Product Introduction 32-bit AVR UC3 AVR Flash Microcontrollers The highest performance AVR in the world 8/16-bit AVR XMEGA Peripheral Performance 8-bit megaavr The world s most successful
More informationExercise Session Week 8
Chair of Software Engineering Java and C# in Depth Carlo A. Furia, Marco Piccioni, Bertrand Meyer Exercise Session Week 8 Quiz 1: What is printed? (Java) class MyTask implements Runnable { public void
More informationAT-501 Cortex-A5 System On Module Product Brief
AT-501 Cortex-A5 System On Module Product Brief 1. Scope The following document provides a brief description of the AT-501 System on Module (SOM) its features and ordering options. For more details please
More informationGroup Members: Chetan Fegade Nikhil Mascarenhas. Mentor: Dr. Yann Hang Lee
Group Members: Chetan Fegade Nikhil Mascarenhas Mentor: Dr. Yann Hang Lee 1. Introduction 2. TinyGALS programming model 3. TinyOS 4. NesC 5. Middleware 6. Conclusion 7. References 8. Q & A Event driven
More information