Real-Time Interrupt-driven Concurrency

用于 ARM Cortex-M 微控制器的实时中断驱动的并发性(RTIC)框架。「Real-Time Interrupt-driven Concurrency (RTIC) framework for ARM Cortex-M microcontrollers」

Github stars Tracking Chart

Real-Time Interrupt-driven Concurrency

The hardware accelerated Rust RTOS

A concurrency framework for building real-time systems.

crates.io
docs.rs
book
matrix
Meeting notes

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 delayed or scheduled to continue running
    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.

User documentation

Documentation for the development version.

API reference

Community provided examples repo

Chat

Join us and talk about RTIC in the Matrix room.

Weekly meeting minutes can be found over at RTIC HackMD

Contributing

New features and big changes should go through the RFC process in the
dedicated RFC repository.

Running tests locally

To check all Run-pass tests locally on your thumbv6m-none-eabi or thumbv7m-none-eabi target device, run

$ cargo xtask --target <your target>
#                       ˆˆˆˆˆˆˆˆˆˆˆˆ
#                   e.g. thumbv7m-none-eabi

Acknowledgments

This crate is based on the Real-Time For the Masses language
created by the Embedded Systems group at Luleå University of Technology,
led by Prof. Per Lindgren.

References

[^1]: Eriksson, J., Häggström, F., Aittamaa, S., Kruglyak, A., & Lindgren, P.
(2013, June). Real-time for the masses, step 1: Programming API and static
priority SRP kernel primitives. In Industrial Embedded Systems (SIES), 2013
8th IEEE International Symposium on (pp. 110-113). IEEE.

[^2]: Lindgren, P., Fresk, E., Lindner, M., Lindner, A., Pereira, D., & Pinho,
L. M. (2016). Abstract timers and their implementation onto the arm cortex-m
family of mcus. ACM SIGBED Review, 13(1), 48-53.

License

All source code (including code snippets) is licensed under either of

at your option.

The written prose contained within the book is licensed under the terms of the
Creative Commons CC-BY-SA v4.0 license (LICENSE-CC-BY-SA or
https://creativecommons.org/licenses/by-sa/4.0/legalcode).

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
licensed as above, without any additional terms or conditions.

Overview

Name With Ownerrtic-rs/rtic
Primary LanguageRust
Program languageRust (Language Count: 4)
Platform
License:Apache License 2.0
Release Count45
Last Release Namev2.0.1 (Posted on 2023-07-25 10:16:52)
First Release Namev0.1.0 (Posted on 2017-05-09 09:04:57)
Created At2017-03-05 05:28:17
Pushed At2024-05-07 19:57:15
Last Commit At2024-05-03 15:55:41
Stargazers Count1.6k
Watchers Count30
Fork Count190
Commits Count1.7k
Has Issues Enabled
Issues Count334
Issue Open Count31
Pull Requests Count488
Pull Requests Open Count16
Pull Requests Close Count86
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top