問題タブ [pci-e]
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.
fpga - PCIe ボードを (再) プログラミングするための PCIe JTAG
PCI バスに JTAG ワイヤ (つまり、TCK TDI TDO など) があることに気付きました。その JTAG を使用して fpga ベースの PCIe デバイスを再プログラミングする方法はありますか? (fpga の JTAG が PCI ワイヤに接続されていると仮定します)。
ありがとうミケーレ
編集: -1 が表示されているので、理解できなかったのかもしれません...状況をよりよく説明しようと思います。Terasic DE5 (Stratix V FPGA) PCIe ボードがあり、実際には PCIe バスの JTAG "ワイヤ" が FPGA に配線されています。ボードにはんだ付けされた JTAG ポートがあるのは事実ですが、機械的な理由からアクセスして使用するのは困難です。私の質問は、BLASTER でできるように、PCI ピンを使用して FPGA をプログラムすることは可能ですか? もしそうなら、PCIe JTAG プログラミングをサポートする Linux インフラストラクチャは何ですか? 機会がない場合、誰かが私に理由を説明できますか?
windows - 接続されているPCI-Expressをキャプチャし、システムでエミュレートします
デバイスが接続されているときにデバイスの状態をキャプチャし、Windows でエミュレートする方法はありますか? ソフトウェアを動作させるためにスロットに存在する必要があるいくつかの PCI Express デバイスを購入しました。しかし、スロットが 1 つしかなく、ソフトウェアが完全に機能せず、スロットで別の 2 枚のカードを探しています。何か案は?ありがとう!
linux - Linux デバイス ドライバーの DMA メモリ バッファーが PCIe ハードウェアの順序で認識されない
Xilinx Virtex 6 PCIe カスタム ボード用のデバイス ドライバーを開発しています。DMA 書き込み (ホストからデバイスへ) を実行すると、次のようになります。
ユーザー空間アプリ:
カーネル空間:
デバイス pcie TLP ダンプ (ザイリンクス コアの後にロジック アナライザーで取得):
現在、この明らかなメモリ順序付けエラーは高い確率 (0.8 < p < 1) で発生し、順序の不一致は転送のさまざまなランダム ポイントで発生します。
編集:上記のポイント c4 は、メモリがカーネル ドライバーによって正しい順序で埋められていないことを示していることに注意してください (メモリ コントローラーは TLP を連続したメモリで埋めていると思います)。キャッシュラインのサイズである 64B は、キャッシュ操作に関係している可能性があります。
カーネルバッファのキャッシュを無効にすると、
エラーは引き続き発生しますが、めったに発生しません (p < 0.1 で、転送サイズによって異なります)。
これは、i7-4770 (Haswell) ベースのマシン (3 つのボードを備えた 3 つの同一のマシンでテスト済み) でのみ発生します。カーネル 2.6.32 (RH6.5)、ストック 3.10.28、ストック 3.13.1 を試してみましたが、同じ結果でした。
i7-610 QM57 ベースのマシンと Xeon 5400 マシンでコードとデバイスを試してみましたが、問題はありませんでした。
どんなアイデア/提案も大歓迎です。
よろしくお願いします
クラウディオ
c - VxWorks で PCIe 領域をマップするにはどうすればよいですか?
これは私の最初の投稿です :) 私は VxWorks 6.9 と Intel Sandy Bridge ボードを使用しています。アプリケーションで PCIe メモリ領域をマップする方法を知りたいです。PCIe メモリ領域はグラフィック メモリの一部であり、その物理アドレスは 0x80000000 です。
仮想アドレスを返さない vmMap 関数を試しています。その場合、仮想アドレスを物理アドレスと同じ値に設定していますが、それが良い動作かどうかはわかりません。物理アドレスから仮想アドレスを取得するにはどうすればよいですか? 関数が存在しない場合、使用する必要がある仮想アドレスは何ですか?
アプリケーションで領域をマッピングしたら、この領域へのアクセスをベンチングします。関数 vmStateSet を使用してキャッシュの状態を変更しようとしていますが、設定できるのは COPYBACK、WRITETHRU、および DEFAULT のみです (他のキャッシュ値の設定は失敗します)。すべてのキャッシュ状態でスループットが低下しています。Intel Sandybridge では、MMU をライト コンバインに設定することができます。VxWorks でそれを行うにはどうすればよいですか?
これは私がこれまでに試したことです:
ご協力ありがとうございました !!
c - ubuntuのPCIカードのeepromの読み取り、書き込み、更新
ubuntuでc言語を使用して、PCIネットワークカードでeepromのメモリアドレスを読み取り、書き込み、および更新する方法を見つけようとしています。
始めるために正しい方向に向けてください。ありがとうございました
gpu - デバイス間でデータを直接コピー
デバイス (GPU、NIC、ストレージなど) 間でグローバル IO 空間を実現する可能性を探っています。これは、このスレッドで尋ねられた質問 - 2 つの PCI デバイス間の直接通信- に要約される可能性があります。
メモリ領域が固定され、nvidia_p2p_* 呼び出しを使用して物理アドレスが取得される Nvidia GPUDirect を読んでいます。GPU の物理アドレスを使用して、データ転送用のサードパーティ デバイスの DMA コントローラーをプログラムする方法を正確に理解できません。CPU メモリ空間とは異なり、GPU メモリが表示されないという事実に混乱しています (これは、dma コントローラーのプログラミングに関する知識が乏しいためかもしれません)。これに関する指針は本当に役に立ちます。
また、多くの PCI デバイスは PCI BAR の観点からメモリ領域を公開します (たとえば、GPU は 256M のメモリ領域を公開します)。この BAR メモリ領域がマップされるデバイスの物理アドレスを知る方法はありますか? BAR メモリ領域と、nvidia ドライバーを介して CUDA ランタイムに割り当てられたメモリとの間にオーバーラップはありますか?
前もって感謝します。