SWD
SWD(Serial Wire Debug)は、Arm Cortex-M系を中心とするマイクロコントローラで広く採用される2線式のオンチップデバッグ・インタフェースである。従来のJTAGがTDI/TDO/TMS/TCKなど複数線を要したのに対し、SWDはSWDIO(双方向データ)とSWCLK(クロック)に最小限化し、nRESETやVrefを加えても配線点数が少なく、ボード面積とコネクタを節約できる。ホスト(デバッガ)とターゲット(MCU)間の半二重通信で、メモリアクセス、ブレークポイント制御、フラッシュ書込み、レジスタ閲覧などの基本機能を低オーバーヘッドで提供するのが特徴である。
基本概念とプロトコル概要
SWDはリクエスト→ACK→データという短いトランザクションを基本単位とし、LSBファーストのビット転送とターンアラウンド区間で方向を切り替える。内部的にはDP(Debug Port)とAP(Access Port)の二層構造をとり、DPを介して選択したAPにアクセスする。典型的にはAHB-APを用いてMCUのメモリマップ空間へ32bit幅で読み書きし、コアやペリフェラルの状態を直接操作する。ACK応答はOK/WAIT/FAULTの3種で、WAIT時はリトライ、FAULT時はステータスをクリアして回復させる。JTAGと両立可能なSWJ-DPでは、特定シーケンスでSWDとJTAGを切り替えられる。
信号線と電気特性
SWCLKはホスト駆動、SWDIOは双方向でプルアップを前提に設計される。レベルはターゲットVref(一般に1.8〜3.3V)に追従し、長配線や高速化ではリンギング対策としてシリーズ抵抗(例:数十Ω)を挿入するのが実務的である。実効クロックは数MHz〜数十MHzの範囲で、ノイズやスタブの影響を受けやすい基板では保守的な設定が安定する。nRESETを併用すると、低消費電力モードでデバッグが失敗するケースを減らせる。
推奨コネクタとピン配置
実装では1.27mmピッチの10ピン「Cortex Debug」ヘッダが事実上の標準で、Vref/GND/SWDIO/SWCLK/nRESET/SWOなどを割り当てる。レガシー資産があれば2.54mmピッチ20ピンARMヘッダも選択肢である。生産ライン向けにはスペース節約と自動治具適合を狙ってポゴピン用テストパッド化する設計も一般的である。
デバッグ機能とホストツール
SWDはハード・ソフト両面の典型操作(ステップ実行、ハード/ソフトブレークポイント、レジスタ/メモリのライブ閲覧、フラッシュ書換え)を提供する。ホスト側はCMSIS-DAP互換アダプタや各社オンボードデバッガを介してIDE/CLIから制御でき、OpenOCDやpyOCD等のツールチェーンとも連携する。半二重・低ピン数ゆえのシンプルさがセットアップ時間短縮とトラブル点の少なさにつながる。
JTAGとの比較
SWDの利点は配線削減、信号整合の容易さ、スループット対遜色のない実効デバッグ体験にある。一方、JTAGが得意とするバウンダリスキャンやデバイスチェーン(デイジーチェーン)による多段接続はSWDでは一般的でない。製品要件が生産時のBSDLベース検査を重視するならJTAG、組込み機器の開発デバッグに特化するならSWD、と役割分担で理解するとよい。SWJ-DPを用いれば両者の切替えで柔軟に運用できる。
メモリアクセスとレジスタモデル
SWDはDPのIDCODE/CTRL-STAT/SELECT等を経由してAHB-APのTAR(ターゲットアドレス)やDRW(データ)に触れ、メモリマップ空間を読み書きする。これによりペリフェラルの設定、スタックやヒープの検査、割込みマスクの確認、RAM経由の高速プログラミングなどが可能になる。ストリーミング的アクセスではWAIT頻発を避けるためアクセス間隔やバースト長を調整し、FAULT発生時はステータスクリア手順を組み込むのが堅牢である。
トレースとモニタリング
計測・ログ用途にはSWO(Serial Wire Output)を追加する。SWOはITM経由のイベント出力や簡易printf相当のテキストストリームを1線で運べ、リアルタイム動作を阻害しにくい。より詳細な命令トレース(ETM/ETF)は別系統のピンを要するため、小型機器ではSWD+SWOの組合せが現実解になりやすい。非侵襲モニタでタイムスタンプ付きイベントを収集すると、競合や割込み優先度の不整合を短時間で切り分けられる。
セキュリティと量産時の扱い
量産では読み出し保護やデバッグロックを有効化して資産を守るのが基本である。多くのMCUはオプションバイトやフューズでSWDを無効化でき、解除には認証手順やマスイレースを要する。製造治具では限定ウィンドウ(出荷前のみ有効)や物理アクセス制限を設け、フィールドでの不正侵入を抑止する。サービス用途にはパッドを隠蔽し、必要時のみ専用ジグでアクセスする運用が安全である。
基板設計の実務ポイント
- ターゲットVrefを確実に供給し、ホストアダプタのI/O電圧と一致させる。
- SWCLK/SWDIOは短く平行配線を避け、必要に応じてシリーズ抵抗で立上り/リンギングを整える。
- nRESETをヘッダへ引き出し、「Connect under reset」を使えるようにする。
- GND参照を低インピーダンスに確保し、コネクタ近傍にグランドガードやGNDビアを配置する。
- テストパッドはポゴピン圧や位置ずれを考慮してランド形状・ソルダーマスク開口を最適化する。
- 低電力モード移行中もSWDが維持されるようクロック源とピン多重設定を確認する。
トラブルシューティング
接続失敗の典型はVref不一致、ピン配列の取り違え、ブート設定でSWDピンが他機能に奪われるケースである。対策としては低速クロックでの再接続、nRESET同時使用、電源再投入、ブートモードジャンパ変更、保護ビットの確認が有効だ。長配線やアダプタ分岐がある場合はシリーズ抵抗の見直しや配線短縮が功を奏する。なお量産後にSWDが無効化されていると開発用の手順は通用しないため、製造時の設定文書化と復旧手順の整備が欠かせない。
コメント(β版)