見出し画像

【TRACE32 Tips】FDX トレースの利用

Fast Data eXchange (FDX) を利用し、TRACE32 でトレースを行う方法を解説します。

FDX(Fast Data eXchange) について

Fast Data eXchange (FDX) は、ターゲットとホスト間で汎用的なデータの転送を可能にします。ターゲット側のプロトコル実装は、ターゲットアプリケーションに含まれます。
ローターバッハは、このターゲット側のモジュール実装例を、C ソースコードで提供しています。

Fast Data eXchange

ホスト側のアプリケーションは、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