SWDプログラマー 電気仕様・プロトコル仕様
SWDプログラマーの選定は、USBで認識されるツールを選ぶだけではありません。プログラマーの電気的許容誤差、プロトコルタイミング、または自動化インターフェースが、ターゲットハードウェアと製造ワークフローの実際の要件と一致しない場合、プロダクションチームや組み込みエンジニアは実際の問題に直面します。3.3 Vの開発ボードでは問題なく動作するプログラマーが、1.8 VのIoTターゲットではサイレントに失敗する可能性があります。CLIサポートのないツールは、CI/CDパイプラインやベアネイル(bed-of-nails)治具に統合しようとした瞬間にボトルネックとなります。
この記事では、SWDプログラマーのスタンドアロンツールとしてのハードウェアおよびプロトコル仕様について説明します。SWDプロトコルの基礎については再掲しません。背景情報が必要なエンジニアは、 SWDプロトコルのアーキテクチャと信号の振る舞い から始めて、以下の仕様の詳細に進んでください。
SWDプログラマーの技術仕様
電気的および信号インターフェイスの要件

プログラマーの選択で最も間違いが多いのが電気的インターフェイスです。ツールの電圧互換性範囲は、ターゲットを直接駆動できるか、または治具で外部レベルシフターを必要とするかを決定します。ほとんどの最新SWDプログラマーはVTref入力をサポートしており、これによりツールがターゲットのI/O電圧を検出し、それに応じて自身の駆動レベルを調整できます。通常、1.65Vから5.5Vまで対応しますが、低価格のツールでは3.3V固定で、それ以外の範囲では外部ハードウェアが必要です。
固定電圧プログラマーはシンプルで安価ですが、治具ごとに1つの外部レベルシフターを追加すると、コスト、障害モード、および手直しリスクが増大し、量産時の価格差をしばしば超えてしまいます。
ターゲット電源供給は、信号電圧とは別の問題です。多くのプログラマーは、プログラミング中にターゲットに電源を供給できます。典型的な電流制限は100mAから400mAの範囲で、過電流保護機能により、ターゲットが定格しきい値以上の電流を消費すると供給が遮断されます。バッテリー駆動のターゲットでは、プログラマーのESD保護ダイオードを介した漏れ電流が重要になります。仕様の悪いツールは、十分な漏れ電流を注入して、誤ってバッテリーが充電されていると表示したり、低電力スリープ電流測定を妨害したりする可能性があります。
nRESETラインはさらに別の変数となります。一部のプログラマーはプッシュプルで駆動し、その他はプルアップ付きのオープンドレインを使用します。オープンドレインは、外部スーパーバイザーICからもリセットをアサートするターゲットに対してより安全です。接続シーケンス中のホールドタイム要件はターゲットデバイスによって異なり、設定可能なリセットタイミングを許容しないプログラマーは、電源投入シーケンスが遅いターゲットとの接続に失敗する可能性があります。最小限の2線SWDセットアップでは、nRESETは完全に省略されることがあります。これは、プロトコルレイヤーのみで接続中のSWDをサポートするターゲットでは有効です。
SWO(Serial Wire Output)のサポートはSWD標準ではオプションですが、プログラマーハードウェアに搭載されているかどうかで、トレースレベルのデバッグを使用できるかが決まります。サポートされるSWOボーレートは通常最大約4Mbaudに達しますが、実際に使用可能なレートはターゲットのシステムクロックとプログラマーのキャプチャバッファ深度に依存します。ファームウェアがサポートを主張していても、すべてのプログラマーが物理的にこのピンを露出させているわけではありません。
生産現場での使用では、プログラマーとターゲット間のガルバニック絶縁を評価する価値があります。絶縁されたターゲットインターフェイスを備えた産業用プログラマーは、複数の電源に接続された治具内のグラウンドループ電流から、ツールとテスト対象ユニットの両方を保護します。ターゲット側ピンのESD定格は大きく異なります。コネクタおよびピンレベルの完全な参照については、以下を参照してください。 SWDCLKおよびSWDIOピンの電気的定義.
| パラメータ | 標準範囲 | 技術的注記 |
|---|---|---|
| 目標電圧 (VTref) | 1.65 V – 5.5 V (自動検出) | 固定 3.3 V ツールには外部レベルシフタが必要です |
| 目標電力出力 | 100 mA – 400 mA | 過電流遮断機能により、ターゲットとツールを保護 |
| SWOボーレート | 最大約4 Mbaud | 実際のレートはターゲットクロックとバッファ深度に制限されます |
| ESD保護(ターゲット側) | ±2 kV – ±8 kV HBM(製品クラスによって異なります) | 産業用グレードのツールはより高い定格となります。データシートを確認してください。 |
| コネクタ規格 | ARM 10ピン Cortex または 20ピン JTAG互換 | 10ピンはコンパクトな量産治具でより一般的です |
プロトコルと通信パフォーマンス仕様
クロック周波数範囲は、エンジニアが最初に確認する仕様の1つですが、初期化周波数も最大周波数と同じくらい重要です。多くのターゲットでは、デバイスの発振器が安定するまで、接続シーケンス中に低速クロック(通常100 kHz~400 kHz)が必要です。フルスピードで開始するプログラマは、接続ウィンドウを完全に逃してしまう可能性があります。ターゲットが実行を開始すると、最大持続レートは大きく異なります。USB Full Speedツールは通常、実効SWDCLKで10~15 MHzで頭打ちになりますが、High Speed USBツールは、能力のあるターゲットでは50 MHz近くまで引き上げることができます。
アダプティブクロッキングは、この状況を変えます。プログラマがターゲットからのSWCLKフィードバックをサンプリングして実際のクロック出力を一致させると、発振器の起動が不安定なターゲットをより確実に処理できます。トレードオフは現実的です。アダプティブクロッキングはプログラマにハードウェアの複雑さを追加し、ツールがフィードバックを待ってから進む必要があるため、達成可能な最大クロックレートを低下させます。ほとんどの量産プログラミングシナリオでは、固定クロックを保守的なレートで設定する方が、アダプティブモードよりも高速で予測可能です。
SWDIO方向の変更は、ARM ADIv5およびADIv6仕様で定義されたターンアラウンド期間に従います。ターンアラウンドサイクル数は1~4サイクルです。プログラマはこれを正しく実装するか、読み取り時にプロトコルエラーを生成する必要があります。フラッシュプログラミングのスループット(量産ラインのサイクルタイムにとって実際に重要な値)は、クロックレート、パイプラインサポート、およびホストインターフェイス帯域幅の組み合わせに依存します。USB Full Speedで10 MHz SWDCLKで実行されるプログラマは、消去オーバーヘッドと検証モードに応じて、フラッシュに対して50~150 kB/sの実効書き込みスループットを提供する可能性があります。
ターゲットSoCがマルチドロップSWD(SWDv2)を使用している場合は、サポートを確認する価値があります。スリープ状態からのウェイクアッププロトコルとTARGETSELレジスタの処理は、マーケティングコピーで主張するだけでなく、プログラマファームウェアで実装する必要があります。これを特定のターゲットで早期にテストすることで、痛みを伴う後期段階での発見を回避できます。
エラーリカバリの動作は、信頼性の高い生産ツールと開発専用ツールを区別します。プログラマーが「プログラミング失敗」という一般的なメッセージとしてFAULT応答を表示し、リトライロジックがない場合、ラインでの手動介入を強制します。より優れたツールは、ラインリセットシーケンス、設定可能なリトライ回数、および特定の障害原因にマッピングされるリターンコードを実装します。これは、数千ユニットにわたる歩留まりデータを記録する際に重要になります。
| パラメータ | 標準範囲 | 生産への影響 |
|---|---|---|
| 初期クロック周波数 | 100 kHz – 400 kHz | 速すぎると、スロースタートターゲットでの接続ミスが発生します |
| 最大持続SWDCLK | 10 MHz (FS USB) – 50 MHz (HS USB) | プログラミングサイクル時間に直接影響します |
| 実効フラッシュ書き込みスループット | 50 kB/s – 500 kB/s (ターゲットとモードによって異なります) | 消去オーバーヘッドが支配的です。検証モードは~30~50%追加されます。 |
| ターンアラウンドサイクル | 1~4サイクル (ADIv5/ADIv6 仕様) | ツール設定ミスは読み取りプロトコルエラーを生成します |
| ホストインターフェース | USB 2.0 FS または HS; 組み込みホスト用の UART/SPI | HS USB は、大きなイメージでのホスト側のボトルネックを削減します |
プログラマモード、ターゲットサポート、および製造上の制約

DAP バージョンの互換性は、ターゲットサポートの出発点です。ADIv5 は、現在製造されている Cortex-M デバイスの大多数をカバーしています。ADIv6 は 64 ビットアドレス空間をサポートし、Cortex-A および新しいハイエンドターゲットに関連します。ADIv5 のみを実装するプログラマは、ADIv6 専用ターゲットに接続できません。これは、パフォーマンスのトレードオフではなく、互換性のハードな境界です。
フラッシュアルゴリズムのサポートは、2 つのモデルに分かれます。組み込みアルゴリズムは、ツールベンダーによって維持される固定デバイスリストをカバーします。ユーザーロード可能なアルゴリズムは、FLM または CMSIS-Pack フォーマットを使用し、エンジニアが新しいデバイスまたはカスタムデバイスのサポートを追加できるようにします。柔軟性は本物ですが、リスクも同様です。破損または設定ミスした FLM ファイルは、プログラマの内部検証チェックを通過しながら、非機能的なユニットを生成する可能性があります。ロード可能なアルゴリズムを使用する製造ラインでは、製造ビルドにバージョンロックされた、制御されたアルゴリズム検証プロセスが必要です。
検証および空チェックモードは、サイクル時間を増加させますが、書き込み専用フローでは見逃される障害を検出します。CRC ベースの検証は、完全なバイト比較よりも高速で、ほとんどのエラーパターンを検出します。完全な読み出しは低速ですが、セキュリティポリシーで要求される場合、またはターゲットのフラッシュコントローラが温度極限で既知のわずかな動作を持つ場合に必要です。プログラミング後のセキュリティビットロックアウト(プログラミング後にターゲットが読み出しを無効にする)は、プログラマのスクリプトで正しくシーケンスされないと、すべてのユニットで検証が失敗します。
ギャングプログラミングは、複数のターゲットを並列にプログラミングすることでスループットを倍増させます。重要な仕様は、チャンネルごとの分離です。各チャンネルは電気的に独立している必要があります。これにより、1 つのターゲットの障害が他のターゲットに影響を与えません。チャンネル間の同期精度は、ほとんどのアプリケーションではあまり重要ではありませんが、プログラミング順序がシステム内の複数のデバイスに書き込まれるキャリブレーションデータに影響を与える場合には関連性が高くなります。
オートメーションインターフェースの品質は、プログラマが最新の生産ワークフローに適合するかどうかを決定します。信頼性の高い終了コードを備えたCLIの利用可能性が最低要件です。PythonバインディングまたはREST APIは、ハイエンドツールでますます一般的になっています。GUIのみをサポートするプログラマは、自動テストまたはプログラミングステーションのボトルネックとなります。
- 動作温度:汎用品グレード 0–70 °C;産業用グレード −40–85 °C
- 製造フロア向け認証:CE、FCC、RoHS — 規制市場向けに購入する前に確認してください
- プログラマファームウェアのアップグレード可能性:バージョンロックを備えたフィールド更新可能なファームウェアは、生産トレーサビリティをサポートします
- ロールバック機能:ファームウェアアップデートが特定のデバイスのプログラミングシーケンスにリグレッションを導入した場合のリカバリを可能にします
プログラミングのみのワークフローからライブデバッグユースケースに移行するエンジニアは、関連する手順を確認する必要があります ライブSWDデバッグセッションの設定 — プログラマのモード切り替え動作とDAPアクセス構成は、2つのユースケース間で意味のある違いがあります。
プログラマーの選定は、最終的にこれらの仕様を3つの要素、すなわちターゲットの電気的要件、生産環境の自動化ニーズ、そして製品ファミリー全体で要求されるデバイスカバレッジと照合することになります。SWDプログラマーならどれでもCortex-Mターゲットで動作すると仮定して、電気的検証ステップをスキップするチームは、低電圧または標準的でないリセット動作を持つターゲットで接続障害に定期的に遭遇します。ツールを生産に投入する前に、完全な電圧および温度範囲での短い評価テストを実行することは容易であり、ほとんどの問題を早期に検出できます。STONE HMIは、自動化プロジェクト全体にわたって構造化されたファームウェア開発プロセスを適用しています。プログラマーの選定とファームウェアリリースに等しく適用されるそのようなプロセス規律は、正式に検証されなかったツールまたはアルゴリズムの不一致によって引き起こされる、最終段階の生産ライン停止のリスクを直接低減します。