TinyOS 2.0: A wireless sensor network operating system
|
|
|
- Arnold White
- 10 years ago
- Views:
Transcription
1 TinyOS 2.0: A wireless sensor network operating system David Gay, Intel Research Berkeley with Phil Levis, Vlado Handziski, Jonathan Hui, Jan-Hinrich Hauer, Ben Greenstein, Martin Turon, Kevin Klues, Cory Sharp, Robert Szewczyk, Joe Polastre, David Moss, Henri Dubois-Ferrière, Gilman Tolle, Philip Buonadonna, Lama Nachman, Adam Wolisz and David Culler
2 Sensor Networks Sensor network are collections of small, battery operated computers with sensors, and possibly actuators, to sense and control their environment radios, to report data and receive instructions typical expected lifetimes range from a few months to several years 2
3 Some Typical Devices mica2 (2002) 8MHz ATmega128 4kB RAM, 128kB flash 512kB external flash 20kb/s custom radio many different sensor boards 2 AA batteries: radio+cpu: 75mW sleep mode: 140µW telosb (2004) 1MHz TI MSP430 10kB RAM, 48kB flash 512kB external flash 250kb/s radio built-in sensors 2 AA batteries: radio+cpu mode: 63mW sleep mode: 30 µw lifetime: a few days to several years 3
4 Sensor Networks Sensor network are collections of small, battery operated computers with sensors, and possibly actuators, to sense and control their environment radios, to report data and receive instructions typical expected lifetimes range from a few months to several years Suggested applications include: data collection, environmental or industrial monitoring, object tracking Today: We ll build a simple anti-theft application using TinyOS 2.0, which detects theft by light level or movement reports theft by blinking, beeping, to neighbours or to a central server is configurable from a central server in less than 200 lines of code 4
5 Challenges Driven by interaction with environment ( Am I being stolen? ) Data collection and control, not general purpose computation Requires event-driven execution Extremely limited resources ( 2 AA s, 4kB of RAM ) Very low cost, size, and power consumption Reliability for long-lived applications ( Don t steal me in a year! ) Apps run for months/years without human intervention Reduce run time errors and complexity Real-time requirements ( What is movement anyway? ) Some time-critical tasks (sensor acquisition and radio timing) Timing constraints through complete control over app and OS Constant hardware evolution 5
6 Outline TinyOS and nesc overview Building a simple anti-theft application The Basics Advanced Networking Basic Networking BREAK Managing Power For experts: implementing device drivers resource and power management low-level code and concurrency Review and Conclusion 6
7 TinyOS and nesc TinyOS is an operating system designed to target limited-resource sensor network nodes TinyOS 0.4, 0.6 ( ) TinyOS 1.0 (2002): first nesc version TinyOS 1.1 (2003): reliability improvements, many new services TinyOS 2.0 (2006): complete rewrite, improved design, portability, reliability and documentation TinyOS and its application are implemented in nesc, a C dialect: nesc 1.0 (2002): Component-based programming nesc 1.1 (2003): Concurrency support nesc 1.2 (2005): Generic components, external types 7
8 TinyOS in a nutshell System runs a single application OS services can be tailored to the application s needs These OS services include timers, radio, serial port, A/D conversion, sensing, storage, multihop collection and dissemination, Application and services are built as a set of interacting components (as opposed to threads) using a strictly non-blocking execution model event-driven execution, most service requests are split-phase Implementation based on a set of OS abstractions tasks, atomic with respect to each other; interrupt handlers resource sharing and virtualisation, power management hardware abstraction architecture 8
9 nesc in a seashell C dialect Component based all interaction via interfaces connections ( wiring ) specified at compile-time generic components, interfaces for code reuse, simpler programming External types to simplify interoperable networking Reduced expressivity no dynamic allocation no function pointers Supports TinyOS s concurrency model must declare code that can run in interrupts atomic statements to deal with data accessed by interrupts data race detection to detect (some) concurrency bugs 9
10 The Basics Goal: write an anti-theft device. Let s start simple. Two parts: Detecting theft. Assume: thieves put the motes in their pockets. So, a dark mote is a stolen mote. Theft detection algorithm: every N ms check if light sensor is below some threshold Reporting theft. Assume: bright flashing lights deter thieves. Theft reporting algorithm: light the red LED for a little while! What we ll see Basic components, interfaces, wiring Essential system interfaces for startup, timing, sensor sampling 10
11 The Basics Let s Get Started module AntiTheftC { interface Boot { uses interface Boot; /* Signaled when OS booted */ uses interface Timer<TMilli> as Check; event void booted(); uses interface Read<uint16_t>; implementation { interface Timer<tag> { event void Boot.booted() command { void startoneshot(uint32_t period); call Check.startPeriodic(1000); command void startperiodic(uint32_t period); event void fired(); event void Check.fired() { call Read.read(); event void Read.readDone(error_t ok, uint16_t val) { if (ok == SUCCESS && val < 200) theftled(); Programs are built out of named components A component provides and uses interfaces Interfaces contain commands and events, which are just functions A module is a component implemented in C 11
12 The Basics Interfaces module AntiTheftC { uses interface Boot; uses interface Timer<TMilli> as Check; uses interface Read<uint16_t>; implementation { event void Boot.booted() { call Check.startPeriodic(1000); event void Check.fired() { call Read.read(); 12 event void Read.readDone(error_t ok, uint16_t val) { if (ok == SUCCESS && val < 200) theftled(); Interfaces specify the interaction between two components, the provider and the user. This interaction is just a function call. commands are calls from user to provider events are calls from provider to user interface Boot { /* Signaled when OS booted */ event void booted(); interface Timer<tag> { command void startoneshot(uint32_t period); command void startperiodic(uint32_t period); event void fired();
13 The Basics Interfaces and Split-Phase Ops module AntiTheftC { uses interface Boot; uses interface Timer<TMilli> as Check; uses interface Read<uint16_t>; implementation { event void Boot.booted() { call Check.startPeriodic(1000); event void Check.fired() { call Read.read(); event void Read.readDone(error_t ok, uint16_t val) { if (ok == SUCCESS && val < 200) theftled(); All long-running operations are split-phase: A command starts the op: read An event signals op completion: readdone interface Read<val_t> { command error_t read(); event void readdone(error_t ok, val_t val); 13
14 The Basics Interfaces and Split-Phase Ops module AntiTheftC { uses interface Boot; uses interface Timer<TMilli> as Check; uses interface Read<uint16_t>; implementation { event void Boot.booted() { call Check.startPeriodic(1000); event void Check.fired() { call Read.read(); event void Read.readDone(error_t ok, uint16_t val) { if (ok == SUCCESS && val < 200) theftled(); All long-running operations are split-phase: A command starts the op: read An event signals op completion: readdone Errors are signalled using the error_t type, typically Commands only allow one outstanding request Events report any problems occurring in the op interface Read<val_t> { command error_t read(); event void readdone(error_t ok, val_t val); 14
15 The Basics Configurations configuration AntiTheftAppC { implementation { components AntiTheftC, generic MainC, configuration LedsC; TimerMilliC() { provides interface Timer<TMilli>; AntiTheftC.Boot -> MainC.Boot; AntiTheftC.Leds -> LedsC; generic implementation configuration { PhotoC()... { components new provides TimerMilliC() interface as MyTimer; Read; AntiTheftC.Check -> MyTimer; implementation {... components new PhotoC(); AntiTheftC.Read -> PhotoC; A configuration is a component built out of other components. It wires used to provided interfaces. It can instantiate generic components It can itself provide and use interfaces 15
16 The Basics 16
17 The Basics Let s improve our anti-theft device. A clever thief could still steal our motes by keeping a light shining on them! But, however clever, the thief still needs to pick up a mote to steal it. Theft Detection Algorithm 2: Every N ms, sample acceleration at 100Hz and check if variance above some threshold What we ll see (Relatively) high frequency sampling support Use of tasks to defer computation-intensive activities TinyOS execution model 17
18 The Basics Advanced Sensing, Tasks uses interface ReadStream; uint16_t accelsamples[accel_samples]; event void Timer.fired() { call ReadStream.postBuffer(accelSamples, ACCEL_SAMPLES); call ReadStream.read(10000); event void ReadStream.readDone(error_t ok, uint32_t actualperiod) { if (ok == SUCCESS) a sensor into one or more buffers. post checkacceleration(); task void checkacceleration() {... check acceleration and report theft... interface ReadStream<val_t> { command error_t postbuffer(val_t* buf, uint16_t count); command error_t read(uint32_t period); event void readdone(error_t ok, uint32_t actualperiod); 18 ReadStream is an interface for periodic sampling of postbuffer adds one or more buffers for sampling read starts the sampling operation readdone is signalled when the last buffer is full
19 The Basics Advanced Sensing, Tasks uint16_t accelsamples[samples]; event void ReadStream.readDone(error_t ok, uint32_t actualperiod) { if (ok == SUCCESS) post checkacceleration(); task void checkacceleration() { uint16_t i, avg, var; for (avg = 0, i = 0; i < SAMPLES; i++) avg += accelsamples[i]; avg /= SAMPLES; for (var = 0, i = 0; i < SAMPLES; i++) { int16_t diff = accelsamples[i] - avg; var += diff * diff; if (var > 4 * SAMPLES) theftled(); In readdone, we need to compute the variance of the sample. We defer this computationallyintensive operation to a separate task, using post. We then compute the variance and report theft. 19
20 The Basics - TinyOS Execution Model RealMainP AntiTheftC Stack SchedulerP Timer RealMainP AntiTheftC Timer Alarm Task Queue serial receive Alarm AccelStreamC H/W timer A/D conv. Interrupt table 20
21 The Basics - TinyOS Execution Model RealMainP SchedulerP AntiTheftC Stack Alarm Timer SchedulerP Timer Task Queue serial receive timer task Alarm AccelStreamC H/W timer A/D conv. Interrupt table 21
22 The Basics - TinyOS Execution Model RealMainP AntiTheftC Stack SchedulerP Timer SchedulerP Timer AntiTheftC AccelStreamC Task Queue serial receive timer task Alarm AccelStreamC H/W timer A/D conv. Interrupt table 22
23 The Basics - Summary Components and Interfaces Programs built by writing and wiring components modules are components implemented in C configurations are components written by assembling other components Components interact via interfaces only Execution model Execution happens in a series of tasks (atomic with respect to each other) and interrupt handlers No threads System services: startup, timing, sensing (so far) (Mostly) represented by instantiatable generic components This instantiation happens at compile-time! (think C++ templates) All slow system requests are split-phase 23
24 Advanced Networking TinyOS 2.0 contains two useful network protocols: dissemination, that disseminates a value to all nodes in the network use for reconfiguration, program dissemination, i.e., network control collection, that allows all nodes to report values to root nodes the simplest data collection mechanism Dissemination Collection 24
25 Advanced Networking Different anti-theft mechanisms may be appropriate for different times or places. Our perfect anti-theft system must be configurable! We want to send some settings to all motes selecting between dark and acceleration detection. We ll also allow selection of siren-based alerts instead of the bright flashing light, and of the theft check interval We ll use the dissemination protocol to achieve this What we ll see: How to use the dissemination protocol How to start (and stop) services External types, and their use in networking 25
26 Advanced Networking External Types #include antitheft.h module AntiTheftC {... uses interface DisseminationValue<settings_t> as SettingsValue; implementation { settings_t settings; event void SettingsValue.changed() { const settings_t *newsettings = call SettingsValue.get(); #ifndef ANTITHEFT_H settings.detect = newsettings->detect; #define settings.alert ANTITHEFT_H = newsettings->alert; typedef call Check.startPeriod(newSettings->checkInterval); nx_struct { nx_uint8_t alert, detect; nx_uint16_t checkinterval; settings_t; #endif event void Timer.fired() { if (settings.detect & DETECT_DARK) call Read.read(); External types (nx_...) provide C-like access, but: if (settings.detect & DETECT_ACCEL) { call ReadStream.postBuffer(accelSamples, platform-independent ACCEL_SAMPLES); layout and endianness call ReadStream.read(10000); gives interoperability no alignment restrictions means they can easily be used in network buffers compiled to individual byte read/writes 26
27 Advanced Networking Dissemination #include antitheft.h module AntiTheftC {... uses interface DisseminationValue<settings_t> as SettingsValue; implementation { settings_t settings; event void SettingsValue.changed() { const settings_t *newsettings = call SettingsValue.get(); settings.detect = newsettings->detect; command const t* get(); settings.alert = newsettings->alert; event void changed(); call Check.startPeriod(newSettings->checkInterval); interface DisseminationValue<t> { event void Timer.fired() { if (settings.detect & DETECT_DARK) call Read.read(); Dissemination is simple to use: if (settings.detect & DETECT_ACCEL) The changed { event is signalled when new settings call ReadStream.postBuffer(accelSamples, are received ACCEL_SAMPLES); call ReadStream.read(10000); The get command is used to obtain the received value We can then simply read the received settings 27
28 Advanced Networking Dissemination configuration AntiTheftAppC { implementation {... components ActiveMessageC, new DisseminatorC(settings_t, DIS_SETTINGS); AntiTheftC.SettingsValue -> DisseminatorC; AntiTheftC.RadioControl -> ActiveMessageC; Finally, we need to wire in the new functionality: We create a disseminator for the settings_t type We wire ActiveMessageC to start to the radio (we ll see why in a little bit) 28
29 Dissemination How does it work? Use local broadcasts and packet suppression Scale to a wide range of densities Control transmissions over space 100% eventual reliability Disconnection, repopulation, etc. Continuous process Maintenance: exchange metadata (e.g., version numbers, hashes) at a low rate to ensure network is up to date Propagation: when a node detects an inconsistency, the network quickly broadcasts the new data [Slide Courtesy Phil Levis] 29
30 Advanced Networking Starting Services uses interface SplitControl as RadioControl;... event void Boot.booted() { call Check.startPeriodic(1000); call RadioControl.start(); interface SplitControl { command error_t start(); event void startdone(error_t ok); command error_t stop(); event void RadioControl.startDone(error_t event ok) void { stopdone(error_t ok); event void RadioControl.stopDone(error_t ok) { Whenever possible, TinyOS 2.0, starts and stops services automatically. This isn t possible for the radio (no knowledge of when messages might arrive), so responsibility passed to the programmer. Must turn on radio for dissemination service to work. SplitControl is one of the interfaces for starting and stopping services Split-phase, used when start/stop may take a while 30
31 Advanced Networking - Collection What if thieves aren t deterred by sirens and flashing lights? We need to report the theft! We ll use the tree-based collection to send theft reports to a base station. What we ll see: collection protocol message_t, TinyOS s message buffer type Send, TinyOS s address-less send interface 31
32 Advanced Networking - Collection interface Send as AlertRoot; interface StdControl as CollectionControl;... message_t alertmsg; event void RadioControl.startDone(error_t ok) { if (ok == SUCCESS) call CollectionControl.start(); void theft() { interface StdControl { if (settings.alert & ALERT_LEDS) command error_t start(); theftled(); command error_t stop(); if (settings.alert & ALERT_ROOT) { alert_t *newalert = call AlertRoot.getPayload(&alertMsg); newalert->stolenid = TOS_NODE_ID; call AlertRoot.send(&alertMsg, Start the sizeof radio *newalert); (already done) Start the collection service event void AlertRoot.sendDone(message_t *msg, error_t ok) { Before we can report anything, we need to: 32
33 Advanced Networking - Collection interface Send as AlertRoot; interface StdControl as CollectionControl;... interface Send { message_t alertmsg; command error_t send(message_t* msg, uint8_t len); event void RadioControl.startDone(error_t ok) { event void senddone(message_t* msg, error_t ok); if (ok == SUCCESS) call CollectionControl.start(); command uint8_t maxpayloadlength(); void theft() { command void* getpayload(message_t* msg); if (settings.alert & ALERT_LEDS) theftled(); if (settings.alert & ALERT_ROOT) { alert_t *newalert = call AlertRoot.getPayload(&alertMsg); newalert->stolenid = Collection TOS_NODE_ID; messages are sent call AlertRoot.send(&alertMsg, By placing sizeof data *newalert); in a message_t buffer Using the Send interface event void AlertRoot.sendDone(message_t *msg, error_t ok) { 33
34 Networking: packet abstract data type message_t is a platform-defined type for holding packets a fixed size byte array capable of holding MTU of all data-link layers (platform-selected) accessed only via interfaces: Packet: general payload access, provided at each layer xxpacket: information for layer xx link-layer header area data, footer, metadata area cc1000 header collection header application data cc1000 footer cc1000 metadata AMPacket CollectionPacket CC1000Packet 34 Packet
35 Networking: packet abstract data type message_t is a platform-defined type for holding packets a fixed size byte array capable of holding MTU of all data-link layers (platform-selected) accessed only via interfaces: Packet: general payload access, provided at each layer xxpacket: information for layer xx link-layer header area data, footer, metadata area cc1000 header collection header application data cc1000 footer cc1000 metadata AMPacket CollectionPacket CC1000Packet 35 Packet
36 Advanced Networking - Collection We use getpayload to get access to the portion of message_t available to the application typedef interface nx_struct Send as AlertRoot; { We use an external type to actually write the data interface nx_uint16_t StdControl stolenid; as CollectionControl;... alert_t; message_t alertmsg; event void RadioControl.startDone(error_t interface Send { ok) { if (ok == SUCCESS) command call CollectionControl.start(); error_t send(message_t* msg, uint8_t len); event void senddone(message_t* msg, error_t ok); void theft() { command uint8_t maxpayloadlength(); if (settings.alert & ALERT_LEDS) theftled(); command void* getpayload(message_t* msg); if (settings.alert & ALERT_ROOT) { alert_t *newalert = call AlertRoot.getPayload(&alertMsg); newalert->stolenid = TOS_NODE_ID; call AlertRoot.send(&alertMsg, sizeof *newalert); event void AlertRoot.sendDone(message_t *msg, error_t ok) { 36
37 Basic Networking The police may not get there in time to catch the mote thief. So, let s alert the mote s neighbours! We ll send a local broadcast message over the radio. What we ll see: active message-based single-hop messaging 37
38 Basic Networking - Interfaces address-free interfaces for sending, receiving: Send: send a packet Receive: receive a packet active messages interfaces: active messages has destination addresses active messages has message type, used for dispatch on reception AMSend: send a packet to an active message address Receive is reused Message type not specified in interfaces, but in configurations 38
39 Basic Networking interface AMSend { command error_t send(am_addr_t addr, message_t* msg, uint8_t len); event void senddone(message_t* msg, error_t ok); uses interface AMSend as TheftSend; uses command interface uint8_t Receive maxpayloadlength(); as TheftReceive;... command void* getpayload(message_t* msg); message_t theftmsg; void theft() {... if (settings.alert & ALERT_RADIO) call TheftSend.send(AM_BROADCAST_ADDR, &theftmsg, 0); event message_t *TheftReceive.receive (message_t* msg, void *payload, uint8_t len) { theftled(); return msg; AMSend is just like send, but with a destination The theft message has no data, so no use of the payload functions. 39
40 Basic Networking interface Receive{ event message_t* receive(message_t* msg, void* payload, uint8_t len); uses command interface uint8_t AMSend payloadlength(); as TheftSend; uses command interface void* Receive getpayload(message_t* as TheftReceive; msg);... message_t theftmsg; void theft() {... if (settings.alert & ALERT_RADIO) call TheftSend.send(AM_BROADCAST_ADDR, &theftmsg, 0); event message_t *TheftReceive.receive (message_t* msg, void *payload, uint8_t len) { theftled(); return msg; AMSend is just like send, but with a destination The theft message has no data, so no use of the payload functions. On Receive, we just light the bright red light 40
41 Basic Networking configuration AntiTheftAppC { implementation {... components new AMSenderC(54) as SendTheft, new AMReceiverC(54) as ReceiveTheft; AntiTheftC.TheftSend -> SendTheft; AntiTheftC.TheftReceive -> ReceiveTheft; generic configuration AMSenderC(am_id_t id) { provides interface AMSend; provides interface Packet; provides interface AMPacket; provides interface PacketAcknowledgements as Acks;... The Active Message ids used for dispatching are specified as parameters to the generic components used for active message sends and receives. 41
42 Basic Networking Buffer Management message_t buffer; Sending: message_t *lastreceived = &buffer; Each AMSenderC event component message_t* has receive(message_t* a 1-entry queue for msg, a message_t...) * Each outstanding { send must use a separate message_t buffer /* Return previous message buffer, save current msg */ up to application to ensure this message_t *toreturn = lastreceived; lastreceived = msg; commonly: associate a variable with each Send/AMSend interface, and don t reuse it until corresponding send completed Receiving: post processmessage(); Receive passes return you toreturn; a message_t *, and wants one back: event message_t* receive(message_t* msg,... Common pattern task void 1: copy processmessage() interesting data { out of msg, return msg Common pattern... use 2: lastreceived return a different... message, and access msg later 42
43 Networking - Summary Goals 1. A composable (application-selected) network stack 2. Platform-selected link layers 3. Portable, reusable code above the link layer 4. Cross-platform communication (ex: telosb-micaz, PC-any mote) Four-part solution: abstract data type for packets (message_t) composable, link layer independent, portable common networking interfaces (Send, AMSend, Receive) composable, portable external types (nx_struct, nx_uint16_t, etc) interoperable networking component structuring principles composable, link layer independent 43
44 Networking Component Structure Application Packet AMPacket AMSend AM Radio AM Serial 44
45 Messaging: networking component structure Application Packet Receive AM Radio 45
46 Messaging: networking component structure Application Collection cc coll. header Packet Receive Send AMSend Packet AM Radio cc1000 header Packet 46
47 Managing Power We want our anti-theft device to last a while, or the thief will just wait a bit to steal our motes! Luckily, in TinyOS 2, this is fairly straightforward Services and hardware components switch themselves on and off based on whether they are in use ex: light sensor switched on just before a reading, and off just afterwards ex: accelerometer switched on before group reading, warms up for 17ms, does readings, switches off The microcontroller is set to a power mode consistent with the rest of the system Radio reception is not as simple, as program doesn t specify when messages might arrive Applications can switch radio on or off explicitly Or, applications can use TinyOS 2 s low-power listening support Radio channel is checked every N ms Messages sent with an N ms preamble (or repeatedly for N ms) User must specify N (default is N=0, i.e., always on) 47
48 Using Low-power Listening module AntiTheftC... uses interface RadioControl; uses interface LowPowerListening;... event void RadioControl.startDone(error_t ok) { if (ok == SUCCESS) { call CollectionControl.start(); call LowPowerListening.setLocalDutyCycle(200); We request that the radio use a 2% duty-cycle lowpower listening strategy We wire the interface to the actual radio (not shown) 48
49 Power Management effects All On current (ma) time (s) All power management switched off: 11.83mA Checking acceleration every second 49
50 Power Management effects Accel Off current (ma) time (s) Accelerometer power management enabled: 11.46mA Checking acceleration every second 50
51 Power Management effects LPL current (ma) time (s) Low-power listening enabled: 4.26mA Checking acceleration every second 51
52 Power Management effects All Power Managed current (ma) time (s) Processor power management enabled, all power management switched on: 1.04mA Checking acceleration every second 52
53 For Experts : implementing device drivers Implementing a service, such as the timer or the light sensor involves one or more of: setting up support for multiple clients (via generic components) managing concurrent requests to the service (resource management) powering any necessary hardware on and off (power management) accessing low-level hardware, dealing with interrupts (concurrency) To see these issues in some detail, we ll look at the example of a simple analog sensor connected to an A/D channel of the microcontroller similar, but simpler than the PhotoC sensor used in AntiTheftC (that sensor shares and A/D channel with a temperature sensor, and needs a warmup period, complicating resource and power management) 53
54 A simple light sensor Basic steps to sample light sensor: Setup voltage on PW1 pin Turn on A/D converter Configure A/D converter for channel 6 Initiate A/D sampling In A/D interrupt handler: read A/D result registers report reading to application Turn off A/D converter Turn off voltage on PW1 pin PW1, ADC6 are microcontroller pins Exposing sensor (maybe) and A/D converter (definitely) to multiple clients Resource management: need to share light sensor and A/D converter with other clients Power management: should leave sensor or A/D on between consecutive clients or for repeated accesses Must avoid data races in interrupt handler and interrupt handler setup code 54
55 Services with Multiple Clients module AdcP { provides interface Read<uint16_t>; implementation { command error_t Read.read() { task void acquireddata() { signal Read.readDone(SUCCESS, val); 55
56 Services with Multiple Clients AntiTheftC Radio AccelStreamC AdcP Read interface 56
57 Services with Multiple Clients Radio AntiTheftC AccelStreamC Stack Radio AdcP AdcP Task Queue serial receive H/W timer A/D conv. Interrupt table 57
58 Services with Multiple Clients Radio AntiTheftC AccelStreamC Stack AdcP AccelStreamC Radio AdcP Task Queue serial receive H/W timer A/D conv. Interrupt table 58
59 A Fix: Parameterised Interfaces provide interface Read<uint16_t>[uint8_t id] provides an array of interfaces, each identified by an integer each of these interfaces can be wired differently compiles to a runtime dispatch on the identifier, or an extra argument on function calls Often, components just want any interface, as long as it s not used by someone else: unique( some string ): returns a different number at each use with the same string, from a contiguous sequence starting at 0 uniquecount( some string ): returns the number of uses of unique( some string ) 59
60 Services with multiple clients module AdcP { provides interface Read<uint16_t>[uint8_t client]; implementation { uint8_t client; command error_t Read.read[uint8_t c]() { client = c; task void acquireddata() { signal Read.readDone[client](SUCCESS, val); 60
61 Services with multiple clients generic configuration AdcReadClientC() { provides interface Read<uint16_t>; implementation { components AdcP; enum { ID = unique( adc.resource ) ; Read = AdcP.Read[ID]; 61
62 Services with Multiple Clients AntiTheftC Radio AccelStreamC Read interface AdcP 62
63 Services with Multiple Clients Radio AntiTheftC AccelStreamC Stack AdcP Radio Task Queue AdcP serial receive H/W timer A/D conv. Interrupt table 63
64 Resource Management Single application, but still many services competing for resources, e.g.: timers in application and multihop routing storage in network reprogramming and delay-tolerant networking A/D converter used for sensing and CSMA radio Different requirements from different services: exclusive access: CC2420 radio on micaz physically connected to capture pin for hardware timer 1 must reserve timer 1 for radio latency sensitive: low-jitter multi-khz A/D sampling best effort: wake me every 5 minutes for sampling, and every 12 for route maintenance 3 kinds of resources: arbitrated, dedicated, virtualised 64
65 Resource Management (continued) Dedicated Resources single client picked at compile-time optional compile-time checks CC2420 radio Uninformed user H/W Timer 1 compile-time error 65
66 Resource Management (continued) Dedicated Resources single client picked at compile-time optional compile-time checks Properties: guaranteed availability no latency Examples: most lowest-level hardware abstractions, e.g., hardware timers 66
67 Resource Management (continued) Virtualised Resources service implementation virtualises resource between N clients all clients known at compile-time periodic sensing multihop networking timer timer Timer service H/W timer 0 virtual resource dedicated resource 67
68 Resource Management (continued) Virtualised Resources service implementation virtualises resource between N clients all clients known at compile-time Properties guaranteed availability sharing-induced latency run-time overhead Examples scheduler, timers, radio send queue 68
69 Resource Management (continued) Arbitrated Resources a shared resource some number N of clients known at compile-time Light sensor CSMA radio ADC X 69
70 Resource Management (continued) Arbitrated Resources a shared resource some number N of clients known at compile-time (see unique) resource arbiter manages resource allocation Light sensor CSMA radio Arbiter ADC 70
71 Resource Management (continued) Arbitrated Resources a shared resource some number N of clients known at compile-time resource arbiter manages resource allocation Properties: guaranteed availability unknown latency immediaterequest: get it now, if available Examples: storage, sensing, buses 71
72 Resource management for A/D conversion module AdcP { provides interface Read<uint16_t>[uint8_t client]; uses interface Resource[uint8_t client]; implementation { uint8_t client; command error_t Read.read[uint8_t c]() { return call Resource.request[c](); event void Resource.granted[c]() { client = c; interface Resource { task void acquireddata() { async command error_t request(); call Resource.release[client](); async command error_t immediaterequest(); signal Read.readDone[client](SUCCESS, val); event void granted(); async command error_t release(); 72
73 Resource management for A/D conversion configuration AdcC { provides interface Read<uint16_t>[uint8_t client]; implementation { components AdcP, new RoundRobinArbiterC( adc.resource ) as Arbiter; Read = AdcP; AdcP.Resource -> Arbiter.Resource; generic configuration RoundRobinArbiterC(char resourcename[]) { provides interface Resource[uint8_t client];... implementation {... uniquecount(resourcename)... 73
74 Power Management Goal: set hardware to lowest-power state consistent with application needs user application A/D service is internally managed service has enough information to set hardware state can build on resource management system A/D service A/D hardware 74
75 Power Management Goal: set hardware to lowest-power state consistent with application needs user application radio service message reception radio hardware CSMA radio is externally managed not enough information to set hardware state management from application, or higherlevel service, e.g., neighbourhood message scheduling service (as we saw earlier) 75
76 Power Management with Arbiters Light sensor CSMA radio Arbiter Power Manager ADC 76
77 Resource & Power Management Summary Three kinds of resources, all have guaranteed availability: dedicated single client, no latency typically external power management arbitrated multiple clients, unknown latency typically internal power management reusable power managers virtualised multiple clients, no latency, runtime overhead typically internal power management 77
78 Low-level code and concurrency Most TinyOS code can live in tasks, and not worry too much about concurrency issues. For instance, in AdcP, the lines call Resource.release[client](); signal Read.readDone[client](SUCCESS, val); do not need to worry about requests coming in between the release and readdone (and changing client), as: tasks do not interrupt each other commands and events that are called from interrupt handlers must be marked async However, some code has to run in interrupts: because it is very timing sensitive because the microcontroller signals events via interrupts 78
79 nesc support for concurrency nesc does three things to simplify dealing with interrupt-related concurrency: requires the use of async on commands and events called from interrupt handlers runs a simple data-race detector to identify variables accessed from interrupt handlers provides an atomic statement to guarantee the atomic execution of one or more statements 79
80 Concurrency example uint8_t resq[size]; async command error_t Queue.enqueue(uint8_t id) { if (!(resq[id / 8] & (1 << (id % 8))) { // concurrent access! resq[id / 8] = 1 << (id % 8); // concurrent access! return SUCCESS; return EBUSY; If an interrupt occurs during the if, and the interrupt handler also calls Queue.enqueue then: An available slot may be ignored (probably not a problem) The same slot may be given twice (oops!) If an interrupt happens during the 2 nd concurrent access (write): The interrupt handler s write of resq will probably be lost 80
81 Data Race Detection Every concurrent state access is a potential race condition Concurrent state access: If object O is accessed in a function reachable from an interrupt entry point, then all accesses to O are potential race conditions All concurrent state accesses must occur in atomic statements Concurrent state access detection is straightforward: Call graph fully specified by configurations Interrupt entry points are known Data model is simple (variables only) 81
82 Data race fixed uint8_t resq[size]; async command error_t Queue.enqueue(uint8_t id) { atomic { if (!(resq[id / 8] & (1 << (id % 8))) { resq[id / 8] = 1 << (id % 8); return SUCCESS; return EBUSY; Atomic execution ensured by simply disabling interrupts... Long atomic sections can cause problems! E.g.: limit maximum sampling frequency cause lost packets 82
83 Concluding Remarks Reflections on TinyOS TinyOS status What we didn t see, and where to find out more Other sensor network operating systems Last words 83
84 Reflection Components vs Threads TinyOS has no thread support Execution examples earlier show execution of tasks, interrupt handlers This execution crosses component boundaries Each component encompasses activities initiated in different places, these could be viewed as independent threads. In AntiTheftC we see: booted event initiated in system setup timer event initiated in timer subsystem settings-changed event initiated in dissemination subsystem light and acceleration completion events, ultimately caused by the requests from within AntiTheftC the movement-detection task, initiated in AntiTheftC However, it s not always clear exactly what a thread of control is. E.g.: is the movement-detection task part of the thread initiated in response to the periodic timer expiration in the timer subsystem? 84
85 Reflection Components vs Threads A more productive view is to consider the system as a set of interacting components A component maintains the information that represents its state A component makes requests for actions from other components A component responds to commands and events from other components, representing: Requests (from other components) for the initiation of a new action Ex: please sample the light sensor Completion of requests the component made of other components Ex: message queued for sending to the root of the collection tree Events representing asynchronous actions from the environment or other components Ex: system booted, timer expired, new dissemination value received Tracking the details of the control flow across components is not necessary within this mindset. 85
86 Reflection Static Allocation module AntiTheftC {... module AdcP {... implementation { implementation TinyOS/nesC use { static rather message_t than dynamic alertmsg, allocation. theftmsg; Why? uint8_t client; Ensure that resources are uint16_t available accelsamples[samples]; uint8_t somestate[uniquecount( adc.resource )]; for the worst case..... somestate[client] ex: each message... source gets one queue slot Simplify debugging (by removing a major source of bugs) But where did that static allocation happen? AntiTheftC allocated some variables for message buffers, acceleration samples Instantiation of generic components implicitly allocates state instantiating a module creates a new set of variables unique/uniquecount allow compile-time sizing of arrays to match the number of clients 86
87 Reflection TinyOS Goals Revisited Operate with limited resources execution model allows single-stack execution Allow high concurrency execution model allows direct reaction to events many execution contexts in limited resources Adapt to hardware evolution component, execution model allow hardware / software substitution Support a wide range of applications tailoring OS services to application needs Be robust limited component interactions, static allocation Support a diverse set of platforms OS services should reflect portable services 87
88 Reflection Status TinyOS 2.0 released in November TinyOS Enhancement Proposals describing TinyOS structure 114k lines of code in TinyOS core (in CVS today) Services: completed: booting, scheduling, timer, A/D conversion, I 2 C bus, radio, serial port, storage, multihop collection and dissemination, telosb sensors, simple mica sensors in progress: over-the-air reprogramming, more sensors in limbo: security, time synchronisation Platforms: mica family, telos, eyes, tinynode, intel mote release planned for IPSN conference General API cleanup (based on TEP finalisation), bug fixes 88
89 Other OSes for Mote-class Devices SOS C-based, with loadable modules and dynamic memory allocation also event-driven Contiki C-based, with lightweight TCP/IP implementations optional preemptive threading Mantis C-based, with conventional thread-based programming model semaphores+ipc for inter-thread communication 89
90 What we didn t see, Where to find out more We didn t see: The build system How to get code onto motes The 3-level hardware abstraction architecture Storage (flash) abstractions Where to find out more The TinyOS Enhancement Proposals (TEPs) The web tutorials Phil Levis s nesc/tinyos programming manual, available from 90
91 Last Words Work In Progress sensorboards, TEPs community feedback on design and TEPs Remains to be done: finish system services, in particular network reprogramming But, compared to TinyOS 1.1, TinyOS 2.0 is already: better designed better documented more reliable more portable Download it today: 91
92
Übung zu Drahtlose Kommunikation. 10. Übung 14.01.2012
Übung zu Drahtlose Kommunikation 10. Übung 14.01.2012 TinyOS is an operating system designed to target limited-resource sensor network nodes TinyOS 0.4, 0.6 (2000-2001) TinyOS 1.0 (2002): first nesc version
Laboratorio di Sistemi Wireless 21 Maggio 2012
Laboratorio di Sistemi Wireless 21 Maggio 2012 A. Cammarano, A.Capossele, D. Spenza Contatti Cammarano: [email protected] Capossele: [email protected] Spenza: [email protected] Tel: 06-49918430
message t Abstract 1. Introduction Note TEP: 111 Core Working Group TinyOS-Version: 2.x
message t TEP: 111 Group: Core Working Group Type: Documentary Status: Final TinyOS-Version: 2.x Author: Philip Levis Note This memo documents a part of TinyOS for the TinyOS Community, and requests discussion
Chapter 13 Embedded Operating Systems
Operating Systems: Internals and Design Principles Chapter 13 Embedded Operating Systems Eighth Edition By William Stallings Embedded System Refers to the use of electronics and software within a product
TinyOS Programming. Philip Levis and David Gay
TinyOS Programming Philip Levis and David Gay July 16, 2009 ii Acknolwedgements We d like to thank several people for their contributions to this book. First is Mike Horton, of Crossbow, Inc., who first
The BSN Hardware and Software Platform: Enabling Easy Development of Body Sensor Network Applications
The BSN Hardware and Software Platform: Enabling Easy Development of Body Sensor Network Applications Joshua Ellul [email protected] Overview Brief introduction to Body Sensor Networks BSN Hardware
How To Test In Tinyos With Unit Test (Forum) On A Microsoft Microsoft Computer (Forums) On An Ipa (Forms) On Your Computer Or Microsoft Macbook (Forims) On The Network (For
Unit Testing for Wireless Sensor Networks Michael Okola Computer Science Department University of Virginia Charlottesville, Virginia [email protected] Kamin Whitehouse Computer Science Department University
Comparison of Operating Systems TinyOS and Contiki
Comparison of Operating Systems TinyOS and Contiki Tobias Reusing Betreuer: Christoph Söllner Seminar: Sensorknoten - Betrieb, Netze & Anwendungen SS2012 Lehrstuhl Netzarchitekturen und Netzdienste, Lehrstuhl
Wireless Sensor Networks: Motes, NesC, and TinyOS
Wireless Sensor Networks: Motes, NesC, and TinyOS Jürgen Schönwälder, Matúš Harvan Jacobs University Bremen Bremen, Germany EECS Seminar, 24 April 2007 Jürgen Schönwälder, Matúš Harvan Motes, NesC, and
Computer Systems Structure Input/Output
Computer Systems Structure Input/Output Peripherals Computer Central Processing Unit Main Memory Computer Systems Interconnection Communication lines Input Output Ward 1 Ward 2 Examples of I/O Devices
A Transport Protocol for Multimedia Wireless Sensor Networks
A Transport Protocol for Multimedia Wireless Sensor Networks Duarte Meneses, António Grilo, Paulo Rogério Pereira 1 NGI'2011: A Transport Protocol for Multimedia Wireless Sensor Networks Introduction Wireless
System Architecture and Operating Systems
Chapter 21 System Architecture and Operating Systems Yanjun Yao, Lipeng Wan, and Qing Cao Abstract The emergence of resource constrained embedded systems such as sensor networks has introduced unique challenges
Freescale Semiconductor, I
nc. Application Note 6/2002 8-Bit Software Development Kit By Jiri Ryba Introduction 8-Bit SDK Overview This application note describes the features and advantages of the 8-bit SDK (software development
Real-Time Systems Prof. Dr. Rajib Mall Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur
Real-Time Systems Prof. Dr. Rajib Mall Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture No. # 26 Real - Time POSIX. (Contd.) Ok Good morning, so let us get
Data Management in Sensor Networks
Data Management in Sensor Networks Ellen Munthe-Kaas Jarle Søberg Hans Vatne Hansen INF5100 Autumn 2011 1 Outline Sensor networks Characteristics TinyOS TinyDB Motes Application domains Data management
Surveillance System Using Wireless Sensor Networks
Surveillance System Using Wireless Sensor Networks Dan Nguyen, Leo Chang Computer Engineering, Santa Clara University Santa Clara, California, USA [email protected] [email protected] Abstract The
Field Software Updates Using TPMS LF An example using the Low Frequency radio (LFR) for wireless software updating
Freescale Semiconductor Document Number: AN5149 Application Note Rev. 1.0, 8/2015 Field Software Updates Using TPMS LF An example using the Low Frequency radio (LFR) for wireless software updating 1 Introduction
Computer Organization & Architecture Lecture #19
Computer Organization & Architecture Lecture #19 Input/Output The computer system s I/O architecture is its interface to the outside world. This architecture is designed to provide a systematic means of
Software Design Patterns For TinyOS
Software Design Patterns for TinyOS DAVID GAY Intel Research, Berkeley PHILIP LEVIS Stanford University and DAVID CULLER University of California, Berkeley 22 We present design patterns used by software
Monitoring Software using Sun Spots. Corey Andalora February 19, 2008
Monitoring Software using Sun Spots Corey Andalora February 19, 2008 Abstract Sun has developed small devices named Spots designed to provide developers familiar with the Java programming language a platform
Computer Network. Interconnected collection of autonomous computers that are able to exchange information
Introduction Computer Network. Interconnected collection of autonomous computers that are able to exchange information No master/slave relationship between the computers in the network Data Communications.
GSM. Quectel Cellular Engine. GSM TCPIP Application Notes GSM_TCPIP_AN_V1.1
GSM Cellular Engine GSM TCPIP Application Notes GSM_TCPIP_AN_V1.1 Document Title GSM TCPIP Application Notes Version 1.1 Date 2011-09-22 Status Document Control ID Release GSM_TCPIP_AN_V1.1 General Notes
Microcontrollers Deserve Protection Too
Microcontrollers Deserve Protection Too Amit Levy with: Michael Andersen, Tom Bauer, Sergio Benitez, Bradford Campbell, David Culler, Prabal Dutta, Philip Levis, Pat Pannuto, Laurynas Riliskis Microcontrollers
Waspmote. Quickstart Guide
Waspmote Quickstart Guide Index Document version: v4.3-11/2014 Libelium Comunicaciones Distribuidas S.L. INDEX 1. Introduction... 3 2. General and safety information... 4 3. Waspmote s Hardware Setup...
Thingsquare Technology
Thingsquare Technology Thingsquare connects smartphone apps with things such as thermostats, light bulbs, and street lights. The devices have a programmable wireless chip that runs the Thingsquare firmware.
Secure data aggregation in mobile sink wireless sensor networks
Available online www.jocpr.com Journal of Chemical and Pharmaceutical Research, 2014, 6(6):2927-2933 Research Article ISSN : 0975-7384 CODEN(USA) : JCPRC5 Secure data aggregation in mobile sink wireless
REMOTE TEMPERATURE AND HUMIDITY MONITORING SYSTEM USING WIRELESS SENSOR NETWORKS
REMOTE TEMPERATURE AND HUMIDITY MONITORING SYSTEM USING WIRELESS SENSOR NETWORKS Varsha jaladi 1, Guthula Ganga Raja Sekhar 2, K.Raghava Rao 3 1 BTech Student, dept. of Electronics and Computers, K L University,
2.0 Command and Data Handling Subsystem
2.0 Command and Data Handling Subsystem The Command and Data Handling Subsystem is the brain of the whole autonomous CubeSat. The C&DH system consists of an Onboard Computer, OBC, which controls the operation
SPI I2C LIN Ethernet. u Today: Wired embedded networks. u Next lecture: CAN bus u Then: 802.15.4 wireless embedded network
u Today: Wired embedded networks Ø Characteristics and requirements Ø Some embedded LANs SPI I2C LIN Ethernet u Next lecture: CAN bus u Then: 802.15.4 wireless embedded network Network from a High End
Mac Protocols for Wireless Sensor Networks
Mac Protocols for Wireless Sensor Networks Hans-Christian Halfbrodt Advisor: Pardeep Kumar Institute of Computer Science Freie Universität Berlin, Germany [email protected] January 2010 Contents
MOTEWORKS. Key Features. Overview
MOTEWORKS SOFTWARE PLATFORM MoteWorks 2.0 provides a complete software development environment for wireless sensor network applications. Included is a collection of flexible software packages that enables
Radio sensor powered by a mini solar cell the EnOcean STM 110 now functions with even less light
Radio sensor powered by a mini solar cell the EnOcean STM 110 now functions with even less light In this issue, we would like to present the EnOcean radio sensor module STM 110 in more detail. The module
APPLICATION NOTE. AVR2130: Lightweight Mesh Developer Guide. Atmel MCU Wireless. Features. Description
APPLICATION NOTE AVR2130: Lightweight Mesh Developer Guide Atmel MCU Wireless Features Atmel Lightweight Mesh stack specification and APIs Lightweight Mesh Software Development Kit (SDK) Description This
PEDAMACS: Power efficient and delay aware medium access protocol for sensor networks
PEDAMACS: Power efficient and delay aware medium access protocol for sensor networks Sinem Coleri and Pravin Varaiya Department of Electrical Engineering and Computer Science University of California,
Bluetooth for device discovery. Networking Guide
Bluetooth for device discovery Networking Guide Index Document Version: v4.4-11/2014 Libelium Comunicaciones Distribuidas S.L. INDEX 1. Introduction... 3 1.1. General description...3 2. Hardware... 5 2.1.
CS 377: Operating Systems. Outline. A review of what you ve learned, and how it applies to a real operating system. Lecture 25 - Linux Case Study
CS 377: Operating Systems Lecture 25 - Linux Case Study Guest Lecturer: Tim Wood Outline Linux History Design Principles System Overview Process Scheduling Memory Management File Systems A review of what
THE INTEL MOTE PLATFORM: A BLUETOOTH * -BASED SENSOR NETWORK FOR INDUSTRIAL MONITORING
THE INTEL MOTE PLATFORM: A BLUETOOTH * -BASED SENSOR NETWORK FOR INDUSTRIAL MONITORING Lama Nachman, Ralph Kling, Robert Adler, Jonathan Huang, Vincent Hummel Corporate Technology Group Intel Corporation
TinySDN: Enabling TinyOS to Software-Defined Wireless Sensor Networks
TinySDN: Enabling TinyOS to Software-Defined Wireless Sensor Networks Bruno T. de Oliveira 1, Cíntia B. Margi 1 1 Escola Politécnica Universidade de São Paulo Departamento de Engenharia de Computação e
Real Time Programming: Concepts
Real Time Programming: Concepts Radek Pelánek Plan at first we will study basic concepts related to real time programming then we will have a look at specific programming languages and study how they realize
Chapter 5 Real time clock by John Leung
Chapter 5 Real time clock 5.1 Philips PCF8563 Real time clock (RTC) Philips PCF8563 (U5) is an I 2 C compatible real time clock (RTC). Alternatively, this chip can be replaced by a software module like
Application Note: AN00121 Using XMOS TCP/IP Library for UDP-based Networking
Application Note: AN00121 Using XMOS TCP/IP Library for UDP-based Networking This application note demonstrates the use of XMOS TCP/IP stack on an XMOS multicore micro controller to communicate on an ethernet-based
TivaWare USB Library USER S GUIDE SW-TM4C-USBL-UG-2.1.1.71. Copyright 2008-2015 Texas Instruments Incorporated
TivaWare USB Library USER S GUIDE SW-TM4C-USBL-UG-2.1.1.71 Copyright 2008-2015 Texas Instruments Incorporated Copyright Copyright 2008-2015 Texas Instruments Incorporated. All rights reserved. Tiva and
DESIGN ISSUES AND CLASSIFICATION OF WSNS OPERATING SYSTEMS
DESIGN ISSUES AND CLASSIFICATION OF WSNS OPERATING SYSTEMS ANIL KUMAR SHARMA 1, SURENDRA KUMAR PATEL 2, & GUPTESHWAR GUPTA 3 1&2 Department of I.T. and Computer Application, Dr. C.V.Raman University, Kota,
Building a Basic Communication Network using XBee DigiMesh. Keywords: XBee, Networking, Zigbee, Digimesh, Mesh, Python, Smart Home
Building a Basic Communication Network using XBee DigiMesh Jennifer Byford April 5, 2013 Keywords: XBee, Networking, Zigbee, Digimesh, Mesh, Python, Smart Home Abstract: Using Digi International s in-house
Operating Systems for Wireless Sensor Networks: A Survey
Sensors 2011, 11, 5900-5930; doi:10.3390/s110605900 OPEN ACCESS sensors ISSN 1424-8220 www.mdpi.com/journal/sensors Article Operating Systems for Wireless Sensor Networks: A Survey Muhammad Omer Farooq
Attenuation (amplitude of the wave loses strength thereby the signal power) Refraction Reflection Shadowing Scattering Diffraction
Wireless Physical Layer Q1. Is it possible to transmit a digital signal, e.g., coded as square wave as used inside a computer, using radio transmission without any loss? Why? It is not possible to transmit
Operating Systems for Wireless Sensor Networks: A Survey Technical Report
Operating Systems for Wireless Sensor Networks: A Survey Technical Report Adi Mallikarjuna Reddy V AVU Phani Kumar, D Janakiram, and G Ashok Kumar Distributed and Object Systems Lab Department of Computer
2.0 System Description
2.0 System Description The wireless alarm system consists of two or more alarm units within a specified range of one another. Each alarm unit employs a radio transceiver, allowing it to communicate with
Service and Resource Discovery in Smart Spaces Composed of Low Capacity Devices
Service and Resource Discovery in Smart Spaces Composed of Low Capacity Devices Önder Uzun, Tanır Özçelebi, Johan Lukkien, Remi Bosman System Architecture and Networking Department of Mathematics and Computer
Synapse s SNAP Network Operating System
Synapse s SNAP Network Operating System by David Ewing, Chief Technology Officer, Synapse Wireless Today we are surrounded by tiny embedded machines electro-mechanical systems that monitor the environment
Linux Driver Devices. Why, When, Which, How?
Bertrand Mermet Sylvain Ract Linux Driver Devices. Why, When, Which, How? Since its creation in the early 1990 s Linux has been installed on millions of computers or embedded systems. These systems may
Making Multicore Work and Measuring its Benefits. Markus Levy, president EEMBC and Multicore Association
Making Multicore Work and Measuring its Benefits Markus Levy, president EEMBC and Multicore Association Agenda Why Multicore? Standards and issues in the multicore community What is Multicore Association?
POSIX. RTOSes Part I. POSIX Versions. POSIX Versions (2)
RTOSes Part I Christopher Kenna September 24, 2010 POSIX Portable Operating System for UnIX Application portability at source-code level POSIX Family formally known as IEEE 1003 Originally 17 separate
Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture
Last Class: OS and Computer Architecture System bus Network card CPU, memory, I/O devices, network card, system bus Lecture 3, page 1 Last Class: OS and Computer Architecture OS Service Protection Interrupts
Software Design Patterns for TinyOS
Software Design Patterns for TinyOS David Gay Intel Research, Berkeley [email protected] Phil Levis University of California at Berkeley [email protected] David Culler University of California at
Lab 3 Microcontroller programming Interfacing to Sensors and Actuators with irobot
1. Objective Lab 3 Microcontroller programming Interfacing to Sensors and Actuators with irobot In this lab, you will: i. Become familiar with the irobot and AVR tools. ii. Understand how to program a
White Paper. Real-time Capabilities for Linux SGI REACT Real-Time for Linux
White Paper Real-time Capabilities for Linux SGI REACT Real-Time for Linux Abstract This white paper describes the real-time capabilities provided by SGI REACT Real-Time for Linux. software. REACT enables
An Introduction to MPLAB Integrated Development Environment
An Introduction to MPLAB Integrated Development Environment 2004 Microchip Technology Incorporated An introduction to MPLAB Integrated Development Environment Slide 1 This seminar is an introduction to
Connecting UniOP to Telemecanique PLC s
Connecting UniOP to Telemecanique PLC s Contents 1. Introduction... 2 2. Uni-Telway Driver... 2 2.1 Uni-Telway Addresses... 2 2.2 Designer Controller Setup... 4 2.3 Point To Point Connection Addressing...
Firmware version: 1.10 Issue: 7 AUTODIALER GD30.2. Instruction Manual
Firmware version: 1.10 Issue: 7 AUTODIALER GD30.2 Instruction Manual Firmware version: 2.0.1 Issue: 0.6 Version of the GPRS transmitters configurator: 1.3.6.3 Date of issue: 07.03.2012 TABLE OF CONTENTS
Vehicle data acquisition using CAN By Henning Olsson, OptimumG [email protected]
Vehicle data acquisition using By Henning Olsson, OptimumG [email protected] Introduction: Data acquisition is one of the best tools to increase the understanding of vehicle behavior. One can
Develop a Dallas 1-Wire Master Using the Z8F1680 Series of MCUs
Develop a Dallas 1-Wire Master Using the Z8F1680 Series of MCUs AN033101-0412 Abstract This describes how to interface the Dallas 1-Wire bus with Zilog s Z8F1680 Series of MCUs as master devices. The Z8F0880,
RT-QoS for Wireless ad-hoc Networks of Embedded Systems
RT-QoS for Wireless ad-hoc Networks of Embedded Systems Marco accamo University of Illinois Urbana-hampaign 1 Outline Wireless RT-QoS: important MA attributes and faced challenges Some new ideas and results
A Dynamic Operating System for Sensor Nodes
A Dynamic Operating System for Sensor Nodes Chih-Chieh Han, Ram Kumar, Roy Shea, Eddie Kohler and Mani Srivastava University of California, Los Angeles {simonhan, roy, kohler}@cs.ucla.edu, {ram, mbs}@ucla.edu
Software Design Patterns for TinyOS
Software Design Patterns for TinyOS UCB//CSD-04-1350 David Gay Philip Levis Intel Research Berkeley EECS Department 2150 Shattuck Avenue University of California, Berkeley Berkeley, CA 94704 Berkeley,
Internet of things (IOT) applications covering industrial domain. Dev Bhattacharya [email protected]
Internet of things (IOT) applications covering industrial domain Dev Bhattacharya [email protected] Outline Internet of things What is Internet of things (IOT) Simplified IOT System Architecture
A NOVEL RESOURCE EFFICIENT DMMS APPROACH
A NOVEL RESOURCE EFFICIENT DMMS APPROACH FOR NETWORK MONITORING AND CONTROLLING FUNCTIONS Golam R. Khan 1, Sharmistha Khan 2, Dhadesugoor R. Vaman 3, and Suxia Cui 4 Department of Electrical and Computer
Figure 1.Block diagram of inventory management system using Proximity sensors.
Volume 1, Special Issue, March 2015 Impact Factor: 1036, Science Central Value: 2654 Inventory Management System Using Proximity ensors 1)Jyoti KMuluk 2)Pallavi H Shinde3) Shashank VShinde 4)Prof VRYadav
How to design and implement firmware for embedded systems
How to design and implement firmware for embedded systems Last changes: 17.06.2010 Author: Rico Möckel The very beginning: What should I avoid when implementing firmware for embedded systems? Writing code
RN-XV-RD2 Evaluation Board
RN-XV-RD2 Evaluation Board 2012 Roving Networks. All rights reserved. -1.01Version 1.0 9/28/2012 USER MANUAL OVERVIEW This document describes the hardware and software setup for Roving Networks RN-XV-RD2
XMOS Programming Guide
XMOS Programming Guide Document Number: Publication Date: 2014/10/9 XMOS 2014, All Rights Reserved. XMOS Programming Guide 2/108 SYNOPSIS This document provides a consolidated guide on how to program XMOS
Using Protothreads for Sensor Node Programming
Using Protothreads for Sensor Node Programming Adam Dunkels Swedish Institute of Computer Science [email protected] Oliver Schmidt [email protected] Thiemo Voigt Swedish Institute of Computer Science
STATUS POWER MONITOR ALARM SOS DISARM
STATUS POWER MONITOR ALARM SOS DISARM I. Features II. Preparation before use III. Host 1.LED status explanation 2. Host panel IV. System Settings 1. Coding of wireless sensors 2. Exit coding 3. Settings
BLUETOOTH SMART CABLE REPLACEMENT
BLUETOOTH SMART CABLE REPLACEMENT APPLICATION NOTE Monday, 15 October 2012 Version 1.5 Copyright 2000-2012 Bluegiga Technologies All rights reserved. Bluegiga Technologies assumes no responsibility for
Analysis of Open Source Drivers for IEEE 802.11 WLANs
Preprint of an article that appeared in IEEE conference proceeding of ICWCSC 2010 Analysis of Open Source Drivers for IEEE 802.11 WLANs Vipin M AU-KBC Research Centre MIT campus of Anna University Chennai,
PROFINET IO Diagnostics 1
PROFINET IO is a very cost effective and reliable technology. However, extensive installations can have thousands of PROFINET IO devices operating on many networks. The reliable operation of these networks
Serial Communications
Serial Communications 1 Serial Communication Introduction Serial communication buses Asynchronous and synchronous communication UART block diagram UART clock requirements Programming the UARTs Operation
Microcontrollers and Sensors. Scott Gilliland - zeroping@gmail
Microcontrollers and Sensors Scott Gilliland - zeroping@gmail Microcontrollers Think tiny computer on a chip 8 to 128 pins Runs on 3.3 to 5 Volts 8 to 20 Mhz Uses µw to mw of power ~ 4 kilobytes of flash
COS 318: Operating Systems. I/O Device and Drivers. Input and Output. Definitions and General Method. Revisit Hardware
COS 318: Operating Systems I/O and Drivers Input and Output A computer s job is to process data Computation (, cache, and memory) Move data into and out of a system (between I/O devices and memory) Challenges
USBSPYDER08 Discovery Kit for Freescale MC9RS08KA, MC9S08QD and MC9S08QG Microcontrollers User s Manual
USBSPYDER08 Discovery Kit for Freescale MC9RS08KA, MC9S08QD and MC9S08QG Microcontrollers User s Manual Copyright 2007 SofTec Microsystems DC01197 We want your feedback! SofTec Microsystems is always on
Overview of Network Hardware and Software. CS158a Chris Pollett Jan 29, 2007.
Overview of Network Hardware and Software CS158a Chris Pollett Jan 29, 2007. Outline Scales of Networks Protocol Hierarchies Scales of Networks Last day, we talked about broadcast versus point-to-point
Local Area Networks transmission system private speedy and secure kilometres shared transmission medium hardware & software
Local Area What s a LAN? A transmission system, usually private owned, very speedy and secure, covering a geographical area in the range of kilometres, comprising a shared transmission medium and a set
A New Chapter for System Designs Using NAND Flash Memory
A New Chapter for System Designs Using Memory Jim Cooke Senior Technical Marketing Manager Micron Technology, Inc December 27, 2010 Trends and Complexities trends have been on the rise since was first
Contiki - a Lightweight and Flexible Operating System for Tiny Networked Sensors
Contiki - a Lightweight and Flexible Operating System for Tiny Networked Sensors Adam Dunkels, Björn Grönvall, Thiemo Voigt Swedish Institute of Computer Science {adam,bg,thiemo}@sics.se Abstract Wireless
Wireless Communication With Arduino
Wireless Communication With Arduino Using the RN-XV to communicate over WiFi Seth Hardy [email protected] Last Updated: Nov 2012 Overview Radio: Roving Networks RN-XV XBee replacement : fits in the
Hagenberg Linz Steyr Wels. API Application Programming Interface
Hagenberg Linz Steyr Wels API Application Programming Interface Version 1.1 October 2015 FH OÖ Forschungs & Entwicklungs GmbH Franz-Fritsch-Strasse 11 / Top 3 4600 Wels Austria Research Center Hagenberg
MeshBee Open Source ZigBee RF Module CookBook
MeshBee Open Source ZigBee RF Module CookBook 2014 Seeed Technology Inc. www.seeedstudio.com 1 Doc Version Date Author Remark v0.1 2014/05/07 Created 2 Table of contents Table of contents Chapter 1: Getting
