#free-rtos #demo #embedded #library #cargo-build

nightly sys freertos-rust

创建用于在 Rust 项目中使用 FreeRTOS。可以使用 freertos-cargo-build crate 在 build.rs 中从源代码构建和链接 FreeRTOS。

3 个版本

0.1.2 2020 年 4 月 29 日
0.1.1 2020 年 4 月 29 日
0.1.0 2020 年 4 月 29 日

#270操作系统

Download history 5947/week @ 2024-03-13 5818/week @ 2024-03-20 6281/week @ 2024-03-27 5058/week @ 2024-04-03 8051/week @ 2024-04-10 8946/week @ 2024-04-17 4682/week @ 2024-04-24 5622/week @ 2024-05-01 3700/week @ 2024-05-08 4325/week @ 2024-05-15 7962/week @ 2024-05-22 7795/week @ 2024-05-29 6846/week @ 2024-06-05 7327/week @ 2024-06-12 7395/week @ 2024-06-19 6958/week @ 2024-06-26

29,724 每月下载量
用于 icu_freertos

MIT 许可证

84KB
2K SLoC

Rust 1.5K SLoC // 0.0% comments C 353 SLoC // 0.2% comments

FreeRTOS Rust

用于在 Rust 中使用 FreeRTOS API 的包装库。

要使用 FreeRTOS 构建嵌入式应用程序,请参阅 freertos-rust 主页

用法

该 crate 发布在 crates.io

[dependencies]
freertos-rust = "*"

lib.rs:

FreeRTOS for Rust

Rust 接口用于 FreeRTOS 嵌入式操作系统。需要 nightly Rust。假设目标系统提供动态内存分配。

此库通过使用 C 桥接库与 FreeRTOS 进行接口,该库为 FreeRTOS 宏提供函数包装器。编译的 Rust 应用程序应与基本 C/C++ 固件二进制文件链接。

示例在 freertos-rust-examples 中提供

有关更多示例,请检查包含的基于 GCC ARM/Rust/QEMU 的单元测试。项目 qemu_runner 将此库交叉编译,使用 GCC ARM 编译主固件,并在单元测试中链接适当的入口点。使用 GNU ARM Eclipse QEMU 运行测试二进制文件。

请务必查看 FreeRTOS 文档

示例

启动新任务

Task::new().name("hello").stack_size(128).start(|| {
	loop {
		println!("Hello world!");
		CurrentTask::delay(Duration::infinite());
	}
}).unwrap();

FreeRtosUtils::start_scheduler();

队列

let q = Queue::new(10).unwrap();
q.send(10, Duration::ms(5)).unwrap();
q.receive(Duration::infinite()).unwrap();

互斥锁

let m = Mutex::new(0).unwrap();
{
	let mut v = m.lock(Duration::infinite()).unwrap();
	*v += 1;
}

依赖