🦆

Rust の M5Stack Basic 開発環境をWindows ローカルPCに構築する

2023/08/16に公開

はじめに

M5Stack Basic V2.7のWindows開発環境(no_std)の構築からプログラム実行までを紹介します。
Introduction - The Rust on ESP Bookに沿って説明します。

Q. どうしてstdではないのか?

A. エラーを解消できなかったからです。助言いただけますと幸いです。

  1. Interface 2023年 5月号 質実剛健 Rust言語M5Stamp C3 Mateを買ってツールチェインのインストールを試みたのですが、rustup component add rust-src --toolchain nightly-2022-10-01-x86_64-unknown-linux-gnuのインストールに失敗しました。
  2. Introduction - The Rust on ESP Bookstd環境構築でもエラー解消にも失敗しました。

修正

2023/8/17

面白くないジョークを修正。

2023/8/26

ディレクトリの修正。

結論: リポジトリ

環境構築方法が書かれたリポジトリのリンクを下記に記します。

https://github.com/Tremendous1192/m5stack-basic-no-std-template

環境構築

参考にした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を設定します。
  1. システム環境変数の編集
  2. 環境変数(N)
  3. PATHを選択して編集(I)
  4. 新規(N)を選択して環境変数を追加
  5. 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 to m5stack-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