4 个版本
0.3.5 | 2020 年 7 月 20 日 |
---|---|
0.3.4 | 2020 年 7 月 19 日 |
0.3.3 | 2020 年 4 月 27 日 |
0.3.2 | 2020 年 4 月 27 日 |
#1708 in 嵌入式开发
60KB
1.5K SLoC
harsark.rs
harsark 是用 Rust 编写的一个安全且轻量级的实时内核,适用于基于 cortex-m3/m4 的微控制器。项目的目标是开发一个内存高效、安全且轻量级的实时内核。选择 Rust 语言是因为其强大的编译时检查。所有子系统都已开发和手动测试。语言特性如 Traits、Generics 有助于定义强大且安全的数据类型。内核使用静态分配的数据结构以保持其简单和快速。但通过特性标志,开发者可以启用动态内存分配(仅适用于最终应用程序,而不是内核本身)。使用 Cargo 特性标志来配置常量,如最大任务、资源等。
该项目是我的学士学位论文的实现。有关设计和架构的详细信息,请参阅论文。内核子系统设计灵感来源于 Hartex 设计规范。
特性
- 由于使用了布尔向量,内核不使用像队列或列表这样的密集数据结构。
- 通过布尔向量实现了调度、软件总线和管理资源,这降低了内核的内存和性能开销。
- 通过布尔向量信号量实现了任务之间的非阻塞同步和通信。
- 具有轻量级事件处理程序的事件管理器:这有助于将中断的执行时间保持得非常低。
- 通过基于堆栈的优先级天花板协议进行资源管理:这不仅保证了资源的互斥分配,还保证了任务的死锁-free 执行。
有关示例,请参阅 /examples
。
参考资料
Gourinath Banda. “Scalable Real-Time Kernel for Small Embedded Systems”. 英文. 博士论文. 丹麦:南丹麦大学,2003 年 6 月。网址: http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=84D11348847CDC13691DFAED09883FCB?doi=10.1.1.118.1909&rep=rep1&type=pdf。
未来工作
许多语言特性,如常量函数、常量泛型等,正处于积极开发中。一旦这些特性达到稳定状态,就可以用于各种内核例程的性能提升。这些特性可以在编译时评估大部分内核配置原语,从而提高性能并减小二进制文件大小。Rust支持条件编译。这可以用来支持其他机器架构,而无需大量代码重复。其他特性,如网络栈的实现,将使harsark.rs在物联网项目中得以应用。内核已设计为具有非常低的中断延迟,这些说法可以通过基准测试来验证。
内核是为单核/处理器系统设计和开发的。该项目的未来工作可能包括修改内部结构,以便在多处理器系统上高效运行。另一个可以添加的安全特性是保护任务堆栈不受其他任务的影响。这可以通过大多数微控制器提供的内存保护单元(MPUs)来实现。
许可证
本项目采用MIT许可证。
依赖项
约2.5MB
约52K SLoC