デバッグ環境の構築
ESP32はJTAGデバッグに対応しています。
デバッグについての詳細はSTEP33で触れます。ここでは、ひととおりの環境構築と動作確認を行っておきましょう。
FT2232Dのドライバ書き換え
本コースでは、デバッグモジュールとしてFT2232Dを搭載したAE-FT2232を使用します。Windowsの場合、FT2232Dのドライバを書き換える必要があります(Linux、MacOSでは不要です)。
- AE-FT2232をUSB Mini-BケーブルでPCと接続します。また、ESP32モジュールがUSBで接続されている場合は取り外します。
- デバイスマネージャーで二つのUSB Serial Portが認識されていることを確認します。
- WebブラウザでZadigのページにアクセスし、Zadigをダウンロードします。
- Zadigをダウンロードしたらクリックして実行します。
- 「Zadig update policy」が表示されたら、「Yes」または「No」を選択します。
- 「Options」をクリックし、「List All Devices」にチェックを入れます。
- 「Dual RS232 (Interface 0)」を選択し、デバイス名(「Dual RS232」)をメモしておきます。なお、環境等により別の名前(「FT2232H MiniModule (Interface 0)」等)になっている可能性がありますが、「(Interface 0)」となっているものを選択します。以下、デバイス名が「Dual RS232」だったとして解説しますが、別の名前だった場合はその部分を読み替えてください。
- 「Driver」の書き換え先(矢印の右側)が「WinUSB」になっていることを確認し、「Replace Driver」をクリックしてドライバを書き換えます(しばらく時間がかかります)。なお、書き換え済みの場合は「Reinstall Driver」と表示されます。
- 書き換えが完了したら、デバイスマネージャーでUSB Serial Portがひとつになっていることを確認します。また、「ユニバーサルシリアルバスデバイス」に「Dual RS232」というデバイスがあることを確認します。
なお、元に戻したい場合はデバイスマネージャーからドライバの再インストールを行ってください。
PlatformIOの設定
以下はWIndowsの場合の設定方法です(Linux、macOSではパスを読み替えてください。デバイス名はdmesgコマンドで確認できます)。
- まず「F5」キーを押して、デバッグを開始します。この段階では、ビルドは成功しますがその後エラーが表示されデバッグは行えません(このプロセスは以下で編集するファイルを生成するために必要です)。
- エクスプローラで「%homepath%.platformiopackagestool-openocd-esp32shareopenocdscriptsinterfaceftdi」を開き、ファイル「minimodule.cfg」を開きます。
- 「ftdi device_desc “FT2232H MiniModule”」の「FT2232H MiniModule」を、「FT2232Dドライバの書き換え」でメモしたデバイス名の「Dual RS232」に書き換えます(デバイス名と一致している場合は書き換え不要です)。念のため、書き換え前にファイルのバックアップを取っておくと良いでしょう。以下は書き換え例です。
adapter driver ftdi
#ftdi device_desc "FT2232H MiniModule"
ftdi device_desc "Dual RS232"
ftdi vid_pid 0x0403 0x6010
Code language: Bash (bash)
デバッグモードでのプログラム実行
- プロジェクトの「platform.ini」を開き、末尾に「debug_tool = minimodule」を追加します。以下は設定例です。
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
debug_tool = minimodule
Code language: PHP (php)
- メインボードの電源をONにします。
- 「F5」キーを押すと、デバッグに向けた処理(現在のプログラムのビルドおよび書き込みを含む)が開始されます。なお、ビルドの完了後、デバッグモードでの操作ができるようになるにはやや時間がかかります。「デバッグコンソール」を開くと進捗を確認することができます。
- これまで編集してきたのとは別の「main.cpp」ファイルが表示されればデバッグ準備完了です(なお、この「main.cpp」はホームディレクトリ以下の.platformiopackagesframework-arduinoespressif32coresesp32main.cppにあるファイルです)。
- 「F5」キーを押すとプログラムが動き始めます。
- これまで編集してきた「main.cpp」を開き、loop関数内の適当な行の行番号左側をクリックしてブレークポイントを入れてみましょう。その場所でプログラムが止まります。
- 「F5」キーを押すとプログラムが動き出し、同じブレークポイントの場所で再度止まります。
- ブレークポイントをクリックして削除し、再度「F5」キーを押すと、プログラムが再度連続して動くようになります。
デバッグを行う上での注意
JTAGでデバッグを行う場合、JTAG用のピン(IO12〜IO15)は他の用途には使えません。