Rust のインストール#
Rust を nightly に切り替える#
rustup install nightly
rustup default nightly
ESP32 ツールのインストール#
ESP32 の Rust 開発には 2 つの方法があります
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 ターゲットのみ#
Rust アプリケーションを乐鑫チップ(RISC-Vアーキテクチャベース)にビルドする場合は、次の手順を実行してください:
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
上記のツールをインストールしたら、対応するテンプレートを使用してプロジェクトを生成できます。2 つのテンプレートがあります:
- esp-templateベアメタル
no_stdプロジェクトテンプレート - esp-idf-template
stdをサポートするテンプレート
これらのテンプレートをローカルにクローンしておくこともできます:
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]セクションの最後に追加します。他の内容は変更しないでください。
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