E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
1
EE 586 Communication andSwitching Networks
Lecture 26
1
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Contiki Target Systems
Small embedded processors with networking
Sensor networks, smart objects, ...
98% of all microprocessors go into embeddedsystems
50% of all processors are 8-bit
MSP430, AVR, ARM7, 6502, ...
2
underline_base
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Wireless Sensor Mote (TelosB)
Ultra low-power wireless module
for sensor networks, monitoring app, rapidprototyping
Key Features
2.4GHz 802.15.4 radio, 250kps
8MHz processor, 10k RAM, 48k Flash
Fast wakeup (6s)
1MB external flash (16 segments, each 64kB)
Ultra low current consumption
TinyOS support
3
underline_base
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Wireless Sensor Mote (TelosB)
4
underline_base
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Event vs Multi-thread
Single Event-based – simple, single memory space,but require lots of user interaction
Multithread – easy to program but memory (andpower) intensive to manage all the threads
Contiki – “Protothread” implemenation = event-based but very simple multithreading
underline_base
5
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Common mote communication
underline_base
6
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Pure event-based has many states
underline_base
7
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Protothread-based implementation
underline_base
Essentially 2threads – OS andyour code
8
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Contiki Directory Structure
apps/– architecture independent applications
One subdirectory per application
core/–system source code
Subdirectories for different parts of the system
cpu/–CPU-specific code
One subdirectory per CPU
doc/–documentation
examples/–example project directories
Subdirectories with project
platform/–platform-specific code
One subdirectory per platform
tools/–software for building Contiki, sendingfiles
underline_base
9
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Contiki Build System
Purpose 1: easy to recompile applications fordifferent platforms
Purpose 2: keep application code out of theContiki directories
Only need to change the make command to buildfor different platforms
Ideally, no changes needed to the programs
In practice, not all ports support everything
Particularly low-level hardware stuff
underline_base
10
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
make TARGET =
TARGET=name of a directory under platform/
make TARGET=xxx savetarget
Remembers the TARGET
Example: make TARGET=sky savetarget
underline_base
11
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Building Hello World
underline_base
12
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Simple hands-on exercises
Run “Hello World” on Native Platform
Run Blinker program on TelosB mote
Run “Hello World” on TelosB mote
Run network shell on TelosB mote
underline_base
13
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Hello World
underline_base
14
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Contiki Make
cd examples/hello-world
make TARGET=native hello-world.native
start with ./hello-world.native
make TARGET=sky
 Builds monolithic system image for sky
make TARGET=sky hello-world.upload
Build and upload system image for sky
make TARGET=sky hello-world.mspsim
Build image and starts MSPSim with it, cool!!
underline_base
15
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Start your own program
Create a directory of the name of the projectinside “examples”
Copy Makefile from hello-world and change thename of the target inside to your project
Use “gedit” as an editor with the hello-world asskeleton
underline_base
16
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Timers in Contiki
struct timer
Passive timer, only keeps track of its expiration time
struct etimer
Active timer, sends an event when it expires
struct ctimer
Active timer, calls a function when it expires
struct rtimer
Real-time timer, calls a function at an exact time
underline_base
17
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Events and Processes
PROCESS_WAIT_EVENT();
Waits for an event to be posted to the process
PROCESS_WAIT_EVENT_UNTIL(condition c);
Waits for an event to be posted to the process, with an extracondition.
Often used: wait until timer has expired
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&timer));
PROCESS_POST(...) and PROCESS_POST_SYNCH(..)
Post (a)synchronous event to a process.
The other process usually waits withPROCESS_WAIT_EVENT_UNTIL(ev == EVENTNAME);
New events can just be defined e.g. #define EVENT_EX1
underline_base
18
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Extend hello-world to toggle LEDs
underline_base
19
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Let Hello World print everyfour seconds or when button is pressed
Etimer code that needs to be added at the rightplaces:
static struct etimer et;
etimer_set(&et, CLOCK_SECOND*4);
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));
Automatic variables not stored across a blocking wait
Compiler does produce a warning (not always)
Workaround: use static local variables instead
underline_base
20
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Button Press Code Fragment
underline_base
SENSOR_ACTIVATE(button_sensor);
21
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Communication stack
Two communication stacksin Contiki
uIP –TCP/IP
Rime –low overhead overradio link
Applications can use eitheror both or none
uIP can run over Rime andvice versa
underline_base
22
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Communication stack
Two communication stacksin Contiki
uIP –TCP/IP
Rime –low overhead overradio link
Applications can use eitheror both or none
uIP can run over Rime andvice versa
underline_base
23
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
RIME
The Rime stack is a layeredprotocol stack.
Check out examples inexamples/rime:
find abc (anonymousbroadcast), unicast, runicastand other stuff
Model:
Callbacks - Called whenpacket arrives, times out,error condition, …
Connections must be openedbefore use
Arguments: module structure,channel, callbacks
underline_base
24
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Rime channel
All communication in Rime is identified by a 16-bit channel (like a port in IP)
Communicating nodes must agree on whatmodules to use on a certain channel
Example
unicast <-> unicast on channel 155
netflood <-> netflood on channel 130
Channel numbers < 128 are reserved by the systemused by the shell, other system apps
underline_base
25
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Rime example
underline_base
26