RustのESP32開発環境構築
プログラミング言語Rust
を使用してESP32用のプログラムを開発するための環境を構築する。
実行環境
-
ターゲットボード
※ターゲットボードが変わると以下で使用するコマンドが変わるので注意
-
開発ホスト
環境準備
Rustインストール
開発ホストにRustをインストールする。Rustはインストールが非常に簡単で下記のコマンドを実行するだけで完了する
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Rustの環境変数を設定する
ホームフォルダ直下の.cargo
フォルダ内に環境変数のスクリプトがあるので、
そのスクリプトから設定を行う。
source ~/.cargo/env
環境変数が正しく設定されれば以下のコマンドが実行できるはずなので確認する。
# rustcコマンドの確認
rustc --version
# cargoコマンドの確認
cargo version
# rustupコマンドの確認
rustup show
ESP32用のツールチェインをインストールする
cargo install espup
cargo install cargo-espflash
espup install --esp-idf-version <ESP_IDF_VERSION>
# <ESP_IDF_VERSION>は4.4を使用する
# バージョン情報は[esp-idf-template](https://github.com/esp-rs/esp-idf-template)を参考にする
# ex. espup install --esp-idf-version 4.4
# ESP32用の環境変数を設定
. $HOME/export-esp.sh
ESP32用プロジェクトを作成する
cargo-generate
を使用してesp-idf-template
からプロジェクトを作成する
# [no_std]
cargo generate --git https://github.com/esp-rs/esp-template
# [std]
cargo generate --git https://github.com/esp-rs/esp-idf-template cargo
ESP32用プロジェクトをビルドする
デフォルトでは使用するツールチェーンはESP32になっていないため、使用するツールチェーンを指定してビルドを実施する。
# ※ビルドする前に必ず設定
# ESP32用の環境変数を設定
. $HOME/export-esp.sh
cargo +esp build
ESP32にプログラムを書き込む
# 書き込みのみ
# no_std
# Debugモード
cargo espflash --target=xtensa-esp32-none-elf /dev/ttyUSB0
# Releaseモード
cargo espflash --release --target=xtensa-esp32-none-elf /dev/ttyUSB0
# std
# Debugモード
cargo espflash --target=xtensa-esp32-espidf /dev/ttyUSB0
# Releaseモード
cargo espflash --release --target=xtensa-esp32-espidf /dev/ttyUSB0
# 書き込み後、シリアルモニタを開始
# no_std
# Debugモード
cargo espflash /dev/ttyUSB0 --monitor
# Releaseモード
cargo espflash --release /dev/ttyUSB0 --monitor
# std
# Debugモード
cargo espflash --target=xtensa-esp32-espidf /dev/ttyUSB0 --monitor
# Releaseモード
cargo espflash --release --target=xtensa-esp32-espidf /dev/ttyUSB0 --monitor
ESP32実行中プログラムのシリアルモニタ
# シリアルモニタソフトをインストール
cargo install cargo-espmonitor
# デバイスを指定してシリアルモニタを起動する
cargo espmonitor /dev/ttyUSB0
1つのプロジェクトで複数の実行ファイルを作成
.Cargo.toml
に以下の追記する
...
[[bin]]
name = "trial1"
path = "src/trial1.rs"
[[bin]]
name = "trial2"
path = "src/trial2.rs"
...
ビルドしたいものを選択する
cargo build --bin <name>
書き込みたいものを選択する
cargo espflash --bin <name>