問題タブ [pci]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
io - FPGA ベースの PCI IO カードの dma
私はメサエレクトロニクス5i20 PCIカードを持っています。PC 上のデータを取り込み、カード上の FPGA に送信し、同様にカード上の FPGA から PC にデータを読み込むアプリケーションが提供されます。
PCI は 33MHz のデータ転送をサポートします。単純な for ループを使用して、FPGA との間でそれぞれデータを送受信できます。しかし、DMA の概念を使用して、ファイル データを読み取り、データのいくつかのチャンクを PCI 経由でカードに直接送信する方法を教えてください。
よろしく
c - 読み取り/書き込み原子性はマルチコンピューターのメモリに保持されますか?
私は、2 台のコンピューターが 32 ビット PCI バスを介して同じメモリにアクセスするマルチコンピューター環境で作業しています。
最初のコンピューターは 32 ビット int にのみ書き込みます。
*int_pointer = number;
2 番目のコンピューターは、32 ビット int からのみ読み取ります。
number = *int_pointer;
OS/CPUともに32bitアーキテクチャです。
PCI 搭載のコンピュータは Intel ベースです。
PCI カード上のコンピュータはパワー PC です。
私が心配しているケースは、読み取りコンピューターが変数を読み取ると同時に書き込み専用コンピューターが変数を変更し、読み取りコンピューターに無効なデータが発生する場合です。
メモリ内の同じ位置への読み取り/書き込みの原子性が複数のコンピューターで保持されているかどうかを知りたいです。
もしそうなら、以下は競合状態を防ぎます:
書き込みは 16ms* ごとに行われ、読み取りはランダムに行われることを保証できます。
*両方のコンピューターのタイマーが異なるため、時間はずれます。
memory-management - pci_alloc_conssitent を使用してメモリを割り当てるときに警告メッセージが表示される
64 チャンクで整列された4Kの128K メモリを割り当てる必要があります。割り当てられたものとして使用する Currentylには、 DMA 機能が必要です。これを行うと、以下の警告メッセージが表示されます。これは私のリクエストが失敗したことを意味しますか?pci_alloc_consistent()
phy_addr
私が読んだように、128Kpci_alloc_consistent()
を超えるメモリを割り当てることができるはずですが、何ができるかを見つけることができませんでした。ここで何がうまくいかないのか教えてください。
c# - マザーボードの PCI(e) スロットにプラグインされている PCI デバイス (存在する場合) を特定します。
多くの Windows XP ワークステーションでハードウェア監査を実行するプログラムを C# で作成しています。
PCI バス (マザーボードに組み込まれている) を使用するオンボード デバイスではなく、マザーボード スロットを介して接続された実際のカードである PCI デバイスを特定する必要があります。
さまざまな WMI クラスを使用して、すべての PCI バスを使用するすべてのデバイスを正常に一覧表示できますが、オンボードのものとスロット経由で接続されているものを示すものはありません。
情報の取得方法や情報源 (Pinvoke、WMI、レジストリなど) が信頼できるものである限り、私はこだわりません。
ありがとうございました!
memory - Linux で、(デバッグ目的で) 一部の物理メモリを検査できるユーザー ランド アプリを作成しようとしています。
一部の物理メモリを検査できるユーザー ランド アプリを作成しようとしています (デバッグ目的で)。
(w/ CONFIG_STRICT_DEVMEM=n
) OS をクラッシュさせます。
関数ioremap
、phys_to_virt
、およびphys_to_page
が私のディレクトリに存在しません/usr/include
。手順を調査して試しましたmake headers_install
が、関数はまだ usr/include ディレクトリに入りません。私の知る限り、ユーザーランドのアプリでは利用できないことを意味します。ユーザー空間アプリから物理メモリにアクセスする方法を知っている人はいますか? 参考までに、私が読み取ろうとしている物理アドレスはlspci -v
、「memory at」行で実行して得た PCI BAR です。
linux-kernel - Linux カーネル空間から PCIe カードへの DMA
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
少しの洞察にどれほど感謝しているかを説明することはできません。
ありがとうございました、
スコット