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

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() の位置にレジスタへのアクセス処理を追加し、リード/ライトのテストをしてみることが最初のテストとなるかと思います。

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

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


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

【9月 11日 (火)】開催決定! WinDriver PCI 向け製品説明会

WinDriver の導入をご検討いただいているお客様、既に購入され設計や開発段階のユーザー様を対象に WinDriver の製品説明会/相談会を開催いたします。WinDriver で作成した FPGA ボード用ドライバでの DMA 転送のデモ、デジタル署名の説明を行います。
セミナー詳細は、こちらからご確認ください。