RIOT 2022.04 releases: The friendly OS for IoT
RIOT is a real-time multi-threading operating system that supports a range of devices that are typically found in the Internet of Things (IoT): 8-bit, 16-bit, and 32-bit microcontrollers.
It is based on the following design principles: energy efficiency, real-time capabilities, small memory footprint, modularity, and uniform API access, independent of the underlying hardware (this API offers partial POSIX compliance).
RIOT is developed by an international open-source community that is independent of specific vendors (e.g. similarly to the Linux community). RIOT is licensed with LGPLv2.1, a copyleft license that fosters indirect business models around the free open-source software platform provided by RIOT, e.g. it is possible to link closed-source code with the LGPL code.
FEATURES
RIOT is based on a microkernel architecture, and provides features including, but not limited to:
- a preemptive, tickless scheduler with priorities
- flexible memory management
- high resolution, long-term timers
- support 100+ boards based on AVR, MSP430, ESP8266, MIPS, ARM7 and ARM Cortex-M
- the native port allows to run RIOT as-is on Linux, BSD, and MacOS. Multiple instances of RIOT running on a single machine can also be interconnected via a simple virtual Ethernet bridge
- IPv6
- 6LoWPAN (RFC4944, RFC6282, and RFC6775)
- UDP
- RPL (storing mode, P2P mode)
- CoAP
- CCN-Lite
- Sigfox
- LoRaWAN
About 460 pull requests, composed of 950 commits, have been merged since the last release, and about 60 issues have been solved. 57 people contributed with code in 105 days. Approximately 2000 files have been touched with 129000 insertions and 25000 deletions.
RIOT 2022.04 releases.
Changelog
Core:
The scheduler allows for changing the priority of a thread at runtime.
System libraries:
The module
ztimer64_xtimer_compat
was added, providing the complete xtimer
API on top of ztimer64_usec. This is now the default implementation when using
thextimer
module.
Most modules use ztimer instead of xtimer now.The sequence of modules during auto initialization can be customized via
statically assigned numbers now. This feature is experimental, so use it with
caution. Priorities may change in the future.SenML implementation: supports CBOR encoding, Phydat to SenML encoding and
basic SAUL integration.Various improvements have been made to the file system modules:
VFS supports automatic mount (and formatting) at startup and reliable disk
enumeration, and mount_by_path. Default mount points can be provided by the
board configuration. exFAT support was added to FATFS.Using Rust in RIOT no longer requires a nightly version of Rust, but can be
built on the latest stable on Rust instead.Boards:
Boards no longer have to provide a
board_init()
function. LEDs are
initialized automatically if they follow theLED<x>_PIN
naming scheme.Networking:
gcoap now provides a simple forward-proxy and allows for switching between
plain CoAP and CoAP-over-DTLS at runtime.The NimBLE module supports the new PHY modes that have been introduced with
Bluetooth 5.A Telnet server module is available now.
More…