MIPIアライアンス・デバッグ・アーキテクチャは、モバイルおよびモバイル関連分野における高度に組み込み化されたシステムのデバッグのための標準化されたインフラストラクチャを提供します。MIPIアライアンスMIPIデバッグ・ワーキンググループは、システム・オン・チップ(SoC)からデバッグツールへの標準デバッグプロトコルと標準インターフェースを提供することを目的とした仕様ポートフォリオを公開しました。ホワイトペーパー「デバッグのためのアーキテクチャ概要」には、これまでの取り組みがすべてまとめられています。近年、同グループは、高度に組み込み化されたシステムの内部動作の可視性を向上させるプロトコルの仕様策定、フォームファクタデバイスの機能インターフェースを介したデバッグソリューションの標準化、そしてデバッグバスとしてのI3Cの使用規定に注力してきました。[ 1 ] [ 2 ]
「デバッグ」という用語
「デバッグ」という用語は、ハードウェアおよびソフトウェアにおけるミスやバグを検出、トリアージ、トレースし、潜在的に排除するために使用される様々な手法を包含します。デバッグには、制御/構成メソッド、停止/ステップモードデバッグ、そして様々な形式のトレースが含まれます。
制御/構成方法
デバッグは、特定のターゲットシステムのコンポーネント(組み込みシステムを含む)を制御および構成するために使用できます。標準機能には、ハードウェアブレークポイントの設定、トレースシステムの準備と構成、システム状態の検査などがあります。
停止/ステップモードのデバッグ
ストップ/ステップモードのデバッグでは、ブレークポイントを使用してコア/マイクロコントローラを停止し、命令を1つずつ実行することでコードを「シングルステップ」で実行します。SoCの他のコア/マイクロコントローラが同期して終了している場合は、システム全体の状態を検査できます。ストップ/ステップモードのデバッグには、制御/構成手法、コア/マイクロコントローラの実行制御、他のコアとの開始/停止の同期、メモリおよびレジスタへのアクセス、パフォーマンスカウンタやランタイムメモリアクセスなどの追加のデバッグ機能が含まれます。
トレース
トレースを使用することで、組み込みシステムの動作とタイミング特性を詳細に分析できます。代表的なトレースを以下に示します。
- 「コアトレース」は、組み込みコアにおけるプログラム実行の完全な可視性を提供します。トレースデータは、命令実行シーケンス(命令トレースと呼ばれることもあります)とデータ転送(データトレースと呼ばれることもあります)について生成されます。SoCは複数のコアトレースを生成する場合があります。
- 「バス トレース」は、特定のバスを介したデータ転送の完全な可視性を提供します。
- 「システムトレース」は、組み込みシステム内の様々なイベント/状態を可視化します。トレースデータは、計測アプリケーションコードとSoC内のハードウェアモジュールによって生成されます。SoCは複数のシステムトレースを生成する場合があります。
SoC内部動作の可視性

複雑なSoC内で何が起こっているかを監視および分析するには、トレースが最適なツールです。組み込み市場には、MIPI以外のコアトレースおよびバストレースの標準規格がいくつか確立されています。そのため、MIPIデバッグワーキンググループが新しい規格を策定する必要はありませんでした。しかし、デバッグワーキンググループが2006年に MIPIシステムトレースプロトコル(MIPI STP)の最初のバージョンを公開した時点では、「システムトレース」に関する標準規格は存在していませんでした。
MIPI システムソフトウェアトレース (MIPI SyS-T)
ソフトウェアからのシステムトレースデータの生成は、通常、追加の関数呼び出しを挿入することによって行われ、デバッグプロセスに役立つ診断情報を生成します。このデバッグ手法はインストルメンテーションと呼ばれます。例としては、printf形式の文字列生成関数、値情報、アサーションなどがあります。MIPI System Software Trace(MIPI SyS-T)の目的は、デバッグ用の再利用可能な汎用データプロトコルとインストルメンテーションAPIを定義することです。この仕様では、トレース解析ツールがデバッグメッセージを人間が読めるテキストまたは自動解析に最適化された信号にデコードできるように、メッセージ形式を定義しています。
冗長なテキストメッセージはデバッグ時の帯域幅制限に影響を及ぼすため、「カタログメッセージ」と呼ばれるものが提供されています。カタログメッセージは、文字列を数値に置き換えたコンパクトなバイナリメッセージです。数値からメッセージ文字列への変換は、トレース解析ツールによって、付随するXML情報を用いて行われます。この情報は、ソフトウェアビルドプロセス中に、仕様にも含まれているXMLスキーマを使用して提供されます。
SyS-Tデータプロトコルは、 MIPIシステムトレースプロトコルで定義されているような低レベルのトランスポートリンク上で効率的に動作するように設計されています。タイムスタンプやデータ整合性チェックサムといったSyS-Tプロトコル機能は、トランスポートリンクが既にそれらの機能を提供している場合は無効にすることができます。UART 、USB、TCP/IPなどの他のトランスポートリンクの使用も可能です。
MIPIデバッグワーキンググループは、システムソフトウェアトレース仕様(SyS-T)が承認され次第、SyS-T計測APIのオープンソースリファレンス実装、SyS- Tメッセージプリティプリンタ、およびXML担保データを生成するツールを提供する予定です。[ 3 ]
MIPI システム トレース プロトコル (MIPI STP)

MIPIシステムトレースプロトコル(MIPI STP)は、SoC内の任意の場所から生成されたトレースストリームを4ビットフレームのトレースストリームに統合することを可能にする汎用プロトコルを規定しています。このプロトコルは、システムトレース情報を統合するために意図的に設計されています。MIPIシステムトレースプロトコルは、チャネル/マスタートポロジを採用しており、トレース受信解析ツールが個々のトレースストリームを照合して解析・表示できるようにします。このプロトコルは、ストリームの同期とアライメント、トリガーマーカー、グローバルタイムスタンプ、複数ストリームの時刻同期などの機能も提供します。
システムトレースモジュールによって生成されたSTPパケットのストリームは、トレースRAMに直接保存したり、チップ外に直接エクスポートしたり、トレースラッパープロトコル(TWP)モジュールにルーティングして他のトレースストリームとマージしたりすることができます。MIPI STPに準拠したARMのCoreSightシステムトレースマクロセル[ 4 ]は、現在、モバイル分野で使用されているほとんどのマルチコアチップに不可欠な要素となっています。
MIPI理事会が採択したシステムトレースプロトコル仕様(STP SM )の最終バージョンはバージョン2.2(2016年2月)です。[ 5 ]
MIPI トレース ラッパー プロトコル (MIPI TWP)
MIPIトレースラッパープロトコルは、複数のトレースストリームを単一のトレースストリーム(バイトストリーム)に統合することを可能にします。ラッピングプロトコルによって、各トレースストリームに一意のIDが割り当てられます。データがビットストリームとして送信される場合でも、バイト/ワード境界の検出が可能です。トレースデータの継続的なエクスポートが必要な場合は、イナートパケットが使用されます。MIPIトレースラッパープロトコルは、ARM CoreSight向けに規定されたARMのトレースフォーマッタプロトコルに基づいています。
MIPI理事会が採択したトレースラッパープロトコル仕様(TWP SM )の最終バージョンはバージョン1.1(2014年12月)です。[ 6 ]
専用インターフェースから機能インターフェースまで

専用デバッグインターフェース

製品開発の初期段階では、デバッグツールを接続するための専用かつ容易にアクセスできるデバッグインターフェースを備えた開発ボードを使用するのが一般的です。モバイル市場で使用されるSoCは、スキャンチェーンによるストップモードデバッグとメモリマップドデバッグレジスタによるストップモードデバッグという2つのデバッグ技術を採用しています。
組み込み市場では、MIPI以外のデバッグ規格としてIEEE 1149.1 JTAG(5ピン)とARM Serial Wire Debug(2ピン)が既に確立されており、どちらもシングルエンドピンを使用しています。そのため、MIPIデバッグワーキンググループは、ストップモードのデバッグプロトコルやデバッグインターフェースを規定する必要はありませんでした。
SoC内で生成されトレースストリームに統合されたトレースデータは、専用の単方向トレースインターフェースを介してチップ外のトレース解析ツールにストリーミングできます。MIPIデバッグアーキテクチャは、パラレルトレースポートとシリアルトレースポートの両方の仕様を提供します。
MIPIパラレルトレースインターフェース(MIPI PTI)は、トレースデータを複数のデータピンとクロックピン(シングルエンド)に渡す方法を規定しています。この仕様には、信号名と機能、タイミング、電気的制約が含まれています。MIPIボードで採用されているパラレルトレースインターフェース仕様の最新版はバージョン2.0(2011年10月)です。[ 7 ]
MIPI高速トレースインターフェース(MIPI HTI)は、 PCI Express、DisplayPort、HDMI 、USBなどの標準インターフェースの物理層を介してトレースデータをストリーミングする方法を規定しています。現在の仕様では、1~6レーンに対応しています。仕様には以下が含まれます。
- シリアル レーンの電気的特性とクロック特性を表す PHY 層。
- LINK 層は、トレースが Aurora 8B/10Bプロトコルにどのようにパッケージ化されるかを定義します。
- HTI を制御し、ステータス情報を提供するプログラマー モデル。

HTIは、ARMによって定義された高速シリアルトレースポート(HSSTP)仕様のサブセットです。[ 8 ] MIPIボードに採用された高速トレースインターフェース仕様の最後のバージョンはバージョン1.0(2016年7月)です。[ 9 ]
ボード開発者とデバッグツールベンダーは、標準デバッグコネクタと標準ピンマッピングの恩恵を受けることができます。MIPIのデバッグおよびトレースコネクタに関する勧告では、10/20/34ピンのボードレベル1.27ミリメートル(0.050インチ)コネクタ(MIPI10/20/34)が推奨されています。多様なデバッグシナリオに対応する7つの異なるピンマッピングが規定されています。これらには、標準JTAG(IEEE 1149.1)、cJTAG(IEEE 1149.7)、および4ビットパラレルトレースインターフェース(主にシステムトレースに使用)が含まれ、ARM固有のシリアルワイヤデバッグ(SWD)標準が補完されています。[ 10 ] MIPI10/20/34デバッグコネクタは、ARMベースの組み込み設計の標準となりました。
モバイル分野の多くの組み込み設計では、高速パラレルトレースポート(ピンあたり最大600Mbps)が使用されています。MIPIは、MIPI60と呼ばれる60ピンSamtec QSH/QTHコネクタを推奨しています。このコネクタは、実行制御用のJTAG/cJTAG、最大40本のトレースデータ信号、最大4本のトレースクロックを利用できます。複雑さを最小限に抑えるため、この推奨事項では、幅の異なる1、2、3、または4本のトレースチャネルを備えた4つの標準構成を定義しています。
MIPIアライアンス勧告のデバッグおよびトレースコネクタに関する最後のMIPI理事会採択バージョンはバージョン1.1(2011年3月)です。[ 11 ]
PHYとピンオーバーレイインターフェース


製品の最終フォームファクタでは、容易にアクセスできるデバッグインターフェースが利用できません。そのため、最終製品におけるバグの特定やパフォーマンスの最適化が阻害されます。デバッグロジックは最終製品に依然として存在するため、代替のアクセスパスが必要です。効果的な方法の一つは、モバイル端末の標準インターフェースに、デバッグロジックへのアクセスを可能にするマルチプレクサを装備することです。インターフェースの主要機能とデバッグ機能の切り替えは、接続されたデバッグツールまたはモバイル端末のソフトウェアによって開始できます。標準デバッグツールは、以下の条件下で使用できます。
- デバッグ ツールとモバイル ターミナルにスイッチング プロトコルが実装されています。
- デバッグツールを標準インターフェースに接続するデバッグアダプタが存在します。デバッグアダプタは、必要に応じてスイッチングプロトコルをサポートする必要があります。
- 標準インターフェース ピンからデバッグ ピンへのマッピングが指定されます。
MIPI Narrow Interface for Debug and Test (MIPI NIDnT) は、 microSD、USB 2.0 Micro-B/-ABレセプタクル、USB Type-Cレセプタクル、およびDisplayPortといった標準インターフェースを介したデバッグをカバーしています 。MIPIボードに採用されているNarrow Interface for Debug and Test (NIDnT SM ) の最新版はバージョン1.2(2017年12月)です。[ 12 ]
ネットワークインターフェース

ピンを再利用する代わりに、標準インターフェースまたはネットワークのプロトコルスタックを介してデバッグを行うこともできます。この場合、デバッグトラフィックは、同じ通信リンクを使用する他のアプリケーションのトラフィックと共存します。MIPIデバッグワーキンググループは、このアプローチを「ギガビットデバッグ」と名付けました。このアプローチに対応するデバッグプロトコルが存在しなかったため、MIPIデバッグワーキンググループは独自のSneakPeakデバッグプロトコルを策定しました。
MIPI SneakPeek プロトコル(MIPI SPP) は、基本的なデバッグ専用のインターフェイスからプロトコル駆動型のインターフェイスに移行しました。
- 受信したコマンド パケットを、メモリ、メモリ マップ デバッグ レジスタ、およびその他のメモリ マップ システム リソースへの読み取り/書き込みアクセスに変換します。
- コマンド結果 (メモリ、メモリ マップ デバッグ レジスタ、およびその他のメモリ マップ システム リソースからのステータス情報と読み取りデータ) を、送信される応答パケットに変換します。
- SneakPeek は入力バッファを介してパケットを受け入れ、出力バッファを介してパケットを配信するため、あらゆる標準 I/O またはネットワークに簡単に接続できます。
MIPIアライアンスSneakPeekプロトコル仕様は、基本概念、必要なインフラストラクチャ、パケット、およびデータフローを規定しています。MIPI理事会が採択したSneakPeekプロトコル仕様(SPP SM)の最新版はバージョン1.0(2015年8月)です。[ 13 ]
MIPIギガビット・デバッグ仕様ファミリーは、モバイル端末で利用可能な標準I/Oまたはネットワークへのデバッグおよびトレースプロトコルのマッピングに関する詳細を提供します。これらの詳細には、エンドポイントのアドレス指定、リンクの初期化と管理、データのパッケージング、データフロー管理、エラーの検出と回復が含まれます。MIPIボードで最後に採用されたUSB用ギガビット・デバッグ仕様(MIPI GbD USB)のバージョンは1.1(2018年3月)です。[ 14 ] MIPIボードで最後に採用されたインターネットプロトコルソケット用ギガビット・デバッグ仕様(MIPI GbD IPS)のバージョンは1.0(2016年7月)です。[ 15 ]
デバッグバスとしてのI3C
JTAGやARM CoreSightなどの現在のデバッグソリューションは静的に構造化されているため、デバッグコンポーネント/デバイスへのアクセス性に関して拡張性が制限されます。MIPI Debug for I3Cは、スケーラブルな2ピンシングルエンドデバッグソリューションを規定しており、製品寿命全体にわたって利用可能という利点があります。I3Cバスはデバッグバスとしてのみ使用することも、デバッグバスとセンサー用データ取得バスという基本機能との間でバスを共有することもできます。I3C経由のデバッグは、基本的に以下のように動作します。
- I3C バスは物理的なトランスポートに使用され、ネイティブ I3C 機能はバスの構成と新しいコンポーネントのホットジョインに使用されます。
- デバッグプロトコルは専用のI3Cコマンドにラップされています。サポートされているデバッグプロトコルは、JTAG、ARM CoreSight、MIPI SneakPeekプロトコルです。[ 13 ]
参考文献
- ^ 「デバッグワーキンググループ」 MIPIアライアンス2019年6月7日閲覧。
- ^ 「デバッグのためのアーキテクチャ概要」(PDF)MIPIアライアンスバージョン1.2。2018年7月13日。2019年6月7日閲覧。
- ^ 「MIPI システムソフトウェア – トレース(MIPI SyS-T)」MIPI Alliance .バージョン1.0. 2018年4月. 2019年6月7日閲覧。
- ^ 「System Trace Macrocell」 . ARM Developer . 2019年. 2019年6月7日閲覧。
- ^ 「MIPI System Trace Protocol (MIPI STP)」MIPI Alliance .バージョン2.2. 2016年2月. 2019年6月7日閲覧。
- ^ "MIPI トレース ラッパー プロトコル (MIPI TWP)" . MIPI アライアンス。バージョン1.1。 2014 年 12 月。2019 年6 月 7 日に取得。
- ^ "MIPI パラレル トレース インターフェイス (MIPI PTI)" . MIPI アライアンス。バージョン2.0。 2011 年 10 月。2019 年6 月 8 日に取得。
- ^ 「CoreSightアーキテクチャの概要:高速シリアルトレースポート(HSSPT)」 ARM Developer 2019年。 2019年6月8日閲覧。
- ^ 「MIPI高速トレースインターフェース(MIPI HTI)」MIPIアライアンス。バージョン1.0。2016年7月。 2019年6月8日閲覧。
- ^ 「シリアルワイヤデバッグ」 ARM Developer 2019年6月8日閲覧。
- ^ 「デバッグおよびトレースコネクタに関するMIPIアライアンス勧告」。MIPIアライアンス。
- ^ 「MIPI Narrow Interface for Debug and Test (MIPI NIDnT)」MIPI Alliance .バージョン1.2. 2017年12月. 2019年6月9日閲覧。
- ^ a b「MIPI SneakPeek プロトコル (MIPI SPP)」 . MIPI アライアンス。バージョン1.0。 2015 年 8 月。2019 年6 月 9 日に取得。
- ^ "USB 用 MIPI ギガビット デバッグ (MIPI GbD USB)" . MIPI アライアンス。バージョン1.1。 2018 年 3 月。2019 年6 月 9 日に取得。
- ^ "IP ソケット用の MIPI ギガビット デバッグ (MIPI GbD IPS)" . MIPI アライアンス。バージョン1.0。 2016 年 7 月。2019 年6 月 9 日に取得。
外部リンク
- Schulz, Norbert (Intel Corporation) (2016年9月26日). MIPIデバッグ仕様がシステムソフトウェア開発にどのように役立つか. MIPI DevCon 2016. 2019年6月9日閲覧.