9 个版本 (稳定版)
2.0.2 | 2024 年 7 月 6 日 |
---|---|
2.0.0 | 2024 年 5 月 29 日 |
1.5.0 | 2024 年 1 月 10 日 |
1.4.1 | 2023 年 12 月 6 日 |
1.0.0 |
|
#124 在 并发 中
4,479 次每月下载
在 3 crates 中使用
290KB
2K SLoC
实时中断驱动的并发
硬件加速的 Rust RTOS
用于构建实时系统的并发框架。
特性
-
任务 作为并发的基本单位 [^1]。任务可以是 事件触发 的(在响应异步刺激时触发)或者由应用程序按需生成。
-
任务间消息传递。具体来说,消息可以在生成时传递给软件任务。
-
定时器队列 [^2]。软件任务可以被延迟或安排在未来某个时间继续运行。这个特性可以用来实现周期性任务。
-
支持任务优先级,从而实现 抢占式多任务处理。
-
高效的且无数据竞争的内存共享 通过细粒度的 基于优先级的 临界区 [^1]。
-
编译时保证无死锁执行。这是比标准
Mutex
抽象 提供的更强保证。 -
最小化调度开销。任务调度器具有最小的软件占用;硬件执行大部分的调度。
-
高效内存使用:所有任务共享单个调用栈,并且没有对动态内存分配器的硬依赖。
-
完全支持所有 Cortex-M 设备.
-
此任务模型适用于已知的 WCET(最坏情况执行时间)分析和调度分析技术。
用户文档
关于 开发版本 的文档。
API 参考
社区提供的示例仓库
聊天
加入我们,在Matrix房间中讨论RTIC。
每周会议纪要可以在RTIC HackMD找到。
贡献
新功能和重大更改应通过专用RFC仓库中的RFC流程。
在本地运行测试
要在您的thumbv6m-none-eabi
或thumbv7m-none-eabi
目标设备上本地运行所有Run-pass tests
,请运行
$ cargo xtask --target <your target>
# ˆˆˆˆˆˆˆˆˆˆˆˆ
# e.g. thumbv7m-none-eabi
致谢
此crate基于由Real-Time For the Masses语言创建的,该语言由吕勒奥理工学院的嵌入式系统小组创建,由Per Lindgren教授领导。
参考文献
[^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.
许可
所有源代码(包括代码片段)均受以下之一许可:
- Apache License, Version 2.0 (LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可 (LICENSE-MIT或https://opensource.org/licenses/MIT)
任选其一。
书中的书面散文受Creative Commons CC-BY-SA v4.0许可条款的约束(LICENSE-CC-BY-SA或https://creativecommons.org/licenses/by-sa/4.0/legalcode)。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的任何有意提交以包含在作品中的贡献,均应按上述方式许可,不附加任何额外条款或条件。
lib.rs
:
在常用微控制器上发现的计时器和时钟的rtic_time::Monotonic
(重新导出)trait的树内实现。
要启用实现,您必须为针对的特定MCU启用一个功能。
Cortex-M Systick
systick
单调性适用于所有Cortex-M部分,并要求启用cortex-m-systick
功能。
RP2040
RP2040单调性要求启用rp2040
功能。
i.MX RT
i.MX RT单调性要求启用imxrt_gpt1
或imxrt_gpt2
功能。
nRF
nRF单调性要求启用一个可用的nrf52*
功能。
此处记录了nRF52系列中所有计时器的实现。在此系列的所有部分上不可用的单调性将带有Available on crate features X only
标签,描述哪些部分支持该单调性。不带Available on crate features X only
标签的单调性适用于任何nrf52*
功能。
依赖项
~2–60MB
~2M SLoC