RIOT Documentation¶
RIOT in a nutshell ¶
RIOT is an open-source microkernel-based operating system, designed to match the requirements of Internet of Things (IoT) devices and other embedded devices. These requirements include a very low memory footprint (on the order of a few kilobytes), high energy efficiency, real-time capabilities, communication stacks for both wireless and wired networks, and support for a wide range of low-power hardware.
RIOT provides a microkernel, multiple network stacks, and utilities which include cryptographic libraries, data structures (bloom filters, hash tables, priority queues), a shell and more. RIOT supports a wide range of microcontroller architectures, radio drivers, sensors, and configurations for entire platforms, e.g. Atmel SAM R21 Xplained Pro, Zolertia Z1, STM32 Discovery Boards etc. (see the list of supported hardware. Across all supported hardware (32-bit, 16-bit, and 8-bit platforms). RIOT provides a consistent API and enables ANSI C and C++ application programming, with multithreading, IPC, system timers, mutexes etc.
Contribute to RIOT ¶
RIOT is developed by an open community that anyone is welcome to join:
- Download and contribute your code on GitHub. You can read about how to contribute in our GitHub Wiki.
- Subscribe to users@riot-os.org to ask for help using RIOT or writing an application for RIOT (or to just stay in the loop). An archive of this list is available here.
- Subscribe to devel@riot-os.org to follow and discuss kernel and network stack development, or hardware support. An archive of this list is available here.
- Follow us on Twitter for news from the RIOT community.
- Regarding critical vulnerabilities we would appreciate if you give us a 90-days head-start by reporting to security@riot-os.org, before making your information publicly available
- Contact us on IRC for live support and discussions: irc.freenode.org #riot-os
The quickest start ¶
You can run RIOT on most IoT devices, on open-access testbed hardware (e.g. IoT-lab), and also directly as a process on your Linux/FreeBSD/OSX machine (we call this the native
port). Try it right now in your terminal window:
1 2 3 4 5 6 7 8 9 | git clone git://github.com/RIOT-OS/RIOT.git # assumption: git is pre-installed
cd RIOT
git checkout <LATEST_RELEASE>
./dist/tools/tapsetup/tapsetup # create virtual Ethernet
# interfaces to connect multiple
# RIOT instances
cd examples/default/
make all
make term
|
… and you are in the RIOT shell! Type help
to discover available commands. For further information see the README of the default example.
To use RIOT directly on your embedded platform, and for more hands-on details with RIOT, see Getting started.
Before that, skimming through the next section is recommended (but not mandatory).
Structure ¶
This section walks you through RIOT’s structure. Once you understand this structure, you will easily find your way around in RIOT’s code base.
RIOT’s code base is structured into five groups.
- The kernel (
core
) - Platform specific code (
cpu
;boards
) - Device drivers (
drivers
) - Libraries and network code (
sys
;pkg
) - Applications for demonstrating features and for testing (
examples
;tests
)
In addition RIOT includes a collection of scripts for various tasks (dist
) as well as a predefined environment for generating this documentation (doc
).
The structural groups are projected onto the directory structure of RIOT, where each of these groups resides in one or two directories in the main RIOT directory.
The following list gives a more detailed description of each of RIOT’s top-level directories: