Skip to content

Commit cfc06cf

Browse files
committed
Update Contiki OS
1 parent 91371d8 commit cfc06cf

2 files changed

Lines changed: 81 additions & 27 deletions

File tree

src/content/libraries/tft-espi.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: News
2+
title: TFT_eSPI
33
slug: tft-espi
44
summary: TFT_eSPI is a high-performance graphics and font library optimized for 32-bit
55
microcontrollers, providing hardware-accelerated rendering via DMA and PIO. It features

src/content/rtos/contiki-os.md

Lines changed: 80 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,96 @@
11
---
22
title: Contiki OS
33
slug: contiki-os
4-
version: '3.0'
4+
summary: Contiki is a lightweight, open-source operating system designed for resource-constrained
5+
microcontrollers in the Internet of Things (IoT). It features a modular, event-driven
6+
architecture that supports standardized low-power wireless communication protocols
7+
while maintaining an extremely small memory footprint.
58
codeUrl: https://github.com/contiki-os/contiki
69
siteUrl: http://www.contiki-os.org/
7-
date: '2016-11-29'
8-
lastUpdated: '2018-11-03'
910
star: 3787
11+
version: '3.0'
12+
lastUpdated: '2018-11-03'
1013
components:
11-
- FileSystem
1214
- Network
15+
- Wireless
16+
- IPv6
17+
- TCP
18+
- UDP
1319
- 6LoWPAN
14-
- Command Line Interface
15-
libraries: []
16-
licenses:
17-
- BSD
20+
- CoAP
21+
- FileSystem
22+
- Shell
23+
- Profiling
24+
- Simulator
25+
- Cryptography
1826
platforms:
19-
- MSP430
2027
- ARM
28+
- MSP430
2129
- AVR
22-
- '8051'
23-
summary: Contiki is an open source operating system for the Internet of Things. Contiki
24-
connects tiny low-cost, low-power microcontrollers to the Internet.
30+
- x86
31+
- POSIX
32+
- Native
33+
- Simulator
34+
licenses:
35+
- BSD 3-Clause
36+
libraries:
37+
- uIP
38+
- Rime
2539
---
2640

2741
### Features
2842

29-
- Memory Allocation. Contiki is designed for tiny systems, having only a few kilobytes of memory available.
30-
- Full IP Networking. Contiki provides a full IP network stack, with standard IP protocols such as UDP, TCP, and HTTP, in addition to the new low-power standards like 6lowpan, RPL, and CoAP. The Contiki IPv6 stack, developed by and contributed to Contiki by Cisco, is fully certified under the IPv6 Ready Logo program.
31-
- Power Awareness. Contiki is designed to operate in extremely low-power systems: systems that may need to run for years on a pair of AA batteries. To assist the development of low-power systems, Contiki provides mechanisms for estimating the system power consumption and for understanding where the power was spent.
32-
- 6lowpan, RPL, CoAP. Contiki supports the recently standardized IETF protocols for low-power IPv6 networking, including the 6lowpan adaptation layer, the RPL IPv6 multi-hop routing protocol, and the CoAP RESTful application-layer protocol.
33-
- Dynamic Module Loading. Contiki supports dynamic loading and linking of modules at run-time.
34-
- The Cooja Network Simulator. Contiki devices often make up large wireless networks. Developing and debugging software for such networks is really hard. Cooja, the Contiki network simulator, makes this tremendously easier by providing a simulation environment that allows developers to both see their applications run in large-scale networks or in extreme detail on fully emulated hardware devices.
35-
- Sleepy Routers. In wireless networks, nodes may need to relay messages from others to reach their destination. With Contiki, even relay nodes, so-called routers, can be battery-operated thanks to the ContikiMAC radio duty cycling mechanism which allows them to sleep between each relayed message. Some call this sleeping routers, we call it sleepy routers.
36-
- Hardware Platforms. Contiki runs on a wide range of tiny platforms, ranging from 8051-powered systems-on-a-chip through the MSP430 and the AVR to a variety of ARM devices.
37-
- Protothreads. To save memory but provide a nice control flow in the code, Contiki uses a mechanism called protothreads. Protothreads is a mixture of the event-driven and the multi-threaded programming mechanisms.
38-
- Coffee flash file system. For devices that has an external flash memory chip, Contiki provides a lightweight flash file system, called Coffee.
39-
- The Contiki shell. Contiki provides an optional command-line shell with a set of commands that are useful during development and debugging of Contiki systems.
40-
- Regression Tests. To ensure that the Contiki code works as expected, the Contiki developers use a set of nightly regression tests that test important aspects of Contiki on a daily basis in the Cooja simulator.
41-
- The Rime Stack. In situations when bandwidth is at a premium or where the full IPv6 networking stack is overkill, Contiki provides a tailored wireless networking stack called Rime.
42-
- Build System. The Contiki build system makes it easy to compile applications for any of the available Contiki platforms. This makes it easy to try out applications on a range of different platforms.
43+
44+
- Event-driven kernel with optional per-process multi-threading capabilities.
45+
46+
- Protothreads mechanism providing lightweight, stackless threading to minimize memory overhead.
47+
48+
- Full IPv6 and IPv4 networking stacks including TCP, UDP, and ICMP support.
49+
50+
- Implementation of 6LoWPAN for efficient IPv6 communication over low-power wireless links.
51+
52+
- RPL (IPv6 Routing Protocol for Low-Power and Lossy Networks) for mesh networking.
53+
54+
- Support for the CoAP (Constrained Application Protocol) for RESTful web services.
55+
56+
- Dynamic loading and unloading of individual programs or services at runtime.
57+
58+
- Integrated power profiling tools to monitor and optimize energy consumption.
59+
60+
- Coffee flash file system designed specifically for flash memory constraints.
61+
62+
- ContikiMAC and TSCH radio duty-cycling mechanisms for ultra-low power operation.
63+
64+
- Cross-layer network simulation through the integrated Cooja simulator.
65+
66+
- Support for a wide range of 8-bit, 16-bit, and 32-bit microcontroller architectures.
67+
68+
- Rime stack providing a set of custom lightweight communication primitives.
69+
70+
- Shell interface for interactive system management and debugging.
71+
72+
- Standardized hardware abstraction layer for easy porting to new platforms.
73+
74+
75+
76+
Contiki utilizes a modular, event-driven architecture centered around a lightweight kernel. To manage concurrency without the high memory overhead of traditional multi-threading, Contiki introduces **Protothreads**, which are stackless threads that allow for blocking operations using a very small amount of RAM per process. The system is designed to be highly portable, separating the core OS logic from the hardware-specific drivers through a well-defined abstraction layer.
77+
78+
The system's networking subsystem is its most significant component, featuring the uIP stack for standard TCP/IP communication and the Rime stack for low-level, low-power wireless primitives. These stacks interact with various MAC and RDC (Radio Duty Cycling) layers to ensure that the radio, typically the most power-hungry component, is active only when necessary. This modularity allows developers to swap networking protocols based on the specific requirements of their IoT application.
79+
80+
#### Core Components
81+
- **Kernel**: Event-driven core managing process scheduling and timers.
82+
- **Protothreads**: Lightweight threading library for memory-efficient concurrency.
83+
- **uIP Stack**: Small-footprint TCP/IP implementation supporting IPv4 and IPv6.
84+
- **6LoWPAN**: Adaptation layer for IPv6 over IEEE 802.15.4.
85+
- **Coffee FS**: A file system optimized for the wear-leveling and page-access requirements of flash memory.
86+
- **Cooja**: A cross-layer simulator that allows for the emulation of entire Contiki networks.
87+
88+
### Use Cases
89+
This RTOS is ideal for:
90+
- **Smart City Infrastructure**: Powering networked street lighting and sound monitoring systems where long-term battery operation and mesh networking are required.
91+
- **Industrial Monitoring**: Deploying sensor networks in factories for vibration or temperature tracking using standardized industrial wireless protocols.
92+
- **Utility Metering**: Enabling networked electrical power meters to communicate consumption data over large-scale residential mesh networks.
93+
- **Environmental Sensing**: Supporting radiation or construction site monitoring where devices must remain autonomous for years on small batteries.
94+
95+
### Getting Started
96+
To begin developing with Contiki, developers typically start by setting up the toolchain for their target hardware, such as the MSP430 or ARM Cortex-M. The repository includes a variety of examples in the `examples/` directory, ranging from simple 'Hello World' applications to complex web servers and mesh networking demos. For simulation-based development, the Cooja simulator (found in `tools/cooja`) is the primary tool for testing network behavior before deploying to physical hardware. Note that while this repository contains the historical Contiki-OS, new projects are often encouraged to look at **Contiki-ng**, the next-generation evolution of the platform, for updated hardware support and modern features.

0 commit comments

Comments
 (0)