Home
About Contiki
Download
Instant Contiki
Install and Compile
Documentation
Publications and Talks
Mailing lists
Changelog
uIPv6 FAQ
Statistics
Visitors: 1611860
Article Categories
Current Events
Developers
Events
News
Perspective
Platforms
Projects
Tutorials
All
User Menu
Profile
Login
Syndicate
About Contiki Print

Image
Contiki is an open source, highly portable, multi-tasking operating system for memory-efficient networked embedded systems and wireless sensor networks. Contiki has been used is a variety of projects, such as road tunnel fire monitoring, intrusion detection, water monitoring in the Baltic Sea, and in surveillance networks.

Contiki is designed for microcontrollers with small amounts of memory. A typical Contiki configuration is 2 kilobytes of RAM and 40 kilobytes of ROM.

Image
Contiki provides IP communication, both for IPv4 and IPv6. Contiki and its uIPv6 stack are IPv6 Ready Phase 1 certified and therefor has the right to use the IPv6 Ready silver logo.

Contiki is developed by a group of developers from industry and academia lead by Adam Dunkels from the Swedish Institute of Computer Science. The Contiki team currently has sixteen members from SICS, SAP AG, Cisco, Atmel, NewAE and TU Münich

Image
Many key mechanisms and ideas from Contiki have been widely adopted in the industry. The uIP embedded IP stack, originally released in 2001, is today used by hundreds of companies in systems such as freighter ships, satellites and oil drilling equipment. Contiki and uIP are recognized by the popular nmap network scanning tool.
Image
Contiki's protothreads, first released in 2005, have been used in many different places, ranging from digital TV decoders and wireless vibration sensors to games for the Play Station 2. Contiki's idea of using IP communication in low-power sensor networks networks has lead to an IETF standard and an international industry alliance. TIME Magazine listed Internet of Things and the IPSO Alliance as the 30th most important innovation of 2008.

Low-power Radio Communication

Image
Contiki provides both full IP networking and low-power radio communication mechanisms. For communication within wireless sensor network, Contiki uses the Rime low-power radio networking stack. The Rime stack implements sensor network protocols ranging from reliable data collection and best-effort network flooding to multi-hop bulk data transfer and data dissemination. IP packets are tunnelled over multi-hop routing via the Rime stack.

Network Interaction

Image
Interaction with a network of Contiki sensors can be achieved with a Web browser, a text-based shell interface, or dedicated software that stores and displays collected sensor data. The text-based shell interface is inspired by the Unix command shell but provides special commands for sensor network interaction and sensing.

Power-efficiency

To provide a long sensor network lifetime, it is crucial to control and reduce the power consumption of each sensor node. Contiki provides a software-based power profiling mechanism that keeps track of the energy expenditure of each sensor node.

Image
Being software-based, the mechanism allows power profiling at the network scale without any additional hardware. Contiki's power profiling mechanism is used both as a research tool for experimental evaluation of sensor network protocols, and as a way to estimate the lifetime of a network of sensors.

On-node Storage: the Coffee File System

Contiki provides a flash-based file system, Coffee, for storing data inside the sensor network. The file system allows multiple files to coexist on the same physical on-board flash memory and has a performance that is close to the raw data throughput of the flash chip.

Simulators

Image
To ease software development and debugging, Contiki provides three simulation environments: the MSPsim emulator, the Cooja cross-layer network simulator, and the netsim process-level simulator. The development process for software for Contiki typically goes through all three simulation stages before the software runs on the target hardware.

Software Development for Contiki

Image
Contiki programs are written in the C programming language. To ease software development for Contiki, Instant Contiki provides a single-file download that contains all necessary tools and compilers for developing software for Contiki.

Programming Model

Contiki is written in the C programming language and consists of an event-driven kernel, on top of which application programs can be dynamically loaded and unloaded at run time. Contiki processes use lightweight protothreads that provide a linear, threadlike programming style on top of the event-driven kernel. In addition to protothreads, Contiki also supports per-process optional multithreading and interprocess communication using message passing. Contiki provides three types of memory management: regular malloc(), memory block allocation, and a managed memory allocator.

Developers

A number of people are or have been involved in the development of Contiki.

Contiki core group:

  • Adam Dunkels, Oliver Schmidt, Niclas Finne, Joakim Eriksson, Fredrik Österlind, Nicolas Tsiftes, Mathilde Durvy
Contiki team members:
  • Adam Dunkels, SICS, Main author, project leader.
  • Oliver Schmidt, SAP AG. Contiki developer and co-admin of the Contiki project at SourceForge. Apple II port, Microsoft Windows port.
  • Niclas Finne, SICS. Contiki developer and co-admin of the Contiki project at SourceForge, SICSlowpan, Contiki-collect.
  • Joakim Eriksson, SICS. Contiki developer. Tmote Sky port, MSPsim.
  • Fredrik Österlind, SICS. COOJA Contiki network simulator.
  • Takahide Matsutsuka. SDCC/Z80-based PC-6001 port.
  • Nicolas Tsiftes, SICS. The Coffee flash-based filesystem, MSB port, SICSlowpan.
  • Zhitao He, SICS. Power profiling demo code.
  • Simon Barner, TU München. AVR port.
  • Simon Berg, AT91SAM7s port.
  • Julien Abeillé, Cisco, uIPv6, SICSlowpan.
  • Mathilde Durvy, Cisco, uIPv6, SICSlowpan.
  • Colin O'Flynn, NewAE, AVR Raven port, AVR Raven USB stick IPv6 bridging.
  • Eric Gnoske, Atmel, AVR Raven port, 802.15.4 MAC.
  • Blake Leverett, Atmel, AVR Raven port, 802.15.4 MAC.
  • Michael Vidales, Atmel, AVR Raven port, 802.15.4 MAC.
  • David Kopf, AVR / Raven developer
  • Kasun Hewage, University of Colombo, MicaZ port
  • Zach Shelby, Sensinode, Sensinode port
  • Anthony Asterisk, 8051 port
Contiki contributors:
  • Luca Mottola, SICS, shell commands for remote file download
  • Björn Grönvall, SICS. Original work on TelosB/Tmote Sky port.
  • Tony Nordström, SICS. PPP development.
  • Matthias Bergvall, ENEA. Wrote the CTK-over-Telnet network GUI.
  • Thiemo Voigt, SICS. Several bug reports for Cooja.
  • Groepaz. NES and PCEngine ports.
  • Ullrich von Bassewitz. Developer of the cc65 C compiler which is used for the 6502 ports of Contiki.
  • Lawrence Chitty. Sharp Wizard port.
  • Fabio Fumi. Casio PocketViewer port.
  • Matthias Domin. Atari Jaguar port.
  • Christian Groessler. Atari 8-bit port.
  • Anders Carlsson. VIC-20 port.
  • Mikael Backlund. Contiki desktop icons.
  • James Dessart. Tandy CoCo Color Computer port.
  • Chris Morse. Apple II port.

Funding

We gratefully acknowledge the funding of work on Contiki from the following institutions:
Image
Image
Image
Image
Image

Parts of this text is from the article in ERCIM News 76, republished with permission.

Last Updated ( Thursday, 04 February 2010 )
 

Adam Dunkels (contact)

Contiki Development Microblog