InitRech 2015/2016, sujet 25

De Wiki de Projets IMA
Révision datée du 19 juin 2016 à 10:42 par Cduval (discussion | contributions) (Summary)

Summary

Riot OS is an OS for the Internet of Things (IoT). We can define the IoT like the network of all the physical devices (including phones, vehicles, sensors, etc.). There should be 50 billion devices in the IoT by 2020. The devices in the IoT can have very few resources, so Riot OS wants to be available for a maximum of devices and exploiting all the resources. An OS for IoT also needs to fulfill the requirements of cyber-physical systems, reliability, real-time behavior and adaptive communication stack.

One of the main concern about the IoT is to have an OS that can run on all the available devices. Furthermore, there is a tradeoff between being developer-friendly (like Linux) and energy-efficient (like TinyOS and Contiki).

RiotOS is based on 3 key design aspects:

  • The kernel has a microkernel architecture inherited from FireKernel, for the multi-threading with standard API.
  • He has C support and Riot adds a C++ support and a TCP/IP networks stack, making a developer-friendly OS with high reliability. Furthermore, Riot is able to create as many threads are needed by the developers. The number of threads is only limited by the available memory and stack size for each thread.
  • The scheduler use a fixed-sized circular linked list of threads.The MCUs provide multiple compare registers, providing a way to have a constant runtime of the timer operations. The scheduler works without any periodic events for energy-efficiency.

These aspects of Riot OS gives him an efficient scheduling and a low memory footprint. He is open source, useful for the community and developing plugins and applications for free. He requires less than 5kB of ROM and 1.5 kB of RAM, can run on devices with 16-bit microcontrollers to 32-bit processors.

Main Contribution

Applications