Thanks to the IoT revolution of the last few years, the number of embedded systems is growing rapidly. The ever-increasing demand for functionality has provided a challenge in the development of these systems. The code is no longer simple and using a single task, instead it is complex and often consisting of multiple tasks which need to be scheduled. Besides the complexity of the code itself, these systems require a (constant) Internet connection and very low power consumption. To allow efficient development for this kind of applications, a specifically targeted operating system could be of great value.
RIOT is such a real-time embedded operating system, which provides in a lot of these requirements for IoT applications. The roots of RIOT date back to 2008 and the project has been subject to active, open-source development since 2013. RIOT aims to provide the full set of features expected from an OS, ranging from hardware abstraction, kernel capabilities, system libraries, to tooling.1 The significance of this hardware abstraction is proven by the multitude of supported hardware architectures such as AVR, MSP430, ARM Cortex-M and ESP32. Besides supported embedded hardware, there is also a native port of RIOT, which allows development and testing without even having the actual hardware of a target platform at hand.
We will be looking further into the software architecture, vision, design choices and overall structure of RIOT during the course and its accompanying assignments. Based on the findings we aim to provide useful insight in and contributions to the development of RIOT.
We are four master students from Delft University of Technology, with backgrounds in Computer Science and Embedded Systems.
- Koos Habte
- Yuxiang Liu
- Millen van Osch
- Michael Treffers
E. Baccelli et al., “RIOT: An Open Source Operating System for Low-End Embedded Devices in the IoT,” in IEEE Internet of Things Journal, vol. 5, no. 6, pp. 4428-4440, Dec. 2018. ↩
The number of IoT devices powering our daily lives becomes larger every day. On top of that the applications running on these devices become more and more complicated. To keep up with these developments, the developers of such systems need proper tools. An Operating System is an essential part, and provides a lot of basic building blocks. RIOT is such an OS, it’s feature-rich, open-source, adopted by academics and under active development.
After covering the architectural basics of RIOT in the previous post, we will now see this affects the development quality. This posts covers the way how testing and assessing code quality is currently covered by RIOT and will also address our view on the code quality and technical debt.
After we covered the quality and technical debt of RIOT’s code in our previous post, we will now take a deeper look into RIOT’s variability.
Since RIOT is an OS that is supposed to work with quite a lot of different hardware, and applications using RIOT with all kinds of different modules, there are a lot of options and different features to choose from.
What it comes down to is that RIOT offers variability, and a lot of it. But how it offers this and how it implements this is this post’s topic.
In this post we will look at RIOT’s main features, its variability management and its implementation.