Contiki
<templatestyles src="Module:Hatnote/styles.css"></templatestyles>
<templatestyles src="Module:Hatnote/styles.css"></templatestyles>
Screenshot of an Ubuntu system showing Contiki 2.6 running on 41 nodes forming an IPv6/RPL/6lowpan network in the Cooja Contiki network simulator.
|
|
Developer | Adam Dunkels |
---|---|
Written in | {{#property:p277}} |
Working state | Current |
Source model | Open source |
Initial release | March 10, 2003 |
Latest release | 3.0 / August 26, 2015 |
License | BSD License |
Official website | www |
Contiki is an open source operating system for networked, memory-constrained systems with a particular focus on low-power wireless Internet of Things devices. Examples of where Contiki is used include street lighting systems, sound monitoring for smart cities, radiation monitoring systems, and alarm systems.[1] Contiki was created by Adam Dunkels in 2002[2] and has been further developed by a world-wide team of developers from Texas Instruments, Atmel, Cisco, ENEA, ETH Zurich, Redwire, RWTH Aachen University, Oxford University, SAP, Sensinode, Swedish Institute of Computer Science, ST Microelectronics, Zolertia, and many others.[3] The name Contiki comes from Thor Heyerdahl's famous Kon-Tiki raft.
Despite providing multitasking and a built-in TCP/IP stack, Contiki only needs about 10 kilobytes of RAM and 30 kilobytes of ROM.[1] A full system, complete with a graphical user interface, needs about 30 kilobytes of RAM.[4]
Contents
Hardware
Contiki is designed to run on classes of hardware devices that are severely constrained in terms of memory, power, processing power, and communication bandwidth. A typical Contiki system has memory on the order of kilobytes, a power budget on the order of milliwatts, processing speed measured in megahertz, and communication bandwidth on the order of hundreds of kilobits/second. This class of systems includes both various types of embedded systems as well as a number of old 8-bit computers.
Networking
Contiki provides three network mechanisms: the uIP TCP/IP stack,[5] which provides IPv4 networking, the uIPv6 stack,[6] which provides IPv6 networking, and the Rime stack, which is a set of custom lightweight networking protocols designed specifically for low-power wireless networks. The IPv6 stack was contributed by Cisco and was, at the time of release, the smallest IPv6 stack to receive the IPv6 Ready certification.[7] The IPv6 stack also contains the RPL routing protocol for low-power lossy IPv6 networks and the 6LoWPAN header compression and adaptation layer for IEEE 802.15.4 links.
The Rime stack is an alternative network stack that is intended to be used when the overhead of the IPv4 or IPv6 stacks is prohibitive. The Rime stack provides a set of communication primitives for low-power wireless systems. The default primitives are single-hop unicast, single-hop broadcast, multi-hop unicast, network flooding, and address-free data collection. The primitives can be used on their own or combined to form more complex protocols and mechanisms.[8]
Low-power operation
Many Contiki systems are severely power-constrained. Battery operated wireless sensors may need to provide years of unattended operation and with little means to recharge or replace its batteries. Contiki provides a set of mechanisms for reducing the power consumption of the system on which it runs. The default mechanism for attaining low-power operation of the radio is called ContikiMAC.[9] With ContikiMAC, nodes can be running in low-power mode and still be able to receive and relay radio messages.
Simulation
The Contiki system includes a network simulator called Cooja.[10] Cooja simulates networks of Contiki nodes. The nodes may belong to either of three classes: emulated nodes, where the entire hardware of each node is emulated, Cooja nodes, where the Contiki code for the node is compiled for and executed on the simulation host, or Java nodes, where the behavior of the node must be reimplemented as a Java class. A single Cooja simulation may contain a mixture of nodes from either of the three classes. Emulated nodes can also be used to include non-Contiki nodes in a simulated network.
In Contiki 2.6, platforms with the TI MSP430 and Atmel AVR microcontrollers can be emulated.
Programming model
To run efficiently on memory-constrained systems, the Contiki programming model is based on protothreads.[11][12] A protothread is a memory-efficient programming abstraction that shares features of both multi-threading and event-driven programming to attain a low memory overhead of each protothread. The kernel invokes the protothread of a process in response to an internal or external event. Examples of internal events are timers that fire or messages being posted from other processes. Examples of external events are sensors that trigger or incoming packets from a radio neighbor.
Protothreads are cooperatively scheduled. This means that a Contiki process must always explicitly yield control back to the kernel at regular intervals. Contiki processes may use a special protothread construct to block waiting for events while yielding control to the kernel between each event invocation.
Features
Contiki supports per-process optional preemptive multi-threading, inter-process 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.
A full installation of Contiki includes the following features:
- Multitasking kernel
- Optional per-application pre-emptive multithreading
- Protothreads
- TCP/IP networking, including IPv6
- Windowing system and GUI
- Networked remote display using Virtual Network Computing
- A web browser (claimed to be the world's smallest)
- Personal web server
- Simple telnet client
- Screensaver
Ports
The Contiki operating system has been or is being ported to the following systems:
Microcontrollers
- Atmel — ARM, AVR
- Freescale — MC13224
- NXP Semiconductors — LPC1768,[13] LPC2103
- Microchip — dsPIC, PIC32 (PIC32MX795F512L)
- Texas Instruments — MSP430, CC2430, CC2538, CC2630, CC2650
- STMicroelectronics — STM32 W
Computers
- Apple — II series[lower-alpha 1]
- Atari — 8-bit,[lower-alpha 1] ST, Portfolio
- Casio — Pocket Viewer
- Commodore — PET,[lower-alpha 1] VIC-20,[lower-alpha 1] 64,[lower-alpha 1] 128[lower-alpha 1]
- Tangerine Computer Systems — Oric[lower-alpha 1]
- NEC — PC-6001
- Sharp — Wizard
- Intel, AMD, VIA, many others — x86-based Unix-like systems, atop GTK+, or more directly using an X Window System[14]
Game consoles
- Atari — Jaguar
- Game Park — GP32
- Nintendo — Game Boy, Game Boy Advance, Entertainment System (NES)[lower-alpha 1]
- NEC — TurboGrafx-16 Entertainment SuperSystem (PC Engine)
See also
- BeRTOS
- ERIKA Enterprise
- RIOT
- SymbOS
- TinyOS
- Wheels (operating system)
- Comparison of real-time operating systems
Notes
<templatestyles src="Reflist/styles.css" />
Cite error: Invalid <references>
tag; parameter "group" is allowed only.
<references />
, or <references group="..." />
References
<templatestyles src="Reflist/styles.css" />
Cite error: Invalid <references>
tag; parameter "group" is allowed only.
<references />
, or <references group="..." />
External links
![]() |
Wikimedia Commons has media related to Contiki. |
- Official website
- Lua error in package.lua at line 80: module 'strict' not found.: a web site run from an unmodified 1982 built Commodore 64
- Lua error in package.lua at line 80: module 'strict' not found.: unofficial website for historic ports of the 1.x version.
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- Lua error in package.lua at line 80: module 'strict' not found..
- ↑ 1.0 1.1 Lua error in package.lua at line 80: module 'strict' not found..
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found..
- ↑ Out in the Open: The Little-Known Open Source OS That Rules the Internet of Things
- ↑ Lua error in package.lua at line 80: module 'strict' not found..
- ↑ Lua error in package.lua at line 80: module 'strict' not found..
- ↑ Lua error in package.lua at line 80: module 'strict' not found..
- ↑ Lua error in package.lua at line 80: module 'strict' not found..
- ↑ Lua error in package.lua at line 80: module 'strict' not found..
- ↑ Lua error in package.lua at line 80: module 'strict' not found..
- ↑ Lua error in package.lua at line 80: module 'strict' not found. Lua error in package.lua at line 80: module 'strict' not found. (PDF, Presentation slides).
- ↑ Lua error in package.lua at line 80: module 'strict' not found..
- ↑ http://sourceforge.net/p/contiki/mailman/message/31753844/
- ↑ Lua error in package.lua at line 80: module 'strict' not found..
Cite error: <ref>
tags exist for a group named "lower-alpha", but no corresponding <references group="lower-alpha"/>
tag was found, or a closing </ref>
is missing
- Pages with reference errors
- Pages with broken file links
- Commons category link is defined as the pagename
- Official website not in Wikidata
- Wireless sensor network
- Embedded operating systems
- Free web browsers
- Home computer software
- Free software operating systems
- Retrocomputing
- TRS-80 Color Computer
- Commodore 64 software
- Commodore 128 software
- Apple II software
- Atari 8-bit family software
- Atari ST software
- Commodore VIC-20 software
- ARM operating systems