25 个版本
0.25.7 | 2024 年 6 月 23 日 |
---|---|
0.25.6 | 2023 年 10 月 26 日 |
0.25.5 | 2023 年 5 月 8 日 |
0.25.4 | 2022 年 12 月 7 日 |
0.20.4 | 2021 年 7 月 29 日 |
#235 在 Cargo 插件 中
每月 37 次下载
685KB
7K SLoC
cargo-pio = Cargo + PlatformIO
使用 PlatformIO 构建 Rust 嵌入式项目!
cargo-pio 是一个 cargo 子命令 cargo pio
,同时也是一个库 crate。
为什么?
如果您正在构建一个混合 Rust/C 项目,或者需要调用板子供应商 SDK 的纯 Rust 项目,cargo-pio 可能会帮到您。
以 PlatformIO 为首的构建
在此模式下,您的嵌入式项目将是一个 PlatformIO 项目 和 一个 Rust 静态库 crate
- 项目构建由 PlatformIO 触发(例如,使用
pio run -t debug
或cargo pio build
),PlatformIO 将调用 Cargo 来构建 Rust 库 crate; cargo-pio
作为 cargo 子命令用于创建项目的布局;- 此类项目在
cargo-pio
帮助文档中被称为 'PIO > Cargo 项目';
示例
cargo install cargo-pio
(或cargo install --git https://github.com/ivmarkov/cargo-pio.git cargo-pio
)cargopio installpio
- 创建新的 Cargo/PIO 项目
cargopio new --board <your-board> <path-to-your-new-project>
- 进入您新创建的项目
cd<path-to-your-new-project>
- 调试模式构建
- 使用
pio run -t debug
或cargo pio build
- 使用
- 在发布模式下构建
- 使用
pio run -t release
或cargo pio build --release
- 使用
- 请注意,一旦安装了 PlatformIO 并创建了 PIO->Cargo 项目,您实际上就不需要
cargo-pio
!
调用 cargo pio --help
以了解 cargo-pio
支持的各种命令。
Cargo 首次构建
- 在这种操作模式下,您的嵌入式项目是一个 纯 Cargo 项目,PlatformIO 不会干涉!
cargo-pio
作为库 crate 使用,并通过build.rs
脚本程序化驱动。
但是,Cargo 首次构建不太灵活。它们仅适用于构建和(与)“SYS” crate 链接,该 crate 代表您板卡的供应商 SDK。如果您依赖于其他 C 库,您应该使用 PlatformIO 首先即 'PIO->Cargo' 项目。
示例
- 检查 esp-idf-sys SYS crate(由 rust-esp32-std-hello 二进制 crate 使用)。它演示了
- 通过程序化驱动 PlatformIO 自动下载和安装 SDK(在这种情况下为 ESP-IDF);
- 使用 Bindgen 自动生成 ESP-IDF SDK 的不安全绑定。例如,esp-idf-hal 和 esp-idf-svc crate 依赖于这些绑定来实现更高层次的安全 Rust 抽象;
- 为 Rust 链接器自动生成 Rust 链接标志,以便将 ESP-IDF SDK 透明地链接到您将烧录的二进制 Rust crate 中。
依赖项
~13-26MB
~419K SLoC