SWDインターフェースを使用してArduinoボードをデバッグする方法
このwikiでは、SWDインターフェースを使用してJ-Link Debug Programmer経由でArduinoボードをデバッグする方法を学習します。参考として、デバッグプロセスを実演するハードウェアとしてWio Terminalを使用します。

SWDデバッグとは
SWDは、Serial Wire Debugとしても知られ、2ピンインターフェース(SWDIO/SWCLK)で、同じJTAGプロトコルを持つ代替JTAGインターフェースでもあります。SWDは、ARM Debug programmerで定義されたARM CPU標準双方向ワイヤプロトコルを使用します。
ハードウェア接続
開始する前に、以下の材料が必要です:
-
Wio Terminal(またはSWDインターフェース付きの他のArduinoボード)
Wio Terminal SWDインターフェース

Wio Terminalの場合、SWDインターフェースパッドはWio Terminalの前面底部にあります(ケースなしのベアPCBA)。引き出す必要がある3本のジャンパーワイヤがあります:
- SWCLK
- SWDIO
- GND
ジャンパーワイヤをはんだ付けしたら、SWDピンマップに従ってJ-Link Debug programmerに接続できます:

以下のように接続します:
SWCLK(Wio Terminal)->SWCLK(J-Link Debug Programmer Pin 7)SWDIO(Wio Terminal)->SWDIO(J-Link Debug Programmer Pin 9)GND(Wio Terminal)->GND(J-Link Debug Programmer Pin 4)
デバッグ用J-Link GDB Serverのインストール
J-Link Debug programmerでデバッグするには、J-Link GDB Serverをダウンロードする必要があります。お使いのOSに応じてダウンロードしてインストールしてください。
Arduino設定
J-Link GDB Serverを起動する前に、後の設定のためにArduino IDEも開く必要があります。
1. Arduino Sketch ELFファイルパスの取得
Arduino IDEの設定で、Show verbose output during compilation and uploadの両方にチェックが入っていることを確認してください。
デバッグしたいArduino sketchで、Compileをクリックし(ボードとしてWio Terminalを選択)、ログ情報をチェックして.elfファイルの場所のパスを取得します。例としてBlinkを使用しましょう:

このパスをコピーして、後でGDBで使用します。
例えば、私の場合:
/var/folders/7g/10kskmw90bg08j_g_r7flwq40000gn/T/arduino_build_633418/Blink.ino.elf
2. GCCパスの取得
同じsketchコンパイルログ情報で、Arduinoで使用されるGCCパスも見つけることができ、これも後でJ-Link Debug Programmerで使用できます。

例えば、私の場合:
/Users/ansonhe/Library/Arduino15/packages/Seeeduino/tools/arm-none-eabi-gcc/7-2017q4/bin
J-Link GDB Serverの開始
J-Link Debug ProgrammerをPCに接続し、USBポートからWio Terminalに電源を供給します。J-Link GDB Serverを起動し、以下の設定を選択します:
- Connection to J-Link: USB
- Target Device: Cortex-M4
- Target Interface: SWD

OKを選択し、すべてがうまくいけば以下の画面が表示されるはずです:

リスニングポートが表示され、J-Link GDB serverが起動して準備完了であることが確認できるはずです!
GDBクライアントの起動
ArduinoのGCCパスから先ほど保存したパスを使用してGDBクライアントを起動できます。ターミナルを開き、コピーしたパス + /arm-none-eabi-gdbを貼り付けます:
例:/Users/ansonhe/Library/Arduino15/packages/Seeeduino/tools/arm-none-eabi-gcc/7-2017q4/bin/arm-none-eabi-gdb
gdbで以下のコマンドを実行します:
target remote localhost:2331monitor device Cortex-M4monitor speed autofile+ Arduino Sketch ELFファイルパス、例:file /var/folders/7g/10kskmw90bg08j_g_r7flwq40000gn/T/arduino_build_633418/Blink.ino.elfloadmonitor reset
これでGDBを使用してArduino Sketchをデバッグできます!

.gdbinitメソッド
.gdbinitファイルを作成し、以下をコピーして~/の場所に保存することで、gdbの設定プロセスを繰り返すことを避けることもできます。
target remote localhost:2331
monitor device Cortex-M4
monitor speed auto
file /var/folders/7g/10kskmw90bg08j_g_r7flwq40000gn/T/arduino_build_633418/Blink.ino.elf
load
monitor reset
これでGDBクライアントを起動するだけで、すぐにデバッグを開始できます!
デバッグ
GDBの便利なコマンド:
continue/contctrl+cnextbreakinfo breakcleardeletelist
推奨ツール:XIAO Debug Mate
より効率的な開発体験のために、XIAO Debug Mateをお勧めします。このオールインワン開発ツールは、デバッグプロセスを簡素化するように設計されており、XIAOエコシステム向けのワイヤレスソリューションを提供しながら、より広範な組み込みプロジェクトにとって汎用的なユーティリティとして機能します。ESP32-S3を搭載し、従来の大型デバッガーの現代的な代替品として機能します。
主な機能:
- 3-in-1マルチツール:DAPLinkデバッガー、シリアルモニター、パワーメーターを1つのデバイスに統合。
- ビジュアルフィードバック:2.01インチLCD画面を搭載し、PCなしでリアルタイム変数ステータス、電力カーブ、シリアルログを表示。
- XIAOのプラグアンドプレイ:任意のSeeed Studio XIAOボードを直接プラグインして即座にデバッグ。
- ユニバーサルSWDサポート:スタンドアロンSWDプローブ(2.54mm拡張ヘッダー経由)として使用して、他のARM Cortex-Mマイクロコントローラーをデバッグ可能。

リソース
FAQ
Q1. Wio Terminalのエンクロージャーを取り外すにはどうすればよいですか?
A1. まず、4つの角の4つのゴムパッドを取り出すと、Wio Terminalエンクロージャーを固定している2つのネジが見えます。それらを外すだけで分解できます。
