テクニカル ドキュメント #105



Doc ID: 105
製品: WinDriver
Version:  --

DriverWizard で、PCI 割り込みをリスニング

PCI はレベル センシティブな割り込みを使用します。割り込みを受信するとすぐにカーネルで検知およびクリアします。このため、WinDriver は割り込みステータス レジスタを定義する必要があり、割り込みをクリアするために read/write する必要があります。これは念のために行うことであり、検知されないレベル センシティブな割り込みで、PC がハングする可能性があります。

DriverWizard を使用して、PCI 割り込みをリスンするには、以下のステップを行ってください:
  • 割り込みステータス レジスタの定義:
    DriverWizard の [Registers] タブから、[New] を選択して、新しいレジスタを定義します。レジスタの名前、場所 (例、BAR へのオフセット)、サイズおよびアクセス モード (read/write) を指定します。
    割り込みの検知情報は、ハードウェアの仕様に依存します。このため、デバイスのデータに関しては、ハードウェアの仕様書を参照してください。

  • カードの割り込みに対して、割り込みステータス レジスタの割り当て:
    割り込みステータス レジスタを定義後、[Interrupts] タブに行き、カードの割り込みに対して定義した割り込みを以下のように割り当てます:
    1. 割り込みを選択し、[Edit] ボタンをクリックし、[Interrupts Information] ダイアログ ボックスを表示します。
    2. [Access Register] ボックスでドロップ ダウン リストから定義したレジスタを選択し、割り込みの検知に必要な追加情報を入力します。例、read/write モードと割り込みを検知/クリアするためにステータス レジスタへ書き込まれるデータ。WinDriver v5.20 以降、単純に、[Interrupt Information] ウィンドウで [More] ボタンをクリックすることによって、割り込み対して、複数のコマンドを定義できます。
    3. 割り込みを 'Level Sentitive' と定義し、'Shared' ボックスをチェックしてることを確認してください (一般的に、PCI 割り込みを共有します)。
[[Interrupt Information] ダイアログ ボックスで、[Help] ボタンをクリックして、この問題の説明を参照してください]。

これで、DriverWizard を使用して、[Interrupts] タブで、[Listen to Interrupts] ボタンをクリックし、ハードウェアに割り込みを発生させて、カードに対する割り込みをリスンできます。受信される割り込みは、[Log] ウィンドウに出力されます。割り込みのリスンを停止するには、[Interrupts] タブで、[Stop Listen to Interrupts] ボタンをクリックしてください。

詳細は、WinDriver のユーザー マニュアルを参照してください。