WinDriverのサンプル、どこから改造する?(その1)

WinDriver サンプル

アプリのソースをスクラッチから書くことは少ないと思います。サンプルを改造したりして流用することからコーディング作業を始めるかと思います。多くのサンプルコードが提供されている WinDriver ですが、その解析と改造のヒントを伝授します。

WinDriver の開発ツールキットには多くのサンプルコードが付属します。標準サンプルに PCI_diag、USB_diag があります。基本的な動作確認のための診断アプリとして動作するレベルです。また、不具合発生時など、問題再現状況を開発元と共有するためにも用いられます。

その他特に PCI 向け、Xilinx DMA 用サンプル、Intel (Altera) Qsys 用サンプル、PLX 用サンプルなど、DMA テストが実行可能な実装がなされており、改造ベースとして有効なサンプルソースが提供されています。チップや FPGA デザイン側で既に決まっているレジスタや DMA 機能をテストすることができるため、それらのデバイスを実装したボードであれば、製作工数を格段に短縮することができます。

当然、DriverWizard で自動生成したコードでも同様に、改造ベースのサンプルにすることができます。

 

WinDriver サンプルの改造ポイント

上記のどれを改造ベースにするかまずはテスト使用、そしてコード解析(PCI 向けなら約 3000 ステップ、USB 向けなら約 1000 ステップ)、そしてどれを改造ベースにするか検討した上で決定することになるかと思います。そこで改造ポイントとしてのヒントです。ソースコードから PCI 版なら MenuMain() 関数、USB 版なら DeviceDiagMenu() 関数を探します。そしてこれをコメントアウト。この場所に実装を入れて(インプリメントして)テスト作業を進めるのがよいでしょう。

MenuMain() 関数は、サンプル的な機能をメニューから選択させてテストする機能がまとまっています。この MenuMain() 関数の前後では、ドライバーのオープン/クローズ、ターゲットデバイスのスキャン、デバイスのオープン/クローズが行われ、デバイス (レジスタ) へのアクセスに必要な準備/後処理が実装されております。ですので、MenuMain() をコメントアウトすれば、コードはスケルトンとなり、改造ベースとなります。MenuMain() の位置にレジスタへのアクセス処理を追加し、リード/ライトのテストをしてみることが最初のテストとなるかと思います。

下記は、標準サンプルの \samples\pci_diag のソースを doxygen で解析、main() 以下 WinDriver API(wdapiXXXX.dll に含まれる関数)がコールされるところまでを図解表示したものです。図を右クリックし、ローカルに保存すれば、お手元のビュアー等でフルサイズの画像を見ることができます。

 

なお、USB 版での DeviceDiagMenu() も同様で、MenuMain() の前後でデバイスアクセスに必要な処理がなされています。

上記をヒントに、まずは、自作ソースコードのアプリからのデバイスアクセスをお試しいただければと思います。


Jungo 社製品 WinDriver の詳細は今すぐこちらからチェック!

 

 

セミナーについての詳細は、こちらからご確認いただけます。

開催日以外でも随時セミナーを受け付けておりますので、 弊社問合せフォームからお気軽にご連絡ください。

 

 

タイトルとURLをコピーしました