#cortex-m #arm #real-time #tasks #rtfm #framework #systems

no-std dev cortex-m-rtfm

面向大众的实时系统 (RTFM):构建实时系统的并发框架

16 个版本

0.5.3 2020 年 6 月 12 日
0.5.1 2019 年 11 月 19 日
0.4.3 2019 年 4 月 21 日
0.4.2 2019 年 2 月 27 日
0.2.1 2017 年 7 月 29 日

#1187并发

Download history 96/week @ 2024-03-14 76/week @ 2024-03-21 124/week @ 2024-03-28 110/week @ 2024-04-04 89/week @ 2024-04-11 131/week @ 2024-04-18 129/week @ 2024-04-25 72/week @ 2024-05-02 66/week @ 2024-05-09 74/week @ 2024-05-16 75/week @ 2024-05-23 99/week @ 2024-05-30 73/week @ 2024-06-06 63/week @ 2024-06-13 78/week @ 2024-06-20 44/week @ 2024-06-27

每月 266 次下载
不到 11 crates 中使用

MIT/Apache

95KB
1K SLoC

Rust 1K SLoC // 0.0% comments Shell 276 SLoC // 0.1% comments

已弃用,请使用 cortex-m-rtic 代替 - 面向大众的实时系统

根据 RFC https://github.com/rtic-rs/rfcs/pull/33,RTFM 已更名为实时中断驱动的并发 (RTIC)。这是一个用于构建实时系统的并发框架。

特性

  • 任务 是并发的单位 [^1]。任务可以是 事件触发的(响应异步刺激而触发)或者由应用程序按需产生。

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

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

  • 支持任务优先级,因此可以实现 抢占式多任务

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

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

  • 最小的调度开销。任务调度器具有最小的软件占用;硬件完成大部分的调度。

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

  • 支持所有 Cortex-M 设备.

  • 此任务模型适用于已知的 WCET(最坏情况执行时间)分析和调度分析技术。(尽管我们尚未开发适用于 Rust 的工具。)

要求

  • Rust 1.36.0+

  • 应用程序必须使用 2018 版本编写。

用户文档

API 参考

聊天

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

贡献

新功能和重大变更应通过专用RFC存储库中的RFC流程。

致谢

此crate基于由RTFM语言创建,该语言由吕勒奥理工学院的嵌入式系统小组开发,由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
~77K SLoC