Contiki an Operating System for Wireless Sensor Networks - PowerPoint PPT Presentation

1 / 35
About This Presentation
Title:

Contiki an Operating System for Wireless Sensor Networks

Description:

Contiki an Operating System for Wireless Sensor Networks. Adam Dunkels ... Each process has an event handler. Inter-process communication ... – PowerPoint PPT presentation

Number of Views:1765
Avg rating:5.0/5.0
Slides: 36
Provided by: sics
Category:

less

Transcript and Presenter's Notes

Title: Contiki an Operating System for Wireless Sensor Networks


1
Contiki an Operating System for Wireless Sensor
Networks
  • Adam Dunkels
  • Swedish Institute of Computer Science
  • 29 October 2004

2
Contiki
  • Small operating system for tiny networked devices
  • Developed by yours truly
  • Typical tiny device
  • 8-bit microcontroller
  • 1 kilobyte RAM, 10 kilobytes ROM (code)
  • Network Radio, Ethernet, ...
  • What? 8-bit?

3
Embedded systems 8-bits are quite common...
4
Contiki
  • Ported to 20 platforms
  • MSP430, 6502, x86, AVR, Z80, PowerPC, ...
  • lt 10 by me, rest by others
  • Full TCP/IP support, provided by µIP
  • World's smallest full TCP/IP stack

5
Other cool features
  • Graphical User Interface
  • Directly connected display
  • VNC
  • Telnet, RS232 terminal
  • Mathias Bergvall, Enea
  • World's smallest web browser
  • 2000 lines of code
  • Mozilla has 7000 files of code

6
Tiny device programming model
  • Memory
  • Linear, no segmentation
  • No memory protection
  • Code in ROM
  • RAM much smaller than ROM (1-10)
  • Programming
  • Replace entire code memory
  • No boot loader, BIOS, OS, etc, just the raw CPU

7
Real-world example ESB
  • MSP430 CPU, 2 MHz
  • 60 k flash ROM (code)
  • 2 k RAM
  • Download code
  • Plug into parallel port on PC
  • Download code using software on PC
  • CPU supports self-reprogramming of ROM
  • Possible to do over-the-air reprogramming

8
Contiki goals
  • Portability
  • Flexibility
  • Loadable application programs, device drivers
  • Multitasking
  • Networking (TCP/IP)
  • Event-driven interfaces
  • Size

9
Specifics challenges
  • Constrained resources
  • Memory (less than 64 kilobytes)
  • CPU (less than 16 MHz)
  • How do we do efficient multitasking?
  • Threads? Preemption?
  • Locking?
  • Inter-process communication?
  • Over the network?

10
Multitasking in Contiki
11
Multitasking
  • The traditional thread-style
  • Multi-threading, preemption
  • Each thread needs its own stack
  • Needs lots of memory
  • ... or only a few threads on a tiny device
  • Locking problems
  • Contiki event-driven kernel

12
Contiki event-driven kernel
  • Small
  • Compact code (1k)
  • Very low memory requirements (a few bytes)
  • Multitasking
  • Each process has an event handler
  • Inter-process communication
  • Processes post events to each other

13
Event-driven control flow
14
Programs as finite state machines
Waiting
Received
Command
No output
Output
ACK received
Sending
Wait for ACK
No ACK received
Output sent
15
Event-driven code
  • eventhandler1(event)
  • switch(event)
  • case INIT
  • initialize()
  • return
  • case PACKET_RECEIVED
  • handle_packet()
  • return
  • case EXIT
  • cleanup()
  • return

eventhandler2(event) switch(event) case
EVENT1 if(condition) post(EVENT2,
self) return case EVENT2 condition
0 return case EVENT3 condition 1 return
16
Event-driven drawbacks
  • Hard to program
  • Programs must be implemented as state-machines
  • Modifications cumbersome
  • Not suitable for all applications
  • Long running computations may be hard to
    discretisize
  • But Contiki also supports threads...

17
Concurrency in Contiki
  • Contiki supports two additional concurrency
    models
  • Threads preemptive / non-preemptive
  • Protothreads stackless threads
  • Threads make programming easier (in some cases)
  • Supports blocked waiting

18
Threads
  • Implemented as application library
  • Applied on a per-application basis
  • Scheduling on application level
  • Event handler schedules thread
  • May be preempted
  • Drawbacks
  • Requires stack to be allocated
  • Locking

19
Protothreads stackless threads
  • Extremely lightweight threads
  • Can only run within a single C function
  • Does not require any stack!
  • Supports blocked waiting
  • Scheduled within event handler, poll handler,
    TCP/IP handler, etc
  • Similar to asymmetric coroutines
  • But more lightweight

20
Protothreads example
  • eventhandler(event)
  • PT_BEGIN()
  • PT_WAIT_UNTIL(event PACKET_RECEIVED)
  • send_reply()
  • PT_WAIT_UNTIL(event PACKET_TRANSMITTED)
  • lock_cache()
  • PT_WAIT_UNTIL(event PACKET_RECEIVED)
  • if(packet ACK) release_cache()
  • else post(PACKET_RECEIVED, self)
  • PT_END()

21
Runtime partitioning
22
Runtime partitioning
  • A running Contiki system is partitioned into two
    parts
  • Core
  • Programs
  • Core always present in memory (ROM)
  • Programs are loaded at runtime

23
Partitioning II
ROM
Programs
Core
RAM
Programs
Core
24
Core
  • Core, always present in memory
  • kernel
  • communication drivers
  • parts of language runtime (C library)
  • libraries
  • In general not changed after deployment
  • But not impossible to do so

25
Programs
  • Programs, loaded at runtime
  • Applications
  • May replace drivers, services in core
  • Examples
  • Web server
  • Telnet server
  • Event logging
  • Log replicator

26
Runtime reprogramming
27
Reprogramming
  • Programs can be loaded into RAM, ROM (if CPU
    supports rewriting flash ROM)
  • ESB does
  • Download code into EEPROM, burn into ROM
  • Downloaded program starts process
  • May replace a running service
  • May even replace core

28
Over-the-air reprogramming
  • Utilize the radio medium for programming
  • May be done in deployed networks
  • Very useful during development
  • Download algorithms
  • Unicast
  • Multicast

29
Current algorithm
  • Extremely simplistic unicast -gt multicast
  • Currently lousy algorithm, poor implementation
  • Still quite useful

30
Case studies
31
Radio IP-packet driver
  • Implemented as service
  • Data bytes are received by hardware interrupt
    handler
  • Requests a poll when full packet is received
  • Process has poll handler
  • Copies received packet into µIP buffer
  • Calls the TCP/IP service (µIP process)

32
Radio IP-packet driver II
  • µIP processes packet
  • Ordinary TCP/IP packet processing
  • µIP finds process to which packet is to be
    delivered
  • Synchronous event sent to process
  • Event handlers return control to radio driver
  • Driver checks µIP buffer, sends reply

33
Example application beeper
  • Beep twice every second
  • Illustrates
  • How to start process
  • How to exit process
  • Event handler
  • Poll handler
  • Timers

34
Beeper code
include "contiki.h" EK_POLLHANDLER(pollhandler)
EK_EVENTHANDLER(eventhandler, ev,
data) EK_PROCESS(p, "Beeper", EK_PRIO_NORMAL,
eventhandler, pollhandler, NULL) static struct
timer timer LOADER_INIT_FUNC(init, arg)
arg_free(arg) timer_set(timer,
CLOCK_SECOND/2) ek_start(p) EK_EVENTHANDLE
R(eventhandler, ev, data) if(ev
EK_EVENT_REQUEST_EXIT) ek_exit()
LOADER_UNLOAD()
EK_POLLHANDLER(pollhandler)
if(timer_expired(timer)) beep()
timer_reset(timer)
35
Thank you!
  • http//www.sics.se/adam/contiki/
Write a Comment
User Comments (0)
About PowerShow.com