2006-06-17 22:41:10 +00:00
|
|
|
/**
|
|
|
|
|
|
|
|
\mainpage The Contiki Operating System 2.x
|
|
|
|
|
2007-03-29 23:18:47 +00:00
|
|
|
\author Adam Dunkels <adam@sics.se>
|
|
|
|
|
|
|
|
Contiki is an open source, highly portable, multi-tasking operating
|
|
|
|
system for memory-constrained networked embedded systems written by
|
|
|
|
Adam Dunkels at the Networked Embedded Systems group at the Swedish
|
|
|
|
Institute of Computer Science.
|
|
|
|
|
|
|
|
Contiki is designed for embedded systems with small amounts of
|
|
|
|
memory. A typical Contiki configuration is 2 kilobytes of RAM and 40
|
|
|
|
kilobytes of ROM. Contiki consists of an event-driven kernel on top of
|
|
|
|
which application programs are dynamically loaded and unloaded at
|
|
|
|
runtime. Contiki processes use light-weight protothreads that provide
|
|
|
|
a linear, thread-like programming style on top of the event-driven
|
|
|
|
kernel. Contiki also supports per-process optional preemptive
|
|
|
|
multi-threading, interprocess communication using message passing
|
|
|
|
through events, as well as an optional GUI subsystem with either
|
|
|
|
direct graphic support for locally connected terminals or networked
|
|
|
|
virtual display with VNC or over Telnet.
|
|
|
|
|
|
|
|
Contiki contains two communication stacks: uIP and 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 best-effort local area broadcast, to
|
|
|
|
reliable multi-hop bulk data flooding.
|
|
|
|
|
|
|
|
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-17 22:41:10 +00:00
|
|
|
|
|
|
|
Contiki is written in the C programming language and is freely
|
|
|
|
available as open source under a BSD-style license. More information
|
|
|
|
about Contiki can be found at the Contiki home page:
|
2007-03-29 23:18:47 +00:00
|
|
|
http://www.sics.se/contiki/
|
2006-06-17 22:41:10 +00:00
|
|
|
|
|
|
|
|
2007-03-29 23:18:47 +00:00
|
|
|
\section contiki-mainpage-tcpip TCP/IP
|
2006-06-17 22:41:10 +00:00
|
|
|
|
2007-03-29 23:18:47 +00: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-02 22:04:09 +00:00
|
|
|
|
2007-03-29 23:18:47 +00:00
|
|
|
\sa \ref uip "The uIP TCP/IP stack documentation"
|
|
|
|
\sa \ref tcpip "The Contiki/uIP interface"
|
|
|
|
\sa \ref psock "Protosockets library"
|
2006-10-02 22:04:09 +00:00
|
|
|
|
2007-03-29 23:18:47 +00:00
|
|
|
\section contiki-mainpage-rime Rime
|
2006-10-02 22:04:09 +00:00
|
|
|
|
2007-03-29 23:18:47 +00: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-17 22:41:10 +00: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-29 23:18:47 +00: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-02 22:04:09 +00:00
|
|
|
|
2007-03-29 23:18:47 +00:00
|
|
|
See \ref esb-getting-started "Getting started with Contiki for the ESB platform
|
2006-10-02 22:04:09 +00:00
|
|
|
|
2007-03-29 23:18:47 +00: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-02 22:04:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
*/
|