2023.01.10 追記:Lang-ship にJATGデバッグに関するの詳しい解説がありました。詳しくはこちらの記事を御覧ください。
「ESP32-S3/C3で内蔵USB JTAGをWindowsで使う方法 | Lang-ship」
Arduino IDE を使って、ESP32-S3-DevKitC-1 と ATOMS3 でJTAGを使ったデバッグができたので、忘れないようにメモを残しておきます。
この記事では、Windows 10 に Arduino IDE 2.0.3 をインストールした環境で作業を行っています。
使用するマイコンボード
デバイスの確認
ESP32-S3-DevKitC-1 または ATOMS3 を USB ケーブルで接続し、デバイスマネージャーを開き、以下のデバイスが存在することを確認します。
- ポート(COM と LPT)
USBシリアル デバイス(COM8)<--- 注:番号は環境により異なります - ユニバーサル シリアル バス デバイス
USB JTAG/serial debug unit
ESP32-S3-DevKitC-1を接続したときのデバイスの状態
注意事項:USBケーブルは ESP32-S3-DevKitC-1 のUSB側に接続します。
ATOMS2を接続したときのデバイスの状態
あとで Arduino IDE でデバイスを指定する時に必要になりますので、ポート(COM と LPT)で表示されたデバイスのCOMの番号をメモしておきます。
Arduino IDE のインストール
WiNCHaN氏のブログ記事「Arduino IDEの導入 (ESP32-S3-DevKitC-1向け)」を参考に Arduino IDE をインストールします。
スケッチの作成
新しいスケッチを作成します。ここでは「sketch_hello_jtag」としました。また、ボードマネージャで「esp32 by Espressif Systems」がインストールされていることを確認します。
Arduino IDE の設定
- ボード:ESP32S3 Dev Module
- ポート:COM8 <--- デバイスマネージャで確認した番号を指定
- USB CDC ON Boot: Enabled
- CPU Frequency: 240MHz(WiFi)
- Code Debug Level: None
- USB DFU On Boot: Disabled
- Erase All Frash Before Sketch Upload: Disabled
- Events Run On: Core 1
- Flash Mode: QIO80MHz
- Flash Size: 4MB(32Mb)
- JTAG Adapter: Integrated USB JTAG
- Arduino Run On: Core 1
- USB Firmware MSC On Boot: Disabled
- Partition Scheme: Default 4MB with spiffs(1.2MB APP/1.5MB SPIFFS)
- PSRAM: Disabled
- Upload Mode: UART0 / Hardware CDC
- Upload Speed: 921600
- USB Mode: Hardware CDC and JTAG
サンプルプログラム
void setup() { | |
Serial.begin(115200); | |
} | |
void loop() { | |
static int count = 0; | |
count++; | |
Serial.printf("count = %d\n", count); | |
delay(100); | |
} |
シリアルモニタとの接続
上記サンプルを入力し、書き込みを行います。 書き込みが成功すると、シリアルモニタにメーッセージが表示されます。シリアル通信のボーレートを合わせてください。この例では 115200 を指定。
JTAGデバッグ
ここでは、7行目の「count++;」にブレークポイントを設定し、そこでプログラムが停止することを確認します。画面左のデバッグボタンを押し、「デバッグ」画面を表示します。次に、ブレークをかけたい行番号をクリックしブレークポイントを設定します(赤丸で表示される)。
「デバッグの開始」ボタンを押し、デバッグを開始します。
ブレークポイントの設定があると、そこでプログラムが停止し変数の値を確認できます。
この例では、「count++;」実行前で停止し、変数「count」値が0であることがわかります。次に「ステップオーバー」で次の行まで実行します。変数「count」値が1に変わったことがわかります。
トラブルシューティング
1.JTAGデバッグが起動しない
以下のエラーが発生し GDB Server が起動できないOpenOCD: GDB Server Quit Unexpectedly. See gdb-server output for more details.
デバイスマネージャーを開き、「ユニバーサル シリアル バス デバイス」の「USB JTAG/serial debug unit」で「ドライバーの更新」を行うとデバッグできるようになることがあります。
2.ESP32-S3-DevKitC-1 でJTAGデバッグができない
USBケーブルをUARTに接続し、デバッグしようとしたところ前項1と同様のエラーでデバッグできない。また、シリアルモニターにもメッセージが出ない。ESP32-S3-DevKitC-1 にはUSBコネクタが「UART」と「USB」の2箇所あり、UART側に接続するとJTAGデバッグやシリアルモニターは使用できないようです。JTAGデバッグを行う場合は、USBケーブルをUSB側に接続する必要がありそうです。
参考情報
M5Stack ATOMS3を購入 | Lang-shipM5Stack ATOMS3を購入 その2 | Lang-ship
M5Stack ATOMS3でHello World | WiNCHaNブログ
プログラミングが苦手なので、JTAG でデバッグできるのは嬉しいですね。
では・・・
0 件のコメント:
コメントを投稿