SWDって、そもそもナニ?

はじめに

電子工作やマイコンの世界を調べていると、よく目にする「SWD」という言葉。3文字略語で “SWD” と書かれてるけれど、「え?なんの略?」「USBとかUARTとは違うの?」と思ったこと、ありませんか?

この記事では、そんな“SWD”について、専門用語をできるだけ使わずに説明していきます。

合わせて読みたい

SWDは、「マイコンと会話するための道具」

SWDは Serial Wire Debug(シリアル・ワイヤ・デバッグ) を略したもので、その名のとおり「デバッグ(プログラムの中身を見たり、直したりする作業)」を行うための仕組みです。

言い換えると、SWDは「マイコンと開発者のあいだをつなぐ通訳さん」のような存在であり、プログラムを書き込んだり、動作を止めて中の状態を見たり、原因を調べたりするときに使われます。

どうやってつながってるの?

「デバッグ」と聞くと、ケーブルがいっぱい必要そうに感じるかもしれませんが、SWDはとってもシンプル。基本的には次の2本の信号線だけで通信します。

  • SWDIO:データのやりとりをする線
  • SWCLK:通信のタイミングを合わせるための線

これに、電源(VCC)GND(グラウンド) を足せば、合計4本のピンで完結します。
同じような役割を持つ「JTAG」という方式よりもずっとコンパクトです。
そのため、ピン数の少ないマイコンでも利用しやすいのが特徴なんです。

合わせて読みたい

実際にはどんなときに使うの?

  • たとえば、あなたが小さなマイコンボードにプログラムを書き込んだとします。
    でも動かしてみると、なぜかLEDが光らない…。
    そんなときにSWDを使うと、マイコンの中でプログラムがどう動いているのかをリアルタイムで確認できます。
  • プログラムの途中で動作を止める(ブレークポイント)
  • 変数の中身を確認する
  • 間違いを見つけて修正する
  • といった作業が、PC上の開発ツールから簡単に行うことができるのです。いわば「マイコンの中をのぞける窓」のようなものです。

どんな機器で使えるの?

SWDは、主に ARM Cortex-Mシリーズ というマイコンで利用されています。ArduinoやRaspberry Pi Pico、STM32など、多くの開発ボードがこのSWDに対応しています。

SWDを使うには、

  • デバッガー(例:ST-LINK、J-Link、DAPLink など)
  • 開発環境(例:Keil、STM32CubeIDE、PlatformIO など)

といったツールを組み合わせて使うのが一般的です。

まとめ:SWDは「マイコンを理解するための入り口」

SWDとは――

  • 「マイコンとパソコンをつなぐ、デバッグ専用の通信方式」
  • わずか2本の信号線で動くシンプルな仕組み
  • 動作の中身を見たり、修正したりできる便利なツール

というわけです。

電子工作を一歩進めて「プログラムの中身まで見てみたい」「どうして動かないのか調べたい」
と思ったら、SWDの世界に足を踏み入れてみましょう。
最初は小難しそうに見えるかもしれませんが、「マイコンと会話できる」と思えば、なかなかワクワクしてきませんか?

関連情報