0% found this document useful (0 votes)
65 views50 pages

Internet of Things: Lecture 5-Software Platforms and Services

This document discusses software platforms and services for Internet of Things networks. It covers: - Wireless sensor networks typically run on low power devices consisting of multiple sensors or actuators. - Operating systems for embedded devices provide basic abstractions and resource management while being lightweight. Event-driven programming is commonly used. - TinyOS and Contiki are examples of operating systems designed for constrained IoT devices. TinyOS uses a non-blocking event-driven model while Contiki supports threads and processes through an event-driven kernel.

Uploaded by

Partha Parida
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
65 views50 pages

Internet of Things: Lecture 5-Software Platforms and Services

This document discusses software platforms and services for Internet of Things networks. It covers: - Wireless sensor networks typically run on low power devices consisting of multiple sensors or actuators. - Operating systems for embedded devices provide basic abstractions and resource management while being lightweight. Event-driven programming is commonly used. - TinyOS and Contiki are examples of operating systems designed for constrained IoT devices. TinyOS uses a non-blocking event-driven model while Contiki supports threads and processes through an event-driven kernel.

Uploaded by

Partha Parida
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 50

Internet of Things

Lecture 5- Software platforms and services

1
Wireless Sensor (and Actuator)
Networks
Services?

End-user
Operating
Systems? Core network
Gateway e.g. Internet
Protocols?
Protocols?

Sink
Gateway Computer services
node

- The networks typically run Low Power Devices


- Consist of one or more sensors, could be different type of sensors (or actuators)
Operating Systems

− An Operating System (OS) in an embedded system is a


thin software that resides between the node’s hardware
and the application layer.
− OS provides basic programming abstractions to the
application developer.
− The main task of the OS is to enable applications to
interact with hardware resources, to schedule and
prioritise tasks and mediate between applications and
services that try to use the memory resources.

3
Features of the OS in embedded
systems

− Memory management
− Power management
− File management
− Networking
− Providing programming environment and tools
(commands, interpreters, compiler, etc.)
− Providing entry points to access sensitive resources
such as writing to input components.
− Providing and supporting functional aspects such as
scheduling, multi-threading, handling interrupts, memory
allocations.

4
Operating systems and run-time in constrained
environments

− Embedded operating systems


− Virtual machines
− Abstracting the hardware specific issues from the users.
− Need for energy-efficient execution
− The code is more restricted (compared to conventional
operating systems) so a full-blown OS is not obviously
required.
− An appropriate programming model
− A clear way to structure a protocol stack
− And support for energy management

5
Threads and events

− A “thread” in a programming environment is the smallest


sequence of programmed instructions that can be
managed and run independently by a scheduler.
− An event driven program typically runs an event loop,]. It
keeps waiting for for an event, e.g. input from internal
alarms. When an event occurs occurs, the program
collects data about the event and dispatches the event to
the event handler software to deal with it.

6
Thread-based vs Event-based
Programming

− In WSN it is important to support concurrent tasks, in


particular tasks related to I/O systems.
− Thread-based programming uses multiple threads and a
single address space.
− This way if a thread is blocked by an I/O operation, the
thread can be suspended and other tasks can be
executed in different threads.
− The programmer must protect shared data structures
with locks, coordinate the execution of threads.
− The program written for multiple threading can be
complex, can include bugs and may lead to deadlocks.

7
Thread-based vs Event-based
Programming- II

− The event-based programming uses events and event


handlers.
− Event handlers are registered at the OS scheduler and
are notified when a named event occurs.
− The OS kernel usually implements a loop function that
polls for events and calls relevant event handlers when
an event is occurred.
− An event is processed by an event handler until
completion unless it reaches a blocking operation.
− In the case of reaching a blocking operation it registers a
new call back and returns control to scheduler.

8
Dynamic Programming

− There could be a requirement for programming some


parts of an application (for example in a WSN
environment) after deployment. Some of the reasons for
this could be:
− The complete deployment setting and requirements may not be
know prior to the deployment and as a result the network may
not function optimally;
− Application requirements and physical environment properties
can change over time;
− There could be bug fixes or update requirements while the
network is till operating.
− In the above case manual replacement of software may
not be feasible because of the large number of nodes in
the network.
9
Dynamic Programming

− If there is no clear separation between OS and


the application dynamic programming can not be
supported.
− In dynamic programming, OS should be able to
receive the software updates and stored in
active memory.
− OS should make sure this is an updated version.
− OS should remove the piece of software that
needs to be updated from memory and should
install and configure the new version.

10
Embedded Operating Systems

− OS running on devices with restricted functionality


− In the case of sensor nodes, there devices typically also have
limited processing capability
− e.g. TinyOS
− Restricted to narrow applications
− industrial controllers, robots, networking gear, gaming consoles,
metering, sensor nodes…
− Architecture and purpose of embedded OS changes as
the hardware capabilities change (i.e. mobile phones)

11
Source: The Web of Things, Marko Grobelnik, Carolina Fortuna, Jožef Stefan Institute.
TinyOS

− “TinyOS is an open source, BSD-licensed


operating system designed for low-power
wireless devices, such as those used in sensor
networks .”
− TinyOS applications are developed using nesC
− nesC is a dialect of the C language that is
optimised for the memory limits of sensor
networks.

12
TinOS - programming

− “TinyOS is completely non-blocking:


− It has one stack.
− All I/O operations that last longer than a few hundred
microseconds are asynchronous and have a callback.
− “To enable the native compiler to better optimise
across call boundaries, TinyOS uses nesC's features
to link these callbacks, called events, statically.”

TinyOS home page: http://www.tinyos.net/


TinyOS tutorial: http://docs.tinyos.net/tinywiki/index.php/TinyOS_Tutorials

13
TinyOS

− TinyOS does not provide a clear separation of concern


between the operating system and the application.
− Tasks, commands and events are fundamental building
blocks of the TinyOS run-time environment.
− Tasks are monolithic processes that should be executed
until they are complete.
− This means they can not be blocked by other tasks but they can
be interrupted by events.
− For example a packet reading task can schedule itself
repeatedly (sending an event signal) until it has read all the
packets.
− In TinyOS the scheduled tasks use a FIFO principle.

14
Contiki

− Contiki is an open source operating system for the Internet of Things.


− runs on networked embedded systems and wireless sensor nodes.
− It is designed for microcontrollers with small amounts of memory.
− A typical Contiki configuration is 2 kilobytes of RAM and 40 kilobytes
of ROM.
− Contiki provides IP communication, both for IPv4 and IPv6.
− It has an IPv6 stack that, combined with power-efficient radio
mechanisms such as ContikiMAC, allow battery-operated devices to
participate in IPv6 networking.
− Contiki supports 6lowPAN header compression and the CoAP
application layer protocol.
− We will study 6LowPAN and CoAP protocols later in this module.

15
Source: http://www.contiki-os.org
Contiki- Functional aspects

− It’s kernel functions as an event-driven kernel; multithreading is


supported by an application library. In this sense it is a hybrid OS.
− Contiki realises the separation of concern of the basic system
support form the rest of the dynamically loadable and programmable
services (called processes).

− The services communicate with each other through the kernel by


posting events.

− The ContikiOS kernel does not provide any hardware abstraction;


but it allows device drivers and application directly communicate
with the hardware.

− Each Contiki service manages its own state in a private memory


space and the kernel keeps a pointer to the process state.

16
The Contiki OS

Loadable programs
Loaded program Can be easily updated

Communication service

Core Language runtime


Service Core: single binary
Program Loader Usually never modified

Kernel

17
Protothreads

− Protothreads can be seen as lightweight (stakless)


threads.
− They can be also seen as interruptible tasks in event-
based programming.
− A protothread provides a conditional blocking “wait”
statement which takes a conditional statement and
blocks the protothread until the statement is evaluated
true.
− By the time the protothread reaches the wait time if the
conditional statement is true, it continues executing
without any interruption.
− A protothread is invoked whenever a process receives a
message from another process or a timer event.
18
Protothreads- example

− For example consider a MAC protocol that turns off the radio
subsystem on a periodic basis; but you want to make sure that the
radio subsystem completes the communication before it goes to
sleep state.
1. At t=t0 set the radio ON
2. The radio remains on for a period of tawake seconds
3. Once tawake is over, the radio has to be switched off, but any on-going
communication needs to be completed.
4. If there is an on-going communication, the MAC protocol will wait for a period,
twait_max before switching off the radio.
5. If the communication is completed or the maximum wait time is over, then the
radio will go off and will remain in the off state for a period of tsleep.
6. The process is repeated.

Source: Adam Dunkels, Oliver Schmidt, Thiemo Voigt, and Muneeb Ali. 2006. Protothreads: simplifying event-driven programming of memory-
constrained embedded systems. In Proceedings of the 4th international conference on Embedded networked sensor systems (SenSys '06). ACM. 19
Radio sleep cycle code with events

Event driven code can be


messy and complex

Source: Adam Dunkels, Oliver Schmidt, Thiemo Voigt, and Muneeb Ali. 2006. Protothreads: simplifying event-driven programming of memory- 20
constrained embedded systems. In Proceedings of the 4th international conference on Embedded networked sensor systems (SenSys '06). ACM.
Radio sleep cycle with Protothreads

Source: Adam Dunkels, Oliver Schmidt, Thiemo Voigt, and Muneeb Ali. 2006. Protothreads: simplifying event-driven programming of memory-
constrained embedded systems. In Proceedings of the 4th international conference on Embedded networked sensor systems (SenSys '06). ACM. 21
Sensor Network Programming

− Sensor Network programming can be: node centric or it can be


application centric.
− Node-centric approaches focus on development of a software for
nodes (on a per-node level).
− Application-centric approaches focus on developing software for a
part or all of the network as one entity.
− The application centric programming will require collaboration
among different nodes in the network for collection, dissemination,
analysis and/or processing of the generated and collected data.
− While in node centric programming the main focus is on developing
a software on a per-node level.

22
The Contiki code
Header files

#include "contiki.h"

Defines the name


PROCESS(sample_process, "My sample process");
of the process

AUTOSTART_PROCESSES(&sample_process);

Defines the
PROCESS_THREAD(sample_process, ev, data) {
process will be
PROCESS_BEGIN(); started every time
while(1) { module is loaded
PROCESS_WAIT_EVENT();
}
PROCESS_END(); contains the
process code
}

Threads must have


Event parameter; process can receive
process can respond
an end statement
data during an event
to events
The Contiki code

#include "contiki.h"
PROCESS(sample_process, "My sample process");

AUTOSTART_PROCESSES(&sample_process, &LED_process);

PROCESS_THREAD(sample_process, ev, data) { Process thread


static struct etimer t; names
static int c = 0;
PROCESS_BEGIN();
etimer_set(&t, CLOCK_CONF_SECOND);
while(1) {
PROCESS_WAIT_EVENT();
if(ev == PROCESS_EVENT_TIMER) {
Process thread 1
printf(“Timer event #%i\n", c);
c++;
etimer_reset(&t);
}
}
PROCESS_END();
}

PROCESS_THREAD(LED_process, ev, data) {


static uint8_t leds_state = 0;
PROCESS_BEGIN();
leds_off(0xFF);
leds_on(leds_state);
PROCESS_END();
Process thread 2
}
Running Contiki on a Hardware

− Write your code


− Compile Contiki and the application
− make TARGET=XM1000 sample_process
− Make file
CONTIKI = ../..
all: simple_process
include $(CONTIKI)/Makefile.include

− If you plan to compile your code on the chosen platfrom more than once;
− make TARGE=XM1000 savetarget
− Upload your code
− make simple_process.upload

− Login to the device


− make login

25
Nodes and Applications in
Wireless Sensor Networks

− Sensor Networks consist of nodes with different


capabilities.
− Large number of heterogeneous sensor nodes
− Spread over a physical location
− It includes physical sensing, data processing and networking
− In ad-hoc networks, sensors can join and leave due to
mobility, failure etc.
− Data can be processed in-network, or it can be directly
communicated to the endpoints.
Types of nodes

− Sensor nodes
− Low power
− Consist of sensing device, memory, processor and radio
− Resource-constrained
− Sink nodes
− Another sensor node or a different wireless node
− Normally more powerful/better resources
− Gateway
− A more powerful node
− Connection to core network
− Could consist service representation, cache/storage, discovery
and other functions
Types of applications

− Event detection
− Reporting occurrences of events
− Reporting abnormalities and changes
− Could require collaboration of other nearby or remote nodes
− Event definition and classification is an issue
− Periodic measurements
− Sensors periodically measure and report the observation and
measurement data
− Reporting period is application dependent
− Approximation and pattern detection
− Sending messages along the boundaries of patterns in both space/time
− Tracking
− When the source of an event is mobile
− Sending event updates with location information
Requirements and challenges

− Fault tolerance
− The nodes can get damaged, run out of power, the wireless
communication between two nodes can be interrupted, etc.
− To tolerate node failures, redundant deployments can be
necessary.
− Lifetime
− The nodes could have a limited energy supply;
− Sometimes replacing the energy sources is not practical (e.g.
underwater deployment, large/remote field deployments).
− Energy efficient operation can be a necessity.
Requirements and challenges – Cont’d

− Scalability
− A WSN can consists of a large number of nodes
− The employed architectures and protocols should scale to these
numbers.
− Wide range of densities
− Density of the network can vary
− Different applications can have different node densities
− Density does not need to be homogeneous in the entire network
and network should adapt to such variations.
Requirements and challenges – Cont’d

− Programmability
− Nodes should be flexible and their tasks could change
− The programmes should be also changeable during operation.
− Maintainability
− WSN and environment of a WSN can change;
− The system should be adaptable to the changes.
− The operational parameters can change to choose different
trade-offs (e.g. to provide lower quality when energy efficiency is
more important)
Required mechanisms

− Multi-hop wireless communications


− Communication over long distances can require intermediary
nodes as relay (instead of using high transmission power for
long range communications).
− Energy-efficient operation
− To support long lifetime
− Energy efficient communication/dissemination of information
− Energy efficient determination of a requested information
− Auto-configuration
− Self-xxx functionalities
− Tolerating node failures
− Integrating new nodes
Required mechanisms

− Collaboration and in-network processing


− In some applications a single sensor node is not able to handle the
given task or provide the requested information.
− Instead of sending the information form various source to an external
network/node, the information can be processed in the network itself.
− e.g. data aggregation, summarisation and then propagating the processed
data with reduced size (hence improving energy efficiency by reducing the
amount of data to be transmitted).
− Data-centric
− Conventional networks often focus on sending data between two
specific nodes each equipped with an address.
− Here what is important is data and the observations and measurements
not the node that provides it.
Communication and Network Protocol Support
Communication Protocols

− Wired
− USB, Ethernet
− Wireless
− Wifi, Bluetooth, ZigBee, IEEE 802.15.x
− Single-hop or multi-hop
− Sink nodes, cluster heads…
− Point-to-Point or Point-to-Multi Point
− (Energy) efficient routing
ZigBee

− It is supposed to be a low cost, low power mesh network protocol.


− ZigBee operation range is in the industrial, scientific and medical
radio bands;
− ZigBee’s physical layer and media access control defined in defined
based on the IEEE 802.15.4 standard.
− ZigBee nodes can go from sleep to active mode in 30 ms or less,
the latency can be low and in result the devices can be responsive,
in particular compared to Bluetooth devices that wake-up time can
be longer (typically around three seconds).

[source: Gary Legg, ZigBee: Wireless Technology for Low-Power Sensor Networks,
http://www.eetimes.com/document.asp?doc_id=1275760]
ZigBee

[source: Gary Legg, ZigBee: Wireless Technology for Low-Power Sensor Networks,
http://www.eetimes.com/document.asp?doc_id=1275760]
Network protocols

− The network (or OSI Layer 3 abstraction) provides an


abstraction of the physical world.
− Communication protocols
− Most of the IP-based communications are based on the IPV.4
(and often via gateway middleware solutions)
− IP overhead makes it inefficient for embedded devices with low
bit rate and constrained power.
− However, IPv6.0 is increasingly being introduced for embedded
devices
− 6LowPAN
IPv6 over Low power Wireless Personal Area Networks
(6LowPAN)

− 6LoWPAN typically includes devices that work together to connect


the physical environment to real-world applications, e.g., wireless
sensors.
− Small packet size
− the maximum physical layer packet is 127 bytes
− 81 octets (81 * 8 bits) for data packets.
− Header compression
− Fragmentation and reassembly
− 6LoWPAN defines a header encoding to support fragmentation when
IPv6 datagrams do not fit within a single frame and compresses IPv6
headers to reduce header overhead.
− Support for both 16-bit short or IEEE 64-bit extended media access
control addresses.
− Low bandwidth
− Data rates of 250 kbps, 40 kbps, and 20 kbps for each of the currently
defined physical layers (2.4 GHz, 915 MHz, and 868 MHz, respectively).
Source: Jonathan W. Hui and David E. Culler, IPv6 in Low-Power Wireless Networks, Proceedings of the IEEE (Volume:98 , Issue: 11 ).
6LowPAN

− IPv6 requires the link to carry a payload of up to 1280


Bytes.
− Low-power radio links often do not support such a large
payload - IEEE 802.15.4 frame only supports 127 Bytes
of payload and around 80 B in the worst case (with
extended addressing and full security information).
− the IPv6 base header, as shown, is relatively large at 40
Bytes.

Source: Jonathan W. Hui and David E. Culler, IPv6 in Low-Power Wireless Networks, Proceedings of the IEEE (Volume:98 , Issue: 11 ).
Using gateway and middleware

− It is unlikely that everything will be IP enabled and/or will


run IP protocol stack
− Gateway and middleware solutions can interfaces
between low-level sensor island protocols and IP-based
networks.
− The gateway can also provide other components such
as QoS support, caching, mechanisms to address
heterogeneity and interoperability issues.
Gateway and IP networks

Gateway

Frieder Ganz, Payam Barnaghi, Francois Carrez and Klaus Moessner, "Context-aware
Management for Sensor Networks", in the Fifth International Conference on COMmunication
System softWAre and middlewaRE (COMSWARE11), July 2011.
Service interfaces to WSN

− Supporting high-level request/response interactions


− Asynchronous event notifications
− Identifying and accessing data
− By location, by observed entity,
− By semantically meaningful representations – “Room 35BA01”
− Accessibility of in-network processing functions
− Accessing node/network status information (e.g., battery level)
− Security, management functionality, …
− There are emerging solutions and standards in this domain
supported by Semantic Web technologies and Linked-data (we
study some of these next week).
Service interfaces and Web connectivity

− WSN nodes are typically resource constrained


− Memory and process limitations
− Communication load
− Often none-IP or use 6LowPAN
− Using gateway and middleware is a clear solution
− Or can the nodes directly connect to the Web and or
support service interfaces?
Constrained Application Protocol (CoAP)

− CoAP is a transfer protocol for constrained nodes and networks.


− CoAP uses the Representational State Transfer (REST)
architecture.
− REST make information available as resources that are identified by
URIs.
− Applications communication by exchanging representation of these
resources using a transfer protocol such as HTTP.
− Clients access servicer controlled resources using synchronous
request/response mechanisms.
− Such as GET, PUT, POST and DELETE.
− CoAp uses UDP instead of TCP and has a simple “message layer” for
re-transmitting lost packets.
− It also uses compression techniques.

C. Bormann, A. P. Castellani, Z. Shelby, "CoAP: An Application Protocol for Billions of Tiny Internet Nodes," IEEE Internet Computing,
vol. 16, no. 2, pp. 62-67, Feb. 2012, doi:10.1109/MIC.2012.29
Constrained Application Protocol (CoAP)

Server

200 OK
GET/temperature, Txt/plain
Room A 17, Celsius

Client
CoAP protocol stack and interactions

C. Bormann, A. P. Castellani, Z. Shelby, "CoAP: An Application Protocol for Billions of Tiny Internet Nodes," IEEE Internet Computing,
vol. 16, no. 2, pp. 62-67, Feb. 2012, doi:10.1109/MIC.2012.29
Further reading and examples

− Processes and protothreads: https://github.com/contiki-


os/contiki/wiki/Processes

− Examples: https://github.com/contiki-
os/contiki/tree/master/examples

− Cooja simulator (if you are interested in advance


programming and simulation): https://github.com/contiki-
os/contiki/wiki/An-Introduction-to-Cooja

48
Acknowledgment

− Parts of the content is adapted from:


− Waltenegus Dargie, Christian Poellabauer, “Fundamentals of
Wireless Sensor Networks: Theory and Practice” (Wireless
Communications and Mobile Computing), Wiley, 2010.
− Holger Karl, Andreas Willig, “Protocols and Architectures for
Wireless Sensor Networks”, Wiley, 2007.
ISBN: 978-0-470-51923-3.

49
Questions?

50

You might also like