2023年1月6日金曜日

ESP32-S3-DevKitC-1 と ATOMS3 でJTAGデバッグ


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


サンプルプログラム





シリアルモニタとの接続

上記サンプルを入力し、書き込みを行います。 書き込みが成功すると、シリアルモニタにメーッセージが表示されます。

シリアル通信のボーレートを合わせてください。この例では 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-ship
M5Stack ATOMS3を購入 その2 | Lang-ship
M5Stack ATOMS3でHello World | WiNCHaNブログ


プログラミングが苦手なので、JTAG でデバッグできるのは嬉しいですね。

では・・・

0 件のコメント:

コメントを投稿

Raspberry Pi 3 Model A+ で広告ブロックサーバーを作る(その2)

前回作成した 広告ブロックサーバー の稼働状況をAmbientにアップロードするスクリプトを書いたのでメモを残しておきます。