Rust の M5Stack Basic 開発環境をWindows ローカルPCに構築する
はじめに
M5Stack Basic V2.7のWindows開発環境(no_std
)の構築からプログラム実行までを紹介します。
Introduction - The Rust on ESP Bookに沿って説明します。
Q. どうしてstdではないのか?
A. エラーを解消できなかったからです。助言いただけますと幸いです。
-
Interface 2023年 5月号 質実剛健 Rust言語とM5Stamp C3 Mateを買ってツールチェインのインストールを試みたのですが、
rustup component add rust-src --toolchain nightly-2022-10-01-x86_64-unknown-linux-gnu
のインストールに失敗しました。 -
Introduction - The Rust on ESP Bookの
std
環境構築でもエラー解消にも失敗しました。
修正
2023/8/17
面白くないジョークを修正。
2023/8/26
ディレクトリの修正。
結論: リポジトリ
環境構築方法が書かれたリポジトリのリンクを下記に記します。
環境構築
参考にしたWebサイトはstd環境、no_std環境の違いやテンプレートプロジェクトの構成等の説明が含まれています。
この記事では環境構築に焦点を絞って内容の抜粋と補足を書いています。
Rustの基本的な開発環境構築
Rustaceanなら朝飯前と言いたいところですが、今回初めてトラブルに遭遇したので対処法も書いています。
Visual Studio Installer
コンパイラに関連する次の3項目をインストールします。
- .NET デスクトップ開発
- C++ によるデスクトップ開発
- ユニバーサル Windows プラットフォーム開発
rustup
Rustのビルドツールをインストールします。
exeファイルを実行して1) Proceed with installation (default)
で進めます。
VS Code
VS Codeのインストールが完了したら、左側のExtentions(拡張機能)から次の拡張機能をダウンロードします
rust-analyzer
CodeLLDB
GitHub Pull Requests and Issues
Choose a License
遭遇したトラブル
- エラーメッセージ
cargo : 用語 'cargo' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。
- 対策
環境変数のPATHにC:\Users\USER_NAME\.cargo\bin
を設定します。
システム環境変数の編集
環境変数(N)
PATHを選択して編集(I)
新規(N)を選択して環境変数を追加
OK
Pythonの環境構築
(順番を入れ替えて)PATH環境変数に苦しむタイミングを早めます。
python: Required by ESP-IDF
私は3.11.4にしました。
- 今回のインストール先は下記になりますが...
C:\Users\USER_NAME\AppData\Local\Programs\Python\Python311
- パス名が長いとエラーになるので下記のフォルダに移してPATH環境変数を設定します。
C:\Python\Python311
Rust側の拡張機能(ツールチェイン)
各ハードウェアに合わせたツールチェインをインストールします。
1. Install espup
cargo install espup
2. Install Necessary Toolchains
espup install
ツールチェインをインストールするといくつかの警告がでます。
[2023-08-15T08:03:06Z WARN ] Your environments variables have been updated! Shell may need to be restarted for changes to be effective.
[2023-08-15T08:03:06Z WARN ] A file was created at 'C:\Users\USER_NAME\export-esp.ps1' showing the injected environment variables.
3. Set Up the Environment Variables
Windowsの人は前の句で環境変数が構築されているのでスキップです。
- On Windows (%USERPROFILE%\export-esp.ps1)
There is no need to execute the file for Windows users. It is only created to show the modified environment variables.
Webページにない準備
プログラムをハードウェアに書き込むプログラムをインストールします。
cargo install cargo-espflash
Rust以外に必要な項目
Python等を準備します。
Pythonの環境構築
既に行っていれば飛ばせます。
私は3.11.4にしました。
Windowsは環境変数PATHの自動設定が失敗しやすいので手動で設定します。
git: Required by ESP-IDF
取り敢えず最新版をインストールします。
ldproxy binary crate: A tool that forwards linker arguments to the actual linker that is also given as an argument to ldproxy. Install it by running:
環境変数絡みのツールチェインをインストールします。
cargo install ldproxy
テンプレート作成
テンプレートをダウンロードします。
誘導が丁寧なプロジェクトだと間違うことは少ないと思います。
1. Install cargo generate:
テンプレートをダウンロードするための拡張機能をインストールします。
cargo install cargo-generate
2. Generate a project based on one of the templates:
std環境はエラー解消できなかったので省略
no_std環境
テンプレートをダウンロードします。
cargo generate esp-rs/esp-template
いくつかの質問に回答します。
順番は固定ではありません。
- Project Name:
m5stack_basic_no_std_template
- Renaming project called
m5stack_basic_no_std_template
tom5stack-basic-no-std-template
... - Destination: C:\Users\USER_NAME\source\RustApps\m5stack-basic-no-std-template ...
- project-name: m5stack-basic-no-std-template ...
- Generating template ...
- ? Which MCU to target? ・
esp32
- ? Configure advanced template options? ・
true
- ? Setup logging using the log crate? ・
false
- ? Configure project to support Wokwi simulation with Wokwi VS Code extension? ・
false
- ? Enable allocations via the esp-alloc crate? ・
true
- ? Add CI files for GitHub Action? ・
false
- ? Configure project to use Dev Containers (VS Code and GitHub Codespaces)? ・
false
プロジェクト作成に成功すると次のようなメッセージが流れます。
Moving generated files into: `C:\Users\USER_NAME\source\RustApps\m5stack-basic-no-std-template`...
Initializing a fresh Git repository
Done! New project created C:\Users\USER_NAME\source\RustApps\m5stack-basic-no-std-template
Cargo.tomlファイルにあなたのメールアドレスが記載されているので削除
cargo generate
の影響かもしれません。
パニック解析用環境変数設定
デバッグ用途。
set RUST_BACKTRACE=1
プログラム実行
後少しです。
いつものRunと少し異なる
3. Build/Run the generated project:
ビルド
cargo build
プログラム実行
cargo espflash flash --release
プログラム実行時にM5Stack Basicを接続しているポート番号をPCに伝えます。
入出力インスタンスを書いていないので何も起きないプログラムです。
GitHubに公開されている方々がいらっしゃいますので、それらを見ながらプログラムを修正してください。
Discussion