Skip to main content

ArduinoボードをSWDインターフェースでデバッグする方法

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

ArduinoボードをSWDインターフェースでデバッグする方法

このWikiでは、J-Linkデバッグプログラマを使用してSWDインターフェースを介してArduinoボードをデバッグする方法を学びます。参考として、デバッグプロセスを示すためにWio Terminalをハードウェアとして使用します。

SWDデバッグとは

SWDSerial Wire Debug)は、2ピンインターフェース(SWDIO/SWCLK)であり、同じJTAGプロトコルを持つ代替JTAGインターフェースでもあります。SWDは、ARMデバッグプログラマで定義されたARM CPU標準の双方向ワイヤプロトコルを使用します。

ハードウェア接続

開始する前に、以下の材料が必要です:

  1. Wio Terminal(またはSWDインターフェースを備えた他のArduinoボード)

  2. J-Linkデバッグプログラマ

Wio TerminalのSWDインターフェース

Wio Terminalの場合、SWDインターフェースパッドはWio Terminalの前面下部(ケースなしの裸PCBA)にあります。以下の3本のジャンパーワイヤを引き出す必要があります:

  • SWCLK
  • SWDIO
  • GND

ジャンパーワイヤをはんだ付けしたら、SWDピンマップに従ってJ-Linkデバッグプログラマに接続します:

以下のように接続します:

  • SWCLK (Wio Terminal) -> SWCLK (J-Linkデバッグプログラマ ピン7)
  • SWDIO (Wio Terminal) -> SWDIO (J-Linkデバッグプログラマ ピン9)
  • GND (Wio Terminal) -> GND (J-Linkデバッグプログラマ ピン4)

J-Linkデバッグプログラマを使用してデバッグするには、J-Link GDBサーバーをダウンロードする必要があります。お使いのOSに応じてダウンロードしてインストールしてください。

Arduinoのセットアップ

J-Link GDBサーバーを起動する前に、後で設定するためにArduino IDEを開く必要があります。

1. ArduinoスケッチELFファイルパスの取得

Arduino IDEの設定で、コンパイルとアップロード中の詳細な出力を表示が両方ともチェックされていることを確認してください。

デバッグしたいArduinoスケッチの下で、コンパイルをクリックします(ボードとしてWio Terminalを選択)。ログ情報を確認して.elfファイルの場所のパスを取得します。例としてBlinkを使用します:

このパスをコピーし、後でGDBで使用します。

例えば、私の場合:

/var/folders/7g/10kskmw90bg08j_g_r7flwq40000gn/T/arduino_build_633418/Blink.ino.elf

2. GCCパスの取得

同じスケッチのコンパイルログ情報の下で、Arduinoが使用するGCCパスも見つけることができ、これも後でJ-Linkデバッグプログラマで使用できます。

例えば、私の場合:

/Users/ansonhe/Library/Arduino15/packages/Seeeduino/tools/arm-none-eabi-gcc/7-2017q4/bin

J-Link デバッグプログラマーを PC に接続し、USB ポートから Wio Terminal に電源を供給します。J-Link GDB Server を起動し、以下の設定を選択してください:

  • J-Link への接続: USB
  • ターゲットデバイス: Cortex-M4
  • ターゲットインターフェース: SWD

OK を選択し、すべてが正常に動作していれば、以下の画面が表示されます:

リスニングポートが表示され、J-Link GDB サーバーが起動して準備完了となります!

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 内で以下のコマンドを実行します:

  1. target remote localhost:2331
  2. monitor device Cortex-M4
  3. monitor speed auto
  4. file + Arduino スケッチ ELF ファイルパス、例: file /var/folders/7g/10kskmw90bg08j_g_r7flwq40000gn/T/arduino_build_633418/Blink.ino.elf
  5. load
  6. monitor reset

これで GDB を使用して Arduino スケッチをデバッグできます!

.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/cont
  • ctrl+c
  • next
  • break
  • info break
  • clear
  • delete
  • list

リソース

FAQ

Q1. Wio Terminal の筐体を取り外すにはどうすればよいですか?

A1. まず、4つの角にあるゴムパッドを取り外すと、Wio Terminal の筐体を固定している2つのネジが見えます。それらを外すだけで筐体を分解できます。

Loading Comments...