20个版本 (4个稳定版)

1.1.4 2023年2月26日
1.1.3 2022年6月23日
1.1.2 2022年5月9日
1.0.0 2021年12月25日
0.5.3 2020年6月12日

#24 in 嵌入式开发

Download history 2383/week @ 2024-03-14 2441/week @ 2024-03-21 2423/week @ 2024-03-28 2344/week @ 2024-04-04 2345/week @ 2024-04-11 2898/week @ 2024-04-18 3172/week @ 2024-04-25 2696/week @ 2024-05-02 2103/week @ 2024-05-09 1839/week @ 2024-05-16 2622/week @ 2024-05-23 2195/week @ 2024-05-30 2582/week @ 2024-06-06 2073/week @ 2024-06-13 2077/week @ 2024-06-20 1753/week @ 2024-06-27

每月下载量 8,910
用于 少于 63  crate

MIT/Apache

140KB
763

实时中断驱动并发

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

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

crates.io docs.rs book matrix Meeting notes

特性

  • 任务 作为并发的基本单元 [^1]。任务可以是 事件触发(在异步刺激下触发)或由应用程序按需生成。

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

  • 计时器队列 [^2]。软件任务可以安排在未来的某个时间运行。这个特性可以用来实现周期性任务。

  • 支持任务优先级和因此的 抢占式多任务处理

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

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

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

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

  • 完全支持所有Cortex-M设备.

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

RTIC 0.5.x中的crate cortex-m 0.6 vs 0.7

crate cortex-m 0.7开始使用特征InterruptNumber来处理中断,而不是使用来自bare-metalNr。为了保持向下兼容性,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

致谢

这个crate基于由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许可证中定义的,应按照上述条款许可,不附加任何额外条款或条件。

依赖关系

~4MB
~73K SLoC