ESP32: Visual Studio CodeでESP-IDFを使う(Windows編)
ESP-IDFはコマンドラインでmakeするので、今までなんとなくLinux+emacsで使ってました。でも、#defineされてる定数の定義を探すときとか、zshなら「grep キーワード **/*」で再帰検索できるとはいえ、やっぱりちょっとめんどくさいですよねー(´・ω・`)
それで、EclipseやNetBeans等のIDEを使っている方がいるようだったので、もしかして!と思って検索したら、MicrosoftのVisual Studio Code(VSCode)を使う方法が載っていたので、試してみました!インテリセンスとか使えるみたいです(≧∇≦)b
ちなみに、元記事ではLinuxで使っているようですが、コマンドラインを使わないならWindowsでもいいんじゃない?と思い、Windowsにインストールしてみました(*ノノ)
元記事:https://github.com/espressif/esp-idf/issues/303
ただ、使ってみて判ったのですが、Windows版のToolchainは、Linux版よりコンパイルが遅いような・・・(´;ω;`)ウッ…
元記事:https://github.com/espressif/esp-idf/issues/303
1. ESP32のツールチェーンを解凍する
- 公式セットアップガイドからWindows用のToolchainとMSYS2が入ったオールインワンのzipをダウンロードして、C:ドライブ直下、もしくは好きなフォルダに解凍します。この記事では「C:\msys32」にあると想定して説明します!
2. ESP-IDFをcloneする
- 「C:\msys32\mingw32.exe」を実行して、以下のコマンドを実行します。
mkdir ~/esp
cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf.git
echo export IDF_PATH=\"${HOME}/esp/esp-idf\" >/etc/profile.d/export_idf_path.sh - 「exit」してmingw32.exeを終了します。
3. Visual Studio Code(VSCode)をインストールする
- https://code.visualstudio.com/からVisual Studio Codeをダウンロードして、インストールします。オプション等は、全部デフォルトにしました(●´ω`●)
4. VSCodeにC/C++ extensionをインストールする
- VSCodeを起動して、画面左端にある拡張機能のアイコンを押し、「Complete C/C++ Language support…」を探します。すぐ見つからない場合は、検索欄に「cpptools」と入れるといいかも。
- 緑色の「インストール」を押した後、アクティブ化のため青色の「再読み込み」を押します。
5. プロジェクトの設定
- ESP32のための設定はプロジェクト毎に行いますが、1回やってしまえば次回からは設定ファイルを使いまわしできます(≧∇≦)b
ここでは試しに、「c:\msys32\home\ユーザー名\esp\esp-idf\examples\get-started\blink」を「c:\msys32\home\ユーザー名\esp\」にコピーして、設定してみたいと思います。 - [ファイル]メニューの[フォルダを開く]から、コピーしたプロジェクトのフォルダ「c:\msys32\home\ユーザー名\esp\blink」を開きます。
- Ctrl+Shift+Pを押して「edit」と入力して、「C/Cpp: Edit Configurations」を選択します。
- 「c_cpp_properties.json」が開かれるので、以下の内容に上書きします。 [ユーザー名]のところだけ、適宜置き換えてください。
{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceRoot}", "C:/msys32/home/[ユーザー名]/esp/esp-idf/components" ], "browse": { "limitSymbolsToIncludedHeaders": true, "databaseFilename": "", "path": [ "${workspaceRoot}", "C:/msys32/home/[ユーザー名]/esp/esp-idf/components" ] }, "intelliSenseMode": "clang-x64" } ] }
- 再びCtrl+Shift+Pを押して、「Tasks」と入力すると出てくる「タスク:タスクランナーの構成」を選択し、更に「Others: 任意の外部コマンドを実行する例」を選択します。
- 「tasks.json」が開かれるので、以下の内容に上書きします。
{ "version": "0.1.0", "command": "c:/msys32/usr/bin/bash", "args": ["--login","-c"], "isShellCommand": true, "showOutput": "always", "suppressTaskName": true, "options": { "cwd": "${workspaceRoot}", "env": { "CHERE_INVOKING": "enabled_from_arguments", "MSYSTEM": "MINGW32" } }, "tasks": [ { "taskName": "build app", "args": ["make app"], "isBuildCommand": true, "problemMatcher": { "owner": "cpp", "fileLocation": "absolute", "pattern": { "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } }, { "taskName": "clean app", "args": ["make app-clean"] }, { "taskName": "flash app", "args": ["make app-flash"] }, { "taskName": "monitor", "command": "c:/msys32/mingw32", "args": ["make","monitor"], "isShellCommand": false, "showOutput": "never" }, { "taskName": "menuconfig", "command": "c:/msys32/mingw32", "args": ["make","menuconfig"], "isShellCommand": false, "showOutput": "never" } ] }
6. ビルドと実行
ここまで出来たら、あとはコマンドラインでやっていたのと同じことが、[タスク]メニューの[タスクの実行]からできます。
- menuconfig: 別ウインドウが開いて、menuconfigできます。デフォルトだとシリアルポートのポート名が「/dev/ttyUSB0」となってますが、Windowsでは「COM数字」とかにするようです。
- build app: ビルドします。
- flash app: ESP32に書き込みます。
- monitor:別ウィンドウでモニターを起動します。終了はLinuxと同じく「Ctrl+]」です。
- clean app:クリーンします。
7. おわりに
うーん、なんと言いますか、やっぱりIDEはいいですね(≧∇≦)b
特にESP-IDFは、ペリフェラルを設定する構造体や定数を調べたくてソースを見たくなることが多いのですが、IDEだと定義に飛んだりするのがすごいらくちん~ヽ(´▽`)ノ
せっかくWindowsに入れたけど、Linuxにも入れてみたくなりました(  ̄- ̄)
(追記)Linuxに入れてみたら、Windows版と同じコンパイル速度でした(*ノノ)気のせいだったようです・・・
コメント
コメントを投稿