4个版本 (2个破坏性更新)
0.3.0 | 2024年7月16日 |
---|---|
0.2.1 | 2024年5月20日 |
0.2.0 | 2024年5月17日 |
0.1.0 | 2024年5月11日 |
#56 in 机器人
每月下载量50次
250KB
2K SLoC
vexide
VEX V5机器人的开源Rust运行时。vexide提供了一个no_std
Rust运行时、异步执行器、设备API等,用于VEX V5大脑!
vexide是pros-rs的后续产品,它是一组使用PROS绑定的未维护的API。
[警告] vexide仍然被视为实验性的,但可以现在使用。查看我们的文档了解如何入门。
入门指南
vexide发布在crates.io上,可以像正常的嵌入式Rust包一样使用。
如果你刚开始,我们建议你阅读我们的文档,其中提供了使用vexide-template设置开发环境的逐步说明。
项目结构
vexide运行时是一个相当标准的Rust monorepo,分为7个子仓库
vexide-core
提供了程序的低级核心功能,例如分配器、同步原语、串行打印、I/O和定时器。vexide-devices
包含所有设备相关绑定,如电机和传感器。vexide-async
实现了我们的协同异步运行时以及几个重要的异步未来。vexide-startup
包含用于在Brain上运行自由程序所需的裸机启动代码。vexide-panic
包含我们的panic处理器。vexide-graphics
实现了一些流行的嵌入式Rust图形库(如[Slint]和embedded-graphics
)的图形驱动程序。vexide-macro
包含了#[vexide::main]
proc-macro 的源代码。
这些子crates 从单个 vexide
crate 导出,该crate旨在作为一个完整的包使用。
构建
vexide 依赖于仅在 Rust 的 nightly 版本中可用的某些功能,因此您需要切换到使用 nightly。我们还依赖于 rust-src
组件,因为我们的嵌入式目标需要构建 core
。
rustup override set nightly
rustup component add rust-src
这个项目与其他 Rust 项目一样编译,但有一个例外 - 我们有一个自己的 cargo
包装器,称为 cargo-v5
,它将一些额外的参数传递给 cargo
以正确地为平台构建。
您可以使用以下命令安装该工具
cargo install cargo-v5
从那里,项目可以通过 cargo-v5
以任何其他 rust 库的方式构建
cargo v5 build --release
示例也可以以这种方式构建
cargo v5 build --example basic --release
cargo build --target ./armv7a-vex-v5.json -Zbuild-std=core,alloc,compiler_builtins
测试您的更改
当对 vexide 进行更改时,测试它们是一个好主意。最简单的方法是运行我们的示例之一。可以使用如下命令使用 cargo-v5
上传示例
cargo v5 upload --example basic --release
根据您的更改,基本示例可能不是测试的最佳示例。我们有多个示例涵盖了 vexide 的不同部分,因此请选择适用于您的更改的示例。如果没有,请随时添加它!
为 WASM 构建
vexide 运行时也设计成可以编译为 wasm32-unknown-unknown
目标(以及现有的裸金属 ARM 目标)。这是为了允许在 WASM 环境中模拟程序。
要为这个存储库中的项目构建 WebAssembly,请运行 cargo v5 build -s
这将自动传递所有正确的参数给 cargo。
依赖关系
~0–18MB
~253K SLoC