4

PCIe デバイス (Adlink PCIe 7300A 高速デジタル IO カード) 用の Linux ドライバーを作成しようとしています。

ドライバは通常のメモリ転送では問題なく動作しますが、カードのバス マスタリング機能を使用して、CPU メモリからデバイスの出力 FIFO バッファへのバッファの DMA 転送を開始しようとしても、まったく機能しません。

私は、この問題を数日ではなく、数週間単位で解決しようとしてきました。

どんな洞察でも本当に感謝しています。

ドライバーコード -- https://github.com/sbrookes/timing_driver_sdarn/blob/master/kernel_land/timing.c

デバイス データシート -- http://www.acceed.com/manuals/adlink/P7300A%20Manual.PDF

PLX 9080 PCI インターフェイス チップ データシート -- http://www.der-ingo.de/bin/milanhelp/PLX9080.pdf

少しの洞察にどれほど感謝しているかを説明することはできません。

ありがとうございました、

スコット

4

1 に答える 1

3

私は問題を解決したようです。DMA 転送を間違ったタイミングで中止し、転送を開始することさえできない、割り込みハンドラーに誤った条件があったようです。

深刻な「当たり前」の瞬間ですが、それを見つけるのにかなりの苦労がありました.

コメントのとおり、私の必死で SO を汚してしまったら申し訳ありません。善良な市民になる方法をまだ学んでいます。

上記のリンクされたコードが、プロジェクトが変更されても静的なままになるかどうか、またはそのリンクが最新バージョンを反映するかどうかはわかりません。基本的に、間違ったタイミングで転送を中止しないように注意してください。

于 2013-07-09T03:41:45.190 に答える