RIOT is a relatively new operating system specifically aimed at applications in lightweight embedded systems, wireless sensor networks and Internet-of-Things applications. Billed as “the friendly operating system for the Internet of Things”, RIOT is competing with similar offerings such as TinyOS, Contiki and embedded Linux.
This may sound complex, however RIOT is aimed at developer friendliness, allowing you to program like you are used to – using standard programming languages such as C or C++, with standard compilers and tools such as gcc, gdb and valgrind, without the developer wasting time having to learn new or complex development environments.
As a real-time operating system that supports C and C++ development, multithreading and a high degree of modularity, RIOT offers all this with a very small, lightweight footprint that is well suited to use with small microcontrollers with limited memory and resources available.
Thus RIOT is aimed at minimising the learning curve needed for embedded programming whilst also being convenient and accessible to developers with established non-embedded programming experience.
The origins of RIOT can be traced back to 2008, when it was originally forked from the output of a German research program called FeuerWhere, that was dedicated to monitoring the location, safety and environmental conditions of Berlin firefighters working in emergency situations.
After being rebranded and expanded, RIOT was released to the public as an open-source project. RIOT is aimed at bridging the gap between fully-fledged Linux operating systems and existing solutions like Contiki and TinyOS that are aimed primarily at wireless sensor networks. The key design goals of RIOT are memory efficiency, energy efficiency in battery-powered devices, modularity and a developer-friendly programming interface.
RIOT is free, open-source software released under a LGPL license, meaning you can freely re-distribute and modify the software. RIOT is a publicly available community project, with an active community of users and developers online where you can learn more about RIOT, get help with writing an application for RIOT from other users and developers, and participate yourself and contribute to open-source kernel development or the integration of support for new platforms, microcontrollers and peripheral devices.
Implementing systems with RIOT isn’t difficult, due to the numerous supported embedded platforms, including the NXP LPC1768, the Texas Instruments MSP430, ST Microelectronics’ STM32 32-bit ARM family and other Cortex-M3 and Cortex-M4 devices, as well as common x86 PCs and x86 embedded systems.
The hardware dependent code is reduced to a minimum and abstracted from the kernel itself. For users that are more familiar with non-embedded programming and software development, you can start with the native port of RIOT, allowing you to run RIOT inside a process on Linux or OSX.
This eases the development and debugging of both RIOT itself and the projects you are developing that run on top of RIOT, allowing you to analyse, develop, test and debug your software with familiar, open tools and platforms such as gdb and valgrind, and to create virtual testbeds of multiple instances of RIOT running on a virtualised embedded hardware platform, running simultaneously and networked together with a configurable network topology, using only your PC.
After development and testing of your code on the native port and using this virtualisation capability, it can easily be deployed to your real embedded devices. Integrated system-on-chip devices containing integrated microcontrollers and radio transceivers on a single chip, such as TI’s CC430F6137, can be used, along with development boards and platforms such as the mBed, ScatterWeb MSB-A2, ScatterWeb MSB-430H, Memsic Telos-B, Texas Instruments’ eZ430-RF2500 and EZ430-Chronos.
You can write your code once, and easily compile and deploy the same code for both 16-bit platforms such as the MSP430 and 32-bit platforms such as ARM.
RIOT is specifically designed with features that are aimed at lightweight embedded devices for wireless sensor networks and Internet-of-Things applications, including very efficient memory and resource use, reliability and robustness in embedded applications running for long periods out in the field without maintenance, a real-time kernel with very low interrupt latency, priority-based scheduling and a tickless scheduler, high energy efficiency, strong code-footprint flexibility and multi-threading with very low threading overhead – making RIOT well suited to the smaller things in the Internet of Things.
RIOT includes core support for IPv6 6LoWPAN (RFC6282 and RFC6775 compliant), UDP, TCP including 6LoWPAN header compression, RFC6550/RFC6719-compliant RPL, and CCN-lite for content-centric networking support.
Furthermore the system includes high-resolution and long-term timers, which is important for embedded applications where timers may need to be running constantly in a device that is deployed for months or years without being rebooted.
Other useful tools and utilities are built in, such as support for SHA-256 and Bloom filtering. RIOT includes wiselib built-in, which is a generic C++ algorithm library for heterogeneous, distributed, embedded systems, including algorithms for routing, clustering, time sync, localisation, security, and other common functions.
RIOT includes many built-in drivers for hardware peripherals that allow you to get started with useful hardware applications right out of the box. Some of the supported hardware peripherals include the CC2420, CC1100 and AT86RF231 radio transceivers, the Sensirion SHT11 humidity and temperature sensor, the LTC4150 battery charge/discharge counter, and many other sensors including accelerometers and ultrasonic rangefinders.
Thus with your product needs identified, RIOT can work with a wide range of hardware and base MCUs to form a complete product without “re-inventing the wheel”. If this is of interest, or you need guidance for any or all stages of product design – the first step is to discuss your needs with our team of experienced engineers that can help you in all steps of product design, from the idea to the finished product.
To get started, join us for an obligation-free and confidential discussion about your ideas and how we can help bring them to life – click here to contact us, or telephone 1800 810 124.
LX is an award-winning electronics design company based in Sydney, Australia. LX services include full turnkey design, electronics, hardware, software and firmware design. LX specialises in embedded systems and wireless technologies design.
Published by LX Pty Ltd for itself and the LX Group of companies, including LX Design House, LX Solutions and LX Consulting, LX Innovations.