安裝 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