2006-06-18 00:41:10 +02:00
|
|
|
/**
|
|
|
|
|
2009-03-01 21:40:53 +01:00
|
|
|
\mainpage The Contiki Operating System
|
2006-06-18 00:41:10 +02:00
|
|
|
|
2007-03-30 01:18:47 +02:00
|
|
|
Contiki is an open source, highly portable, multi-tasking operating
|
2009-03-01 21:40:53 +01:00
|
|
|
system for memory-efficient networked embedded systems and wireless
|
|
|
|
sensor 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.
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
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. Contiki's
|
|
|
|
protothreads, first released in 2005, have been used in many different
|
|
|
|
embedded systems, ranging from digital TV decoders to wireless
|
|
|
|
vibration sensors.
|
|
|
|
|
|
|
|
Contiki introduced the idea of using IP communication in low-power
|
|
|
|
sensor networks networks. This subsequently lead to an IETF standard
|
|
|
|
and the IPSO Aliance, an international industry alliance. TIME
|
|
|
|
Magazine listed Internet of Things and the IPSO Alliance as the 30th
|
|
|
|
most important innovation of 2008.
|
|
|
|
|
|
|
|
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 consists of sixteen developers
|
|
|
|
from SICS, SAP AG, Cisco, Atmel, NewAE and TU Munich.
|
2007-03-30 01:18:47 +02:00
|
|
|
|
2007-04-02 20:07:10 +02:00
|
|
|
Contiki contains two communication stacks: \ref uip "uIP" and \ref
|
|
|
|
rime "Rime". uIP is a small RFC-compliant TCP/IP stack that makes it
|
|
|
|
possible for Contiki to communicate over the Internet. Rime is a
|
|
|
|
lightweight communication stack designed for low-power radios. Rime
|
|
|
|
provides a wide range of communication primitives, from \ref rimeabc
|
|
|
|
"best-effort local area broadcast", to \ref rudolph1
|
|
|
|
"reliable multi-hop bulk data flooding".
|
2007-03-30 01:18:47 +02:00
|
|
|
|
|
|
|
Contiki runs on a variety of platform ranging from embedded
|
|
|
|
microcontrollers such as the MSP430 and the AVR to old
|
|
|
|
homecomputers. Code footprint is on the order of kilobytes and memory
|
|
|
|
usage can be configured to be as low as tens of bytes.
|
2006-06-18 00:41:10 +02:00
|
|
|
|
|
|
|
Contiki is written in the C programming language and is freely
|
2009-03-01 21:40:53 +01:00
|
|
|
available as open source under a BSD-style license.
|
2006-06-18 00:41:10 +02:00
|
|
|
|
2007-03-30 01:18:47 +02:00
|
|
|
\section contiki-mainpage-tcpip TCP/IP
|
2006-06-18 00:41:10 +02:00
|
|
|
|
2007-03-30 01:18:47 +02:00
|
|
|
Contiki includes the uIP TCP/IP stack (http://www.sics.se/~adam/uip/)
|
|
|
|
that provides Contiki with TCP/IP networking support. uIP provides the
|
|
|
|
protocols TCP, UDP, IP, and ARP.
|
2006-10-03 00:04:09 +02:00
|
|
|
|
2007-03-30 01:18:47 +02:00
|
|
|
\sa \ref uip "The uIP TCP/IP stack documentation"
|
|
|
|
\sa \ref tcpip "The Contiki/uIP interface"
|
|
|
|
\sa \ref psock "Protosockets library"
|
2006-10-03 00:04:09 +02:00
|
|
|
|
2007-03-30 01:18:47 +02:00
|
|
|
\section contiki-mainpage-rime Rime
|
2006-10-03 00:04:09 +02:00
|
|
|
|
2007-03-30 01:18:47 +02:00
|
|
|
Rime is a lightweight communication stacks designed for low-power
|
|
|
|
radios. Rime provides a wide range of communication primitives
|
|
|
|
suitable for implementing communication-bound applications or network
|
|
|
|
protocols.
|
|
|
|
|
|
|
|
\sa \ref rime "The Rime Communication Stack"
|
2006-06-18 00:41:10 +02:00
|
|
|
|
|
|
|
\section contiki-mainpage-threads Multi-threading and protothreads
|
|
|
|
|
|
|
|
Contiki is based on an event-driven kernel but provides support for
|
|
|
|
both multi-threading and a lightweight stackless thread-like construct
|
|
|
|
called protothreads.
|
|
|
|
|
|
|
|
\sa \ref process "Contiki processes"
|
|
|
|
\sa \ref pt "Protothreads"
|
|
|
|
\sa \ref etimer "Event timers"
|
|
|
|
\sa \ref mt "Optional multi-threading"
|
|
|
|
|
|
|
|
\section contiki-mainpage-lib Libraries
|
|
|
|
|
|
|
|
Contiki provides a set of convenience libraries for memory management
|
|
|
|
and linked list operations.
|
|
|
|
|
|
|
|
\sa \ref timer "Simple timer library"
|
|
|
|
\sa \ref memb "Memory block management"
|
|
|
|
\sa \ref list "Linked list library"
|
|
|
|
|
2007-03-30 01:18:47 +02:00
|
|
|
\section contiki-mainpage-getting-started Getting started with Contiki
|
|
|
|
|
|
|
|
Contiki is designed to run on many different \ref platform "platforms". It is also
|
|
|
|
possible to compile and build both the Contiki system and Contiki
|
|
|
|
applications on many different development platforms.
|
2006-10-03 00:04:09 +02:00
|
|
|
|
2007-03-30 01:18:47 +02:00
|
|
|
\section contiki-mainpage-building Building the Contiki system and its applications
|
|
|
|
|
|
|
|
The Contiki build system is designed to make it easy to compile
|
|
|
|
Contiki applications for either to a hardware platform or into a
|
|
|
|
simulation platform by simply supplying different parameters to the
|
|
|
|
<tt>make</tt> command, without having to edit makefiles or modify
|
|
|
|
the application code.
|
|
|
|
|
|
|
|
See \ref buildsystem
|
2006-10-03 00:04:09 +02:00
|
|
|
|
|
|
|
|
|
|
|
*/
|