問題タブ [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.
pci-e - PCIEエンドポイントからエンドポイントへのトランザクション
PCIEスイッチの背後にある2つのPCIEエンドポイントのエンドポイント間トランザクション(ピアツーピアトランザクション)がルートコンプレックスに転送されないことを明確にしたいと思います。
私はグーグルで調べて、エンドポイント#1からのトランザクションがエンドポイント#2に割り当てられたルートポートであるPCIEアドレス空間をターゲットにしている場合、スイッチはトランザクションをエンドポイント#2が配置されているダウンストリームポートに転送することを理解しました。
この点を誤解している場合は訂正してください。この転送機能は、PCIE仕様または実装固有に従って必須ですか?
wdk - IoGetDevicePropertyData() は STATUS_OBJECT_NAME_NOT_FOUND を返します
WinDDK 7600.16385.1 と OSR の ddkbuild.cmd を使用して、PCI デバイス用の機能している KMDF ドライバーを更新しています。WLH をターゲットにして、Win7 x86 および x64 でテストしています。
DEVPKEY_Device_LocationPaths プロパティを取得しようとしています。
デバイス マネージャーの [デバイス プロパティの詳細] タブでは、[場所のパス] に期待される値が表示されます...
...しかし、EvtDriverDeviceAdd ハンドラーから IoGetDevicePropertyData() を呼び出す ...
... 常に STATUS_OBJECT_NAME_NOT_FOUND を返します。
私が試してみました ...
他の DEVPKEY_Device_* 値に対して IoGetDevicePropertyData() を呼び出します。結果は同じです。
EvtDevicePrepareHardware ハンドラーで IoGetDevicePropertyData() を呼び出します。結果は同じです。
WdfDeviceWdmGetPhysicalDevice() を呼び出して PDO を取得します。結果は同じです
WdfDeviceAllocAndQueryProperty()。正しく動作しますが、必要な情報が提供されません。
WdfFdoQueryForInterface( GUID_PNP_LOCATION_INTERFACE )。正しく動作しますが、現在のノード (「PCI(0400)」など) しか提供しません。
IoGetDevicePropertyData を呼び出すサンプル コードを検索しています。Windows CDROM ストレージ クラス ドライバーのサンプルを見つけましたが、まだ試していないことは何もしていないようです。
それで...何が足りないのですか?
c - ドライバを使用したPCIExpress検証
PCに接続されたPCIExpressデバイスのテストにWindriverJungoを使用しています。8/16/32/64ビットモードでメモリの読み取り/書き込みが可能で、ボードの応答は非常に良好です。しかし、私の疑問は、PCI Expressの仕様によれば、128バイトから4096バイトまでのTLPパケットを送信できるということです。ドライバーを使用してこの転送を実現するにはどうすればよいですか。現在、8バイト(64ビットモード)のデータのみを転送します。送信するデータを増やすと、データが8バイトのパケットに分割されて送信されます。私の疑問を解消し、WindowsまたはLinuxでのPCIExpressの他のドライバーオプションを提案してください。
interrupt - PCIe MSI アドレス レジスタ
私が正しく理解している場合、MSIホストドライバーはターゲットMSIアドレスを相対リモートレジスターに書き込む必要があります。MSI アドレス レジスタ、MSI Config レジスタなどを取得するにはどうすればよいですか? この問題について説明していただけますか?
vb.net - VB.net 経由で VGA バス タイプを取得します。
VB.net 経由で VGA バス タイプ (AGP、PCI、PCI-e...) を取得するにはどうすればよいですか?
これは、コンピューター内のビデオカードを返します: SELECT Name, PNPDeviceID FROM Win32_VideoController
これらのビデオ カードからバス タイプを取得して、PCI、PCI-e、または AGP をコンピュータに接続するにはどうすればよいですか?
windows - PCIE to Serial Windows ドライバーを知識ゼロで書き込むのにどれくらいの時間がかかりますか?
割り込み、連続バッファー DMA、および PC から PCIE への単純な読み取り/書き込み要求を使用して、PCIE 用のシリアル ドライバーを作成する必要があります。ドライバーに関する知識はなく、PC アーキテクチャに関する知識はほとんどありません。平均してどれくらいの時間がかかりますか?
linux-kernel - mmap() は write() copy_form_user() より遅いのはなぜですか?
ユーザー空間からドライバーに大きなデータ ブロック (~6MB) を転送する必要があります。ドライバーでは、pci_alloc_consistent() を使用して、ブロックごとに 2 つの 3MB チャンクを割り当てます。次に、vm_insert_page() を使用して、各ブロック (つまり 2 つのチャンク) を単一の vma に mmap() します。これにより、ユーザー空間は、mmap した後に各ブロックを読み書きできます。動作しているように見えますが、パフォーマンスは受け入れられません。
また、ドライバの pci_alloc_consistent() によって割り当てられたメモリへの書き込み/メモリからの読み取りの別の方法も実装しました。ユーザー空間から write() を使用してから、ドライバーで copy_from_user() を使用して、ブロック内の各チャンクのコンテンツを上記のメモリに移動します。私は読み取りのために反対を行います。
最初のアプローチは少なくとも 2 ~ 3 倍遅く、CPU の使用量が最大 40% 多いことがわかりました。2 番目のケースで追加のバッファー コピーを導入すると、処理が遅くなると予想しました。しかし、そうではありませんでした。
x86 64 ビット プラットフォーム、カーネル 2.6.* および 3.* でテストを実行しました。
上記の結果は意味がありますか?はいの場合、誰かが何が起こっているかについての背景を説明してもらえますか?
ありがとう。