5 製品別サポート 5 DT10&DT-Storage 5 チュートリアル 5 応用編 5 DT10 使いこなし術 5 イベントID取得によるプロセス解析方法 5 「(拡張)イベントID出力ポイント挿入」方式による設定方法

チュートリアル

「(拡張)イベントID出力ポイント挿入」方式による設定方法

Non-OS/iTRON系OS向けのターゲット機器で使用する場合の設定方法を説明します。

イベントID出力ポイントは、イベントID値が12bit値となり、オプションUNITである「AnalogBox」でのデータ収集が可能です。
一方、拡張イベントID出力ポイントは、32bit値になります。
ターゲットのシステムが提供するプロセスやスレッドのIDが32bit値の場合は、拡張イベントID出力ポイントを使用します。
但し、オプションUNITである「AnalogBox」でのデータ収集、及び 高速テストポイント変換ができません。

1.サンプルドライバのダウンロード

対応OS 接続方式 言語 イベントID出力方式 ダウンロード
NonOS/iTRON GPIO 4bit C/C++ イベントID出力ポイント挿入
拡張イベントID出力ポイント挿入
ダウンロード

どちらのイベントID出力方式も同じドライバファイルを使用します。
イベントID出力を行う為に、ドライバを修正する必要はありません。ターゲット環境にドライバを実装してください。

2.DT10プロジェクト作成時の設定

使用するドライバのイベントID出力方式に合わせて、プロジェクト設定の「イベントID出力方式」を設定します。
「プロジェクト設定」ダイアログで、「イベントID出力ポイント挿入」、もしくは「拡張イベントID出力ポイント挿入」を選択します。

eventID-insert-p1

3.イベントID出力ポイントの挿入

イベントIDを出力する為の専用テストポイントをソースコードに挿入します。
ターゲットOSのタスクディスパッチャ処理などに挿入することになります。
OSの無い環境であれば、各タスクの先頭や割り込み関数などの先頭に挿入してください。

以下はFreeRTOSというRTOS環境において、イベントID出力ポイントを挿入した時の例です。
次に実行されるタスクID値変数 (pxCurrentTCB->uxTCBNumber) を指定して挿入しています。

/* listGET_OWNER_OF_NEXT_ENTRY walks through the list, so the tasks of the
  same priority get an equal share of the processor time. */

/* ここが次に実行されるタスクのエントリー処理 */
listGET_OWNER_OF_NEXT_ENTRY( pxCurrentTCB, &( pxReadyTasksLists[ uxTopReadyPriority ] ) );

__DtTestPointEventTrigger( __DtFunc_vTaskSwitchContext, __DtStep_4, pxCurrentTCB->uxTCBNumber );  ←ここに挿入

/* タスクの切り替え処理 */
traceTASK_SWITCHED_IN();

<イベントID出力ポイントの挿入方法>

DT10アプリのソースコードウィンドウ上からイベントID出力ポイントを挿入します。

  • ソースコードウィンドウ上で、タスクディスパッチする関数などの挿入したい位置で右クリック。
  • ポップアップメニューから「イベントID出力ポイントの挿入」を選択。
  • 以下のダイアログから、 直値指定または変数値を指定して、[OK]でクリック。

※使用するコンパイラに適した文字列を入力してください。(コンパイルエラーとなるような記述は避けてください。)

eventID-insert-p2

4.データ取得

イベントID出力ポイントが挿入されたソースコードをコンパイルし、ターゲットを動作させて、DT10でテストレポートを取得します。
イベントID出力ポイントによりトレースされたデータは、テストレポート上で、「ステップ」欄に「## EventTrigger」と表示されます。

eventID-insert-p3

5.解析方法

5-1.イベント定義の設定

イベントID に対し、名称(イベント定義)を付けることが可能です。イベント定義の設定は任意です。
イベント定義設定は、テストレポートの「イベント定義」欄や、イベントトレース、プロセス占有率スコープ、
関数遷移スコープといった機能に反映され、イベント遷移の解析をより分かりやすくします。

以下の手順で表示されるダイアログから設定します。

  • DT10アプリのメニュー > レポート解析 > イベントトレース > イベント定義 > イベント定義の設定

eventID-insert-p4

5-2.プロセス解析モードの有効化

この設定を有効にすることで、コアやイベントID毎に解析結果を表示できるようになります。

  • DT10アプリのメニュー > ツール > 環境設定を選択。
  • 「環境設定」ダイアログで、解析を選択。
  • 「プロセス解析モードを有効にする」をチェックON。

5-3.関数遷移スコープでのデータ解析

以下の手順で、解析結果が表示されます。

  • DT10アプリのメニュー > レポート解析 > 関数遷移スコープ

横軸が時間軸で、縦軸は コア > プロセス(イベントID) > 関数名 のツリーが表示され、
プロセスや関数単位の状態遷移が確認できます。

マクロ視点からミクロ視点まで、多角的に「見える化」することで、ソフトの動きを把握しやすくします。

さらに関数遷移スコープのグラフ上をダブルクリックすることでテストレポートの該当位置にジャンプしたり、
2つのカーソルで時間情報の確認もできます。

eventID-insert-p5

5-4.プロセス占有率スコープでのデータ解析

  • DT10アプリのメニュー > レポート解析 > イベントトレース > プロセス占有率スコープ
  • 「解析範囲指定」ダイアログで、解析範囲を指定して、「OK」をクリック。

横軸が時間軸で、各プロセスの占有率を折れ線グラフで表示します。
また、移動させたカーソル部分のタイミングにおける占有時間、占有率、最大・最小時間をリスト表示します。

負荷の高いプロセスを一目で確認できます。

関数遷移スコープと同様に、グラフ上をダブルクリックすることでテストレポートの該当位置にジャンプができます。