【TRACE32 Tips】FDX トレースの利用
Fast Data eXchange (FDX) を利用し、TRACE32 でトレースを行う方法を解説します。
FDX(Fast Data eXchange) について
Fast Data eXchange (FDX) は、ターゲットとホスト間で汎用的なデータの転送を可能にします。ターゲット側のプロトコル実装は、ターゲットアプリケーションに含まれます。
ローターバッハは、このターゲット側のモジュール実装例を、C ソースコードで提供しています。
ホスト側のアプリケーションは、TRACE32 API または、名前付きパイプを介して FDX によって送信されたデータを処理できます。TRACE32 は、送信されたデータをファイルとして読み書きすることもできます。
FDX トレース
FDX トレースは、FDX を利用した代表的なアプリケーションです。トレース API を介して、ターゲットのアプリケーションはトレースデータをホストに送信します。
TRACE32 では、他のTRACE32 トレースデバイスと同様に、FDX のデータストリームを解釈、トレースデータのハンドリングを実現しています。
提供ファイル
ターゲットアプリケーション用の FDX インターフェイスモジュールを、ヘッダーファイル t32fdx.h とソースファイル t32fdx.c で提供しています。また、FDX トレースに関連するモジュールは、fdxtrace.c で提供しています。
TRACE32 をインストールしたフォルダ下の、以下のフォルダに、上記のファイルがあります。
プロセッサコア毎に、異なるコードであることにご注意ください。
<TRACE32 インストールフォルダ>/demo/<processor_family>/fdx
ターゲットアプリケーションへの実装
ターゲットアプリケーションへの、FDX トレース機能の実装について紹介します。
初期化
FDX トレースを初期化するために、ターゲットアプリケーションで T32_Fdx_TraceInit() をコールします。
T32_Fdx_TraceInit();
測定用インスツルメント
トレースを記録するためには、関数 T32_Fdx_TraceData() をコールします。
void T32_Fdx_TraceData(int cycletype, void* address, unsigned long data)
cycletype:
データサイズ(バイト単位)とアクセスタイプ(リード、ライト、フェッチ)の情報を指定
address:
記録するデータのアドレス
data:
記録するデータの値を指定
cycletype は、式(データサイズ | (アクセスタイプ << 4)) の値を指定します。アクセスタイプは以下の値を指定します。
フェッチ:0x1
リード:0x2
ライト:0x3
例えば、32 ビットデータのライトアクセスの場合、cycletype の値は、0x34 (0x4 | (0x3 << 4)) を指定します。
以下は、関数 func8() のフェッチサイクルをトレース記録するコード例です。
T32_Fdx_TraceData(0x10, &func8, 0);
以下は、32ビットの変数 mcount へのライトサイクルをトレース記録するコード例です。
T32_Fdx_TraceData(0x34, &mcount, mcount);
FDX トレースの紹介動画
以下は、TRACE32 を利用した FDX トレースを紹介した動画です。併せてご覧ください。
関連ページ、ドキュメント
以下のフォルダに FDX 機能を説明したドキュメントがあります。併せてご参照ください。
<TRACE32インストールフォルダ>\pdf\app_fdx.pdf
上記ドキュメントは、以下のURL からも参照可能です。
https://www.lauterbach.com/pdf/app_fdx.pdf