101 lines
3.9 KiB
Text
101 lines
3.9 KiB
Text
/**
|
|
|
|
\mainpage The Contiki Operating System 2.1
|
|
|
|
\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 \ref pt "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: \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".
|
|
|
|
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.
|
|
|
|
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:
|
|
http://www.sics.se/contiki/
|
|
|
|
|
|
\section contiki-mainpage-tcpip TCP/IP
|
|
|
|
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.
|
|
|
|
\sa \ref uip "The uIP TCP/IP stack documentation"
|
|
\sa \ref tcpip "The Contiki/uIP interface"
|
|
\sa \ref psock "Protosockets library"
|
|
|
|
\section contiki-mainpage-rime Rime
|
|
|
|
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"
|
|
|
|
\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"
|
|
|
|
\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.
|
|
|
|
See \ref esb-getting-started "Getting started with Contiki for the ESB platform
|
|
|
|
\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
|
|
|
|
|
|
*/
|