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?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?