RTIC

RIOT, the hardware accelerated Rust RTOS. A concurrency framework for building real-time systems.

Features

  • Tasks as the unit of concurrency 1. Tasks can be event triggered (fired in response to asynchronous stimuli) or spawned by the application on demand.
  • Message passing between tasks. Specifically, messages can be passed to software tasks at spawn time.
  • A timer queue 2. Software tasks can be scheduled to run at some time in the future. This feature can be used to implement periodic tasks.
  • Support for prioritization of tasks and, thus, preemptive multitasking.
  • Efficient and data race free memory sharing through fine-grained priority based critical sections 1.
  • Deadlock free execution guaranteed at compile time. This is a stronger guarantee than what’s provided by the standard Mutex abstraction.
  • Minimal scheduling overhead. The task scheduler has minimal software footprint; the hardware does the bulk of the scheduling.
  • Highly efficient memory usage: All the tasks share a single call stack and there’s no hard dependency on a dynamic memory allocator.
  • All Cortex-M devices are fully supported.
  • This task model is amenable to known WCET (Worst Case Execution Time) analysis and scheduling analysis techniques.

Sample projects and resources

  • pomia-rs. STM32 + Rust + RTIC embedded project.
  • cargo-rtic-scope. Non-intrusive ITM tracing/replay toolset for RTIC programs with nanosecond timestamp accuracy..
  • rust-ir-thermo. Rust firmware for IR thermometer based on STM32L151x MCU and MLX90614 sensor.
  • portenta-h7. It provides examples for the Arduino Portenta-H7 board written in Rust. The software can be flashed on the target either with USB (DFU), or with a debug probe (JLink, ST-Link)..
  • rust-embedded-examples. A collection of some Rust embedded examples.
  • droners. [WIP] Interrupt driven STM32 based quadcopter written in Rust..
  • microgroove. 8-track open-source hardware MIDI sequence generator.
  • nRF52_Nucleo_uart. This repository is a collection of pair programs between nRF52 (the sender) and STM32F401-Nucleo (the receiver). .
  • sensilo. A generic BLE sensor node based on the nRF52832. Firmware written in Rust with the RTIC framework..
  • rauk. Verification and response-time analysis tool for RTIC applications.
  • retro-clock. Rust + stm32f103 + Nixie.
  • air-gradient-pro-rs. Rust bootloader, firmware and CLI tools for the AirGradient PRO.
  • stm32-rtic-template. A template repository for quickly setting up RTIC based projects.
  • stm32-sequencer. Modular music CV/Gate sequencer prototype using the STM32F103C8 chip (blue pill).
  • pinetime-rs. RTIC PineTime project.
  • pico-rtic-template. Project template for pico running rtic.
  • stm32f429-smoltcp-mqtt-rtic. Example MQTT client, smoltcp IP stack, running on RTIC.
  • b-l475e-iot01a-discovery. Board Support crate for b-l475e-iot01a-discovery. WIP.
  • volume.control. Firmware for the volume.control boards.
  • rtic-scope. Deprecated..
  • stm32f429-smoltcp-rtic. Example RTIC & smoltcp app.
  • DW-666. Embedded mediator for Korg DW-6000 synth + Arturia Beatstep MIDI controller.
  • rtic-blinky. A basic blinky based on RTIC and its template implemented for the nRF52840 chip..
  • vhrd-module-template. Template project with CAN Bus and RTIC for STM32F051 and STM32F072 based modules.
  • rtic-ctf-app. barectf in Rust/RTIC.
  • stm32f4-rtic-playground. Black Pill STM32F411CE playground with RTIC.
  • stm32H743ZI-playground. stm32H743zi Playground. Examples of bringing up different sockets (TCP, UDP, WebSocket). Based on smoltcp crate..
  • arcus. Smart LED strip with embedded rust on rp2040.

Website: https://rtic.rs/

Source code: https://github.com/rtic-rs/rtic

License: Apache License, Version 2.0 MIT license


RTIC Platforms

  • ARM

RTIC Components