ILTiming.exe

このツールは、ISR および IST の呼び出し時間を決定します。既定では、システム チック割り込みがテスト割り込みベクタとして ILTiming.exe で使用されます。プラットフォームによっては、未使用の使用可能なタイマがないものもあります。

ISR および IST の割り込み呼び出し時間を決定するために、指定したチック間隔で SYSTINTR_TIMING を返すように、ILTiming.exe によってタイマに指示されます。ILTiming.exe は SYSINTR_TIMING 割り込みイベントで待機するため、IST になります。ILTiming.exe は SYSTINTR_TIMING メッセージを受け取るたびに、現在の時間を取得します。

ILTiming.exe は、KernelIoControl 関数を呼び出して、dwIoControlCode 変数が IOCTL_HAL_ILTIMING の状態の I/O コントロールを作成します。ILTiming.exe は、OAL 内でテストの起動および停止を行い、この I/O コントロールから ISR のタイミングを取得します。この ISR のタイミングは、%_WINCEROOT%\Public\Common\Oak\Inc\Pkfuncs.h 内で定義されます。この I/O コントロールのインターフェイスは、%_WINCEROOT%\Public\Common\Oak\Inc\Iltiming.h にあります。

ILTiming.exe は、IOCTL_HAL_ILTIMING の状態で KernelIoControl を呼び出すときに、ILTIMING_MESSAGE 構造を渡します。

OAL は、wMsg メンバの値をベースにして構造を埋めます。wMsg には、次のメッセージのいずれかが設定されます。

  • ILTIMING_MSG_ENABLE

    OAL は、システム チックをフックして、SYSINTR_TIMING 割り込みイベントを発生させます。構造体のフィールドは更新されません。

  • ILTIMING_MSG_DISABLE

    OAL は、システム チックを SYSINTR_TIMING 割り込みイベントの発生からアンフックします。構造体のフィールドは更新されません。

  • ILTIMING_MSG_GET_TIMES

    OAL は、pfnPerfCountSinceTick を除いたすべての構造体のフィールドを埋めます。

  • ILTIMING_MSG_GET_PFN

    OAL は、pfnPerfCountSinceTick メンバ内の PerfCountSinceTick 関数へのポインタを返します。この関数は、オーバーヘッドを最小にするため、カーネル モードでアプリケーションから直接呼び出されます。

ほとんどの場合は、ILTiming.exe の測定の間にタイマが再プログラムされないように OEMIdle 関数を設定します。ILTiming.exe には OAL に対して特別な修正が必要ですが、カーネルに対しては修正は必要ありません。ILTiming.exe は、どのサンプル プラットフォームおよび構成でも実行できる必要があります。

ILTiming.exe ツールでは、次のコマンド ライン パラメータを使用できます。

iltiming [-i0] [-i1] [-i2] [-i3] [-i4] [-sp] [-p priority] [-ni] 
[-ncs] [-t interval] [-n interrupt] [-all] [-o file_name] [-h]

パラメータ

  • -i0
    アイドル スレッドはありません。-ni パラメータ
  • -i1
    アイドル スレッド タイプ 1 を実行します。
  • -i2
    アイドル スレッド タイプ 2 を実行します。
  • -i3
    アイドル スレッド タイプ 3 を実行します。
  • -i4
    アイドル スレッド タイプ 4 を実行します。
  • -sp
    セカンダリ プロセスを開始します。
  • -p priority
    IST の優先順位を指定します。既定値は 0 (最高値) です。
  • -ni
    優先順位が設定されたアイドル スレッドはありません。既定では、優先順位が設定されたアイドル スレッドはスピンされます。このパラメータは、-i0 パラメータと同等です。
  • -ncs
    割り込みが発生した後に、キャッシュは同期化されません。既定では、割り込みが発生した後で、キャッシュがフラッシュされます。
  • -t interval
    SYSINTR_TIMING の間隔 (ミリ秒単位のクロック チック) を指定します。既定値は 5 です。
  • -n interrupt
    割り込み回数を指定します。既定値は 10 です。
  • -all
    すべてのデータを出力します。既定では、概要のみが出力されます。
  • -o file_name
    ファイルに出力します。既定では、デバッガ メッセージ ウィンドウに出力されます。
  • -h
    ヘルプ画面を表示します。

解説

IST を実行するときに、-p パラメータを使って 256 のレベルから優先順位を選択できます。既定では、アプリケーションが実行される前に、キャッシュがフラッシュされます。CacheSync 呼び出しを無効にするには、-ncs パラメータを使います。以下の 4 つのアイドル スレッド タイプを使用できます。

バックグラウンドでアイドル スレッドが実行されているときは、非プレエンプティブなカーネル呼び出しでカーネルが使用可能になります。ただし、この呼び出しは、IST が実行される前に終了する必要があるため、IST の呼び出し時間が長くなります。

  • アイドル スレッド 1

    1 つのスレッドがスピンします。

  • アイドル スレッド 2

    1 つのスレッドがスピンします。 (THREAD_PRIORITY_IDLE) を呼び出します。

  • アイドル スレッド 3

    2 つのスレッドが、 と を 10 秒間のタイムアウトで交互に実行します。

  • アイドル スレッド 4

    2 つのスレッドが、SetEventWaitForSingleObject を無制限のタイムアウトで交互に実行します。

ISR の間隔は、-t パラメータで設定されます。次のコマンド ラインを実行すると、1/10 チックごとに SYSINTR_TIMING が返されるように、ISR のシステム チックが設定されます。

  iltiming -t10

ILTiming.exe のソース コードは、Platform Builder に組み込まれています。詳細については、「」を参照してください。