組込みデバッグとトレースの基礎
デバッガは「止めて調べる」道具、トレースは「動いたまま記録する」道具です。この2つは代替関係ではなく、追える不具合の種類が違います。止めた瞬間に消えてしまうタイミング不具合は、ブレークポイントでは原理的に追えません。
目次
接続方式 — JTAG / SWD / cJTAG
JTAG は複数信号(TCK/TMS/TDI/TDO、任意で TRST)を使う従来からの方式で、デイジーチェーン接続に対応します。SWD は Arm が定義した2線式(SWCLK/SWDIO)で、ピン数を節約できるため小型基板で広く使われます。cJTAG は2線で JTAG 相当の機能を提供します。
選定時は、コネクタ形状(10/20ピン、Cortex Debug、車載向けの独自コネクタ)、ターゲット電圧レンジ、そしてリセット信号の扱いを確認してください。「対応コアに載っている」だけでは接続できないことがあります。
ハードウェアトレース vs ソフトウェアトレース
ハードウェアトレースは、CPU の実行情報を専用ポートから非侵襲で吐き出す方式です。Arm の ETM/ITM、Infineon の MCDS、Power Architecture 系の NEXUS などがこれにあたります。実行そのものに影響を与えないため、タイミングを証拠として残す用途に適します。
ただし、基板側にトレースポートが引き出されていなければ使えません。後からプローブだけを買い足しても、ハードウェアが対応していなければ意味がない、というのがこの分野で最も多い後悔です。トレースの要否は基板設計時に決めてください。
ソフトウェアトレースは、RTOS やアプリケーションに記録コードを組み込む方式です。既存ハードのまま導入できる代わりに、記録のオーバーヘッドと計装の設計が必要になります。タスク切り替え・割込み・同期プリミティブの挙動を追うには十分実用的です。
バッファかストリーミングか
ハードウェアトレースには、プローブ内蔵バッファに貯める方式と、ホストへ連続転送するストリーミング方式があります。
内蔵バッファは、容量分の時間しか記録できません。「まれにしか起きない現象」を捕まえるには、ストリーミング対応か、トリガ条件で狙い撃ちできるかが重要になります。
必要なトレース帯域は、コア数・クロック・分岐密度で決まります。多コアの同時トレースでは、出力帯域がボトルネックになることがあります。
マルチコアと同期停止
マルチコア SoC では、あるコアで止めた瞬間に他のコアが走り続けると、システム全体の状態が変わってしまい、原因究明ができません。コア間の同期停止(cross-triggering)に対応した機器かどうかを確認してください。
車載の AURIX や複数 SoC 構成では、「どのコアで何が起きていたか」を同一時間軸で見られることが前提になります。ここが担保できないと、タイミング起因の不具合は事実上追えません。
CI・テストファームでの運用
台数を並べて自動実行するなら、USB より Ethernet/PoE 対応機のほうが運用が安定します。USB は台数が増えるとエニュメレーションと給電が問題になりやすいためです。
スクリプト API(Python など)の有無も確認してください。単体テストの自動実行、カバレッジ取得、実行時間の回帰監視まで含めるなら、GUI 操作ではなく API で制御できることが前提になります。
機能安全での使いどころ
ISO 26262 の ASIL C/D では、CPU 余裕度(実行時間の最悪値に対する余裕)を示すことが求められる場面があります。
計装によるオーバーヘッドが許容されない場合、非侵襲のハードウェアトレースで実測を取るのが確実です。この要求が出る可能性があるなら、基板設計の段階でトレースポートを確保しておいてください。
よくある質問
- SWD しか出ていない基板でトレースは取れますか?
- SWD の SWO(Serial Wire Output)経由で、ITM による限定的なトレース(イベント・プロファイリング)は可能なことがあります。ただし命令トレースのような詳細な記録には、専用のトレースポートが必要です。何をどこまで追いたいかで必要な配線が変わります。
- ソフトウェアトレースのオーバーヘッドはどのくらいですか?
- 記録するイベントの種類と頻度、記録先(RAM バッファか外部転送か)で大きく変わります。一般論では答えられないため、対象システムでの実測が必要です。計装点を絞れば実用的な水準に収まることがほとんどです。
- 環境の選定を相談できますか?
- はい。対象MCU/SoC、基板のトレースポートの有無、追いたい不具合の種類、CI 連携の要否をお知らせいただければ、構成をご提案します。
関連する製品カテゴリ・ソリューション
- デバッグプローブ/オンチップデバッグ(製品カテゴリ)
- トレース/ランタイム解析(製品カテゴリ)
- コンパイラ・IDE・ビルド環境(製品カテゴリ)
- MCU ブリングアップ/量産書込み(ソリューション)
- AURIX マルチコア 車載ECU 開発(ソリューション)
- RTOS 可観測性・ランタイム解析(ソリューション)
ほかの技術ガイド
用語を確認する
構成のご相談
本ガイドの内容に沿ってご要件を整理いただければ、構成案と概算を早い段階でご回答します。部分的なご相談だけでも構いません。
