#はじめに
①ESP32(ESP-WROOM-32)でLチカ (WindowsでESP-IDF使用)
から始まり、
②ESP32の開発をEclipse+Pleiadesで行う
と
③ESP32 を FT232H でつないで OpenOCD+GDBでデバッグ
を経て、これから
④ESP32をEclipse上でデバッグする
という話をします。
①~③の環境構築が終わっていることが前提条件となります。
参考資料は On chip debugging on ESP32 with Eclipse and OpenOCD 他、ググりながら書いております。
#Eclipseへのプラグインインストール
デバッガのプラグインをインストールします。
http://gnuarmeclipse.github.io/plugins/install/ をブラウザで開き、「Install」ボタンを Eclipse にドラッグ&ドロップするとインストールできるらしいのですが、なぜか失敗します。
ヘルプ→新規ソフトウェアのインストール からのURL指定でも同様に失敗します。
仕方がないので zip を取得してのインストール方法を用います。
から、ilg.gnuarmeclipse.repository-3.3.1-201702251311.zip
をダウンロードします。(特にこのバージョンである必要はなく、最新版があればそれを使って大丈夫だと思います。)
- ヘルプ→新規ソフトウェアのインストール
- 追加 ボタンクリック
- アーカイブ クリック
- 先ほどダウンロードしたzipを指定
- OK クリック
- アーカイブ クリック
- GNU ARM C/C++ Cross Compiler
- GNU ARM C/C++ OpenOCD Debugging
- 上記2つを選択し、次へ クリック
- 後は適当に 次へ などクリック。。。
- 追加 ボタンクリック
この後、Eclipseの再起動を促されるのですが、以下のダイアログが表示されてしまいます。
「いいえ」で抜けちゃってください。
この章で必要なのは、以下2つのプラグインのインストールでした。
- GNU ARM C/C++ Cross Compiler
- GNU ARM C/C++ OpenOCD Debugging
なんで Xtensa なのに ARM なんだ? というのは、分かりませんw
#Eclipseプロジェクトへのデバッガの設定
プロジェクトの設定をしていきます。
- プロジェクト右クリック → デバッグ → デバッグの構成
- GDB OpenOCD Debugging を選択し、左上の新規ボタンクリック
- メインタブ選択
- C/C++ アプリケーション に
build/app-template.elf
- C/C++ アプリケーション に
- デバッガータブ選択
-
OpenOCD Setup - 実行可能ファイルに~~
C:\msys32\usr\bin\openocd.exe
~~C:\msys32\mingw32\bin\openocd.exe
(最近のバージョンでインストール先が変わったようです) -
OpenOCD Setup - Config options に
-s /usr/share/openocd/scripts -f /home/rukihena/esp32.cfg
-
GDB Client Setup - 実行可能ファイルに
C:\msys32\opt\xtensa-esp32-elf\bin\xtensa-esp32-elf-gdb.exe
-
- 始動タブ選択
- Enable ARM semihosting チェックボックスをOFF
- Load executable チェックボックスをOFF
- Set breakpoint at を
main
からapp_main
に修正
以上で設定終了です。
とりあえず「適用」して「閉じる」
#デバッガ実行
デバッガを動かしてみましょう。
虫アイコンの右の▼から、先ほど作ったデバッグ構成を選択します。
初めは、ipc_task() で止まります。
これは、デバッグ構成の始動タブ内、Run/Restart Commands の 型:をhalt から run に変えると止まらなくなります。
F8 で再開しましょう。
次に app_main() で止まります。
これは、デバッグ構成の始動タブ内、Run/Restart Commands の Set breakpoint at を OFF にすると止まらなくなります。
F8 で再開しましょう。
LEDが点滅し始めましたか?
while ループの中にブレイクポイントを仕掛けてみましょう。
いつものように、行番号の左側をダブルクリックしても反応しません。
右クリック → ブレークポイント型 → C/C++ Breakpoints に変更すると、ブレイクポイントを仕掛けられるようになります。
ブレイクして、LEDの点滅が止まったでしょうか?
ブレイクできれば、変数の中も見ることができるようになっています。
不具合?
ブレイクポイントを先に仕掛けてからデバッグ実行を開始すると、ブレイクして再開した後、xtensa-esp32-elf-gdb.exe が落ちてしまいました。いまのところ対処方法は不明です。。。
おわりに
700円のチップ上での開発で入力補完が効いてデバッガも使えるなんて、すごーい!