« Spartan-6ボードをExcelから操作 | トップページ | Spartan-6LXTの内蔵PCIe EndPointの使い方を理解した »

2010.10.25

PCI Express転送テストアプリとデバイスドライバを更新

PCI Expressの転送テストアプリケーションを新しく作ってリリースしました。
また、デバイスドライバについても、軽微だけれども重要な変更を行いました。

さて、今までは、特電PCI ExpressボードにはDOS版のよくわからない転送実験ツールや、GUI版の粗末なツールを提供してきましたが、ようやくWindows版のわかりやすいツールを提供できるようになりました。

DMA転送の実験を行う場合は、こんな感じで
Tkpetestwin1

PIO転送の実験を行う場合は、こんな感じで
Tkpetestwin2

やりたいことが簡単に選べます。

このツールは速度も計測することができ、DMA転送はIN方向約110MB/sec、OUT方向約160MB/secが出ています。やはりUSBに比べると段違いに速いですね。
一方、PIO転送+CombinedWrだと、IN方向約7MB/sec、OUT方向約170MB/secが出ています。やはりDMAを使わないと遅いです。

さて、今提供しているPCIeのサンプルデザインでは、FPGAの内蔵メモリのBRAMを8kbyteしか実装していないので、8kバイト以上の転送を行うと、入出力データを比較したときにエラーとなります。でもエラーチェックをしなければBAR1のサイズ(65536バイト)までの転送ができます。

また、DMAの最大転送サイズは4Mバイトに制限しています。これ以上のサイズの転送をしようとするとエラーとなります。なぜこのサイズに制限したかというと、DMAを行うためにデバイスドライバの中で「共有バッファ」というのを取得していますが、このサイズがあまり大きいとシステムリソースを圧迫するからです。また、カーネルモードに入るときにあまり大きなサイズのバッファをぶらさげて入ることができないからです(巨大なサイズのページのロックができない)。そのため、1回の転送のサイズは4MBytesくらいが現実的だろうと判断しました。
使わないような巨大なサイズのDMA転送ができるようにしておくと、システムに負担がかかるので小さくしたというわけです。128MBytesとかのDMA転送は4MBytesを小分けにして実行すればよいのですから。

また、PCI Expressは転送の方向にINとかOUTという呼び方はしないのですが、本アプリケーションではUSBに倣ってこう呼ぶことにしました。もちろん、INというのはアドインカード→パソコン方向の転送、OUTというのはパソコン→アドインカード方向の転送です。

あと、おまけですが、デバッグに便利な各種の情報を見れるようにしました。
Tkpetestwin3


このツールはソースも公開しているので、汎用PCI Expressドライバの使い方のサンプルとしてもご利用いただけるかと思います。

ダウンロードはこちらからできます。

これからしばらくの間は、Sparatn-6の内蔵PCI Expressを開拓するつもりです。
ご期待ください。

|

« Spartan-6ボードをExcelから操作 | トップページ | Spartan-6LXTの内蔵PCIe EndPointの使い方を理解した »

コメント

コメントを書く



(ウェブ上には掲載しません)




« Spartan-6ボードをExcelから操作 | トップページ | Spartan-6LXTの内蔵PCIe EndPointの使い方を理解した »