安装 Rust#
切换 Rust 到 nightly#
rustup install nightly
rustup default nightly
安装 ESP32 工具#
Rust 开发 ESP32 有两种方式
- 使用
std
库进行开发 - 使用
core
库(no_std
)进行裸机开发
ldproxy#
使用 Rust 标准库 std 进行构建应用时,必须安装的
cargo install ldproxy
espflash#
用于 ESP 设备烧录的工具
# cargo-espflash用于交叉编译和烧录
cargo install cargo-espflash
cargo install espflash
espmonitor#
esp32 和 esp8266 串行监控
# cargo-espmonitor用于esp32和esp8266串行监控
cargo install cargo-espmonitor
cargo install espmonitor
仅针对 RISC-V 目标#
要为基于RISC-V
架构的乐鑫芯片构建 Rust 应用时,请执行以下步骤:
- 安装
nightly
工具链和rust-src
组件
rustup toolchain install nightly --component rust-src
rustup default nightly
- 设置目标
- 对于
no_std
裸机应用,运行
# 针对ESP32-C2和ESP32-C3
rustup target add riscv32imc-unknown-none-elf
# 针对ESP32-C6和ESP32-M2
rustup target add riscv32imac-unknown-none-elf
创建新项目#
安装 cargo-generate:
cargo install cargo-generate
安装了上面的工具就可以使用对应的模板生成项目了,其中有两个模板:
- esp-template裸机
no_std
项目模板 - esp-idf-template支持
std
的模板
可以先把两个模板 clone 到本地,以后创建模板就不用去 github 下载了:
mkdir ~/.espressif
cd ~/.espressif
git clone https://github.com/esp-rs/esp-template
git clone https://github.com/esp-rs/esp-idf-template.git
然后根据模板创建项目,比如使用esp-idf-template模板创建一个项目:
cargo generate ~/.espressif/esp-idf-template/
配置项目#
打开.cargo/config.toml
并添加下面几行到[env]
section 的底部。保持其他内容不变。
cd xxx
vi .cargo/config.toml
[env]
ESP_IDF_TOOLS_INSTALL_DIR = { value = "global" }
运行项目#
# 交叉编译项目
cargo build --release
# 交叉编译并运行项目
cargo run --release
检查硬件#
如果运行出问题参考检查硬件
模拟仿真#
官网#
https://wokwi.com/,wokwi 是一个在线模拟仿真的网页端。
要想本地写代码,网页模拟可以先安装:
cargo install wokwi-server
- 创建新项目
- 记下网页 URL 的 id,
- 然后本地输入
# 编译
cargo build --release
# 运行
wokwi-server -c esp32c3 -i 网页端的id target/riscv32imac-esp-espidf/release/espidf-demo
教程#
- https://dev.to/apollolabsbin/embassy-on-esp-getting-started-27fi
- https://dev.to/apollolabsbin/embassy-on-esp-gpio-5594