問題タブ [pci-bus]
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.
linux - MMIO 読み取り/書き込みレイテンシ
MMIO の読み取り/書き込みレイテンシが異常に高いことがわかりました。誰かが私にいくつかの提案をしてくれることを願っています。
カーネル空間で、PCIe デバイスの BAR0 アドレスの 4 バイト値を読み取る簡単なプログラムを作成しました。デバイスは PCIe Intel 10G NIC で、Xeon E5 サーバーの PCIe x16 バスに接続されています。rdtsc を使用して、MMIO 読み取りの開始から終了までの時間を測定します。コード スニペットは次のようになります。
(end, init) 間の経過時間は 1us 未満であると予想しています。結局のところ、PCIe データ リンクを通過するデータはわずか数ナノ秒であるはずです。ただし、私のテスト結果は、MMIO PCIe デバイスの読み取りを行うために少なくとも 5.5use を使用していることを示しています。これが合理的かどうかは疑問です。コードを変更してメモリ バリア (rmb) をリモートにしますが、それでも約 5 us のレイテンシが発生します。
このホワイト ペーパーでは、PCIe レイテンシの測定について説明します。通常は 1us 未満です。www.cl.cam.ac.uk/~awm22/.../miller2009motivating.pdf MMIO アクセスの待ち時間を短縮するには、カーネルやデバイスなどの特別な構成を行う必要がありますか? または、以前にこれを行った経験がある人はいますか?
linux - SCSI のホスト、ID、チャネル番号を取得できない
ホスト、チャネル番号、ID 番号、SCSI デバイスの LUN を表示するプログラムを作成しています。
それに関する情報を提供します。しかし、私はCプログラムを介して印刷したい。ベンダー ID、デバイス タイプ、リビジョン レベルを取得していますが、 lun 、バス番号などは取得していません。
ioctl
lun、バス、ID 番号を取得するコマンドはありますか?
winapi - Windows の API による PCI 座標の取得 (ユーザー モード)
Windows c/c++ API (PnP Configuration Manager API など) を使用して、デバイスの PCI 座標 (バス/スロット/関数番号) を取得する方法はありますか? カーネル モードでそれを行う方法は既に知っています。ユーザー モード ソリューションが必要です。私のターゲット システムは Windows XP-32 ビットです。
linux - カーネルに PCI デバイス ID の再読み取り/再初期化を強制する方法は?
私のマシン (Linux カーネル 3.2.38 を実行) の起動時に、PCI デバイスのサブシステム ID (サブデバイスとサブベンダー ID) が間違っています。システムがまだ起動している間に PCI デバイスを物理的に抜き差しすると (つまり、ホットプラグ)、正しい ID が取得されます。
取得した間違ったサブデバイス ID とサブベンダー ID は、デバイスのデバイス ID とベンダー ID と同じであることに注意してください (以下の lspci 出力の最初の 2 行を参照してください)。
以下は、デバイスのホットプラグ前後のlspci -vvnnの出力です。
ホットプラグ前:
ホットプラグ後:
私の質問:デバイスをホットプラグせずに ID を修正する方法はありますか? たとえば、PCI バスの再スキャン/再列挙/再構成を実行するなどして、カーネルに PCI デバイス ID の再読み取りを強制しますか?
どんな助けでも大歓迎です。ありがとう。
PS。この問題は、UEFI 内部シェルで起動した場合でも存在するため、実際にはカーネル/ソフトウェアに関連していないことに注意してください。
PPS。この場合の PCI デバイスはMEN F206Nで、「私のマシン」はMEN F22P です。
c - sys/bus/pci/device/ ディレクトリを開けません
デバイスのリソース ファイルを読み込もうとしていますmmap
が、デバイス レジスタを読み込もうとしていますが、ファイルの場所のエラー プロンプトを開こうとすると、NO such file or directoryと表示されます。chmod 666 を使用してファイルのアクセス許可を変更しました。ファイルを開くために使用しているコード:
ファイルが存在し、cat ユーティリティを使用して読み取ることができます。
linux - Linux での PCI バス負荷測定
PCIバス(PCI-e)に複数のデバイスが接続されたLinux(3.12)システム(x86-64)があります。現在の状況と別のデバイスをバスに接続したときの PCI バスの負荷を測定して違いを確認したいのですが、方法がわかりません。これを行う方法はありますか?
c# - Adlink PCI-7250 イベントコールバック
デジタル入力のいずれかが高くなったときに PCI-7250 (データ取得カード) からイベントコールバックを取得する単純な C# を作成しました。これが私のコードです:
実行すると、実行時にいくつかの乱数を投げ続け、最終的にクラッシュします。EventType (DASK.DBEvent) と関係があると思います。マニュアルを読みましたが、DASK.DBEvent については何も言及されていません。 .
よろしければアドバイスお願いします。
linux - ユーザー空間からのLinuxでのpciデバイス情報へのアクセス
プログラムでユーザー空間から pci デバイス ツリー情報にアクセスしたいと考えています。ルート コンプレックスとそれに接続されているデバイスのように。どうすればよいか教えてください。
よろしく、 プラディープ
hardware-interface - PCI Express でデバイスを開けませんでした。PCIE_open に失敗しました
Intel DE2i-150 ボードを使用しており、yocto os を搭載した Intel atom プロセッサと Nios II プロセッサを搭載した fpga を搭載しています。yocto から fpga ボードにアクセスしようとしています。最初は通信できましたが、他のインストールが原因で PCIE_open が機能せず、「Counld not open device」というエラーが表示されます。このフレーズは、私のコードのどこにも定義されていません。ドライバーコードも使用しましたが、同じエラーが発生しました。以前は動作していました。何が起こっているのかわかりません。これに関して私を助けてください。