Real-Time Interrupt-driven Concurrency

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

Github星跟踪图

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.

主要指标

概览
名称与所有者rtic-rs/rtic
主编程语言Rust
编程语言Rust (语言数: 4)
平台
许可证Apache License 2.0
所有者活动
创建于2017-03-05 05:28:17
推送于2025-04-16 18:55:56
最后一次提交2025-04-07 09:51:52
发布数47
最新版本名称v2.1.1 (发布于 2024-03-13 20:51:00)
第一版名称v0.1.0 (发布于 2017-05-09 09:04:57)
用户参与
星数2k
关注者数29
派生数225
提交数1.8k
已启用问题?
问题数370
打开的问题数27
拉请求数554
打开的拉请求数18
关闭的拉请求数103
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?