20 个版本 (7 个稳定)

1.1.6 2023年2月26日
1.1.5 2022年6月23日
1.1.4 2022年5月24日
1.0.0 2021年12月25日
0.5.0 2020年6月11日

1189并发 中排名

Download history 2375/week @ 2024-03-14 2458/week @ 2024-03-21 2435/week @ 2024-03-28 2335/week @ 2024-04-04 2364/week @ 2024-04-11 2912/week @ 2024-04-18 3159/week @ 2024-04-25 2706/week @ 2024-05-02 2121/week @ 2024-05-09 1847/week @ 2024-05-16 2625/week @ 2024-05-23 2194/week @ 2024-05-30 2578/week @ 2024-06-06 2087/week @ 2024-06-13 2075/week @ 2024-06-20 1774/week @ 2024-06-27

每月下载量 8,944
66 个 Crates 中使用(通过 cortex-m-rtic

MIT/Apache

97KB
2K SLoC

实时中断驱动并发

用于构建实时系统的并发框架。

以前被称为大众实时系统。

crates.io docs.rs book matrix Meeting notes

特性

  • 任务 作为并发的基本单元 [^1]。任务可以是 事件触发的(在响应异步刺激时触发)或根据应用程序需求产生的。

  • 任务间的 消息传递。具体来说,消息可以在产生时传递给软件任务。

  • 定时器队列 [^2]。软件任务可以安排在未来某个时间运行。此功能可用于实现周期性任务。

  • 支持任务优先级,从而实现 抢占式多任务

  • 通过细粒度 基于优先级 的临界区 高效且无数据竞争的内存共享 [^1]。

  • 编译时保证 无死锁执行。这比标准 Mutex 抽象 提供的保证更强。

  • 最小的调度开销。任务调度器软件占用空间最小;硬件执行大部分调度。

  • 高效的内存使用:所有任务共享单个调用堆栈,并且不依赖于动态内存分配器。

  • 支持所有 Cortex-M 设备.

  • 此任务模型适用于已知的 WCET(最坏情况执行时间)分析和调度分析技术。

RTIC 0.5.x 中 crate cortex-m 0.6 与 0.7 的比较

cortex-m 0.7 开始使用特性 InterruptNumber 来处理中断,而不是之前使用 Nrbare-metal。为了保持向后兼容性,RTIC 0.5.x 将默认使用 cortex-m 0.6。可以通过启用特性 cortex-m-7 并禁用默认特性来使用 cortex-m 0.7。

cortex-m-rtic = { version = "0.5.8", default-features = false, features = ["cortex-m-7"] }

RTIC 1.0.0 已经默认使用 cortex-m 0.7。

用户文档

关于 开发版本 的文档。

API 参考

社区提供的示例仓库

聊天

加入我们,在 Matrix 房间 中讨论 RTIC。

每周会议记录可以在 HackMD 上找到。

贡献

新特性和重大变更应通过 专用 RFC 仓库 中的 RFC 流程进行。

在本地运行测试

要在您的 thumbv6m-none-eabithumbv7m-none-eabi 目标设备上本地运行所有 Run-pass tests,请运行

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

致谢

此库基于由 Real-Time For the Masses 语言 创建的,该语言由 Luleå University of Technology 的嵌入式系统小组开发,由 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.

许可

所有源代码(包括代码片段)均根据您选择以下任一许可授权:

任选其一。

本书中的书面内容根据 Creative Commons CC-BY-SA v4.0 许可证条款授权(LICENSE-CC-BY-SAhttps://creativecommons.org/licenses/by-sa/4.0/legalcode)。

贡献

除非您明确声明,否则根据 Apache-2.0 许可证定义,您有意提交以包含在作品中的任何贡献,均将根据上述许可授权,不附加任何额外条款或条件。

依赖项

~2.5MB
~55K SLoC