問題タブ [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.

0 投票する
1 に答える
2216 参照

c# - .NET で PCI-7250 NuDAQ にアクセスする

.NET を使用して PCI-7250 NuDAQ カードを使用してリレーをオンにしたいと考えています。

有効にするVBのコードは次のとおりです。

オフにするには:

これを C# コードに移行する必要があります。誰でもこれで私を助けることができますか?

0 投票する
2 に答える
1723 参照

bash - awkスクリプトにパイプする方法

私はこのawkスクリプトを持っています:

sudo lspci -vvvこのスクリプトに常にパイプする構文はありますか?sudo lspci -vvv|./checkpciスクリプトを実行するたびに入力する必要があります。最初のスクリプトを起動するために2番目のスクリプトを作成できることは知っていますが、それは面倒だと思います。そのための適切な方法を知りたいと思います。

余談ですが、グラフィックカードがクラッシュする問題があり、一部のデバイスでUncorrErrフラグが表示されていますが、これが何を意味するのか、またはさらにトラブルシューティングする方法についてのリファレンスはありますか?今は、このスクリプトを定期的に実行して、エラーがlspciにいつ表示されるかを確認し、時間の相関関係があるかどうかを確認します。

0 投票する
1 に答える
1609 参照

linux-kernel - 64 ビット Linux ホストから 64 ビット pcie カードへのアドレス割り当て

64 ビットの Linux ホストで 64 ビットの PCI Express カードを使用しています。問題は、バーは 64 ビットですが、常に 32 ビットのアドレス範囲にあるアドレスを取得することです。つまり、BAR の上位 32 ビットは常にゼロです。

実際の 64 ビット アドレスを使用するよう強制するにはどうすればよいですか? カーネルが pci デバイスを列挙できるように、ブート時の引数で BIOS 列挙をオーバーライドして強制しようとしましたが、BIOS と同じ結果になります。

Linux は実際の 64 ビット アドレスをサポートしていませんか?

0 投票する
2 に答える
2349 参照

dos - プラグアンドプレイ BIOS によるリソース割り当て

プラグ アンド プレイ BIOS 仕様によると、PnP BIOS を使用している場合、ハードウェアを構成できます。

これは、BIOS がすべてのデバイスのリソース要件を読み取り、それらを構成する (それらにバス リソースを割り当てる) ことを意味します。

PnP は、マザーボードに組み込まれている/統合されているデバイスに常にリソースを割り当てます (つまり、I/O またはメモリ アドレスと irq を割り当てます)?

PnP BIOS (つまり、$PnP 構造が存在する) は、mobo (つまり、mobo に組み込まれている/統合されている)およびPCI 拡張カードに存在するすべてのデバイスに常にリソース (I/O およびメモリ アドレス) を割り当てます。

BIOS は非組み込みデバイス (つまり、mobo に組み込まれていないデバイス) を「構成」する方法を知らない可能性があり、mobo 自体に組み込まれている/統合されているデバイスのみを構成しますが、アドレス (I/O およびメモリ) を割り当てる必要があります。 DOS のような非 PnP OS を使用する場合の競合を避けるための irq。

私の質問は:

PnP BIOS は、POST 中、つまり OS ブートローダーに制御をロードして転送する前に、I/O、メモリ アドレス、および irq をPCI 拡張カード デバイスに割り当てる必要がありますか? すべての PnP BIOS に当てはまりますか?

[プラグアンドプレイ OS] オプションが [いいえ] に設定されているとします。つまり、PnP OS はなく、DOS のような非 PnP OS があることを BIOS に伝えました。

一部の BIOS には、このオプションがありません。リソースは常にすべてのデバイス (つまり、組み込みデバイスと拡張スロット上のデバイスの両方) に割り当てられますか?

2012 年 8 月 1 日の更新:

PnP BIOS 仕様 v1a の「システム BIOS POST 要件」というタイトルのセクション 2.1 には、次のように記載されています。

(この投稿に関連する 3 つのポイントのみを説明しました。(*) でマークされた情報は、標準のステートメントの私の解釈です。)

プラグ アンド プレイの目標を達成するために、システム BIOS POST は、以下に示す要件を達成する責任があります。

  1. システム BIOS に認識さているすべての「静的」デバイスの構成:

    最低限」、これにはシステム ボード デバイスが含まれます。また、「プラグ アンド プレイ ISA カード」、EISA、ISA、PCI、または利用可能なその他のスタティック バス アーキテクチャのいずれかにあるデバイスも「含めることができます」 。

    *事実上、上記のステートメントは、任意の静的バス (PCI、ISA、または EISA など) 上のシステム ボードに「組み込まれている/統合されている」デバイスは、BIOS によって「構成されなければならない」ということを示しています。 * システム BIOS プログラマーは、 moboに組み込まれたデバイスをシステム設計の一部として構成するための規定を組み込んでいる必要があります。

    これには、「PCI/ISA/EISA カード スロットに取り付けられたカード」も含まれますか?

  2. BIOS POST リソース アービトレーション: システム BIOS は、システム リソースの使用状況を認識する必要があります。ランタイム サービス (後のセクションで説明) を通じて提供される情報と、システム BIOS が認識しているリソース情報を使用することで、重大なリソースの競合を回避できます。「競合するデバイスを無効にしてオペレーティング システムをロードする方が、リソースの競合やシステム障害の可能性を引き起こすよりはましです。」

    *これは、mobo または ISA/EISA 拡張カード スロットに組み込まれている/統合されている ISA/EISA デバイスのようです。 PCI デバイスのリソースは、I/O (またはメモリ) アドレス割り当ての両方に関して競合することはできないため(アドレスはPCI デバイス用に配線されていないため、競合しないアドレスを割り当てるために BIOS の「手」にかかっているため)。および irq 割り当て (becoz PCI 割り込みは設計により共有可能です。)、したがって、これは、「すべての」PCI デバイス (組み込みまたは非組み込み) が初期化/割り当てられたメモリまたは I/O アドレスと irq 割り当てであることを意味します。

  3. プラグ アンド プレイおよび非プラグ アンド プレイ オペレーティング システムの両方のサポート: プラグ アンド プレイ システムの BIOS POSTは、「両方」のプラグ アンド プレイ対応および「非プラグ アンド プレイ」オペレーティング システムで動作するようにシステムを構成する必要があります。 system.* 非プラグ アンド プレイ環境では、システム BIOS 」または適切なシステム ソフトウェア (デバイス ドライバ) の「いずれか」が「すべての」デバイス (プラグ アンド プレイ ISA カード、PCI デバイスなど) を構成する必要があります。これにより、すべての環境が「標準の PC 互換システムとまったく同じようにロード」できるようになります。ただし、プラグ アンド プレイ環境では、システム BIOS はオペレーティング システムを支援して、システム ボード デバイスのランタイム構成や、システム ボード デバイスが変更されたときのイベント認識などの機能を実行できるようになりました。

*仕様のこれら 3 つのステートメントはすべて、非 PnP OS (DOS など) を起動する場合、システム BIOS が「すべて」を構成する (または、少なくともアドレスと irq を割り当てる) 必要があることを示しているようです。マザーボード (mobo) に組み込まれている/統合されているかどうかにかかわらず、PCI デバイス。ISA および EISA デバイスの場合、BIOS はこれらの ISA/EISA デバイス (組み込みまたは非組み込みにかかわらず) のリソースを有効化/割り当ててはなりません。これにより、競合するリソース割り当てが発生します。

仕様の上記のステートメントから結論を下すのは正しいですか。つまり、「BIOS が非 PnP OS を起動する必要がある場合は、システム内の「すべての」PCI デバイス (mobo または PCI 拡張カードスロットに埋め込まれているかどうか) を有効にして (つまり、リソースを割り当てて) 、それらが利用できるようにする必要があります。 OSおよびアプリケーションプログラムで使用するために」?

2012 年 8 月 4 日の更新:

Linux Device Drivers 3rd ed の第 12 章をご覧ください。. 著者は、多くの箇所で、I/O またはメモリ アドレスと IRQ の割り当ては、Linux カーネルが実行を開始する時点で BIOS によって既に行われていることを明示的に言及しており、Linux カーネルは必要に応じて割り当てを調整する場合があります。

私たちが到達しようとしていることについて言及している別のリファレンスかもしれません。

0 投票する
1 に答える
2273 参照

windows - Windows での PCI デバイス メモリ レジスタの読み取り

システムの PCI バス上にある AHCI コントローラの HBA メモリ レジスタを読み取る必要があります。システム内のすべての PCI デバイスの構成スペースを読み取ることができるドライバーがあります (ReadConfig および WriteConfig を使用)。これにより、AHCI デバイスの構成スペースの最後の BAR である ABAR コンテンツを取得できます。ここで、これらのメモリ レジスタの値を読み取る必要があります。誰もこれを行う方法を知っていますか? PCITree はこれを行うことができるので、これが可能であることはわかっています。

私はドライバー開発が初めてなので、どんな助けでも大歓迎です... :)

0 投票する
2 に答える
5566 参照

bios - PCIパラレルポートのベースアドレスの特定

DOS用のアプリケーションを開発しています。パラレルポート経由で通信する必要があります。

現在、どの PCI 関数の BAR (ベース アドレス レジスタ) にそのパラレル ポートのベース アドレス (つまり、データ ポート アドレス) が含まれているかを判断する方法に行き詰まっています。:?

正確には、特定の BAR にそのパラレル ポートのベース アドレスが常に含まれるという業界の慣習、標準、またはデファクト スタンダードはありますか?

そうでない場合、その PCI パラレル ポートのベース アドレスを特定するにはどうすればよいですか (PCI 拡張カードまたは mobo に統合されているかどうか)。

実は、私はPCI 拡張カードのパラレル ポートに関心があります。私の知る限り、BIOSはこれらについて知りません。BIOS はリソースを PCI カードにのみ割り当てます。それだけです。そのため、BDA にそのようなパラレル ポートのエントリがない可能性があります。BIOS の製造元は、モボが持つすべてのデバイスについてしか知らないからです。

たとえば、PC では、pci 拡張カードに 4 つのパラレル ポートをインストールしましたが、mobo には 1 つのパラレル ポートが統合されています。他の 2 つのパラレル ポートのエントリはどこに行くのでしょうか?

そのため、BIOS には、チップセットまたはマザーボードに統合された3 つのパラレル ポートのみのエントリがあるようです。したがって、mobo にインストールされている PCI 拡張カードのパラレル ポートのベース アドレスを取得するには、PCI BAR を読み取る必要があると思います。

ありがとう

0 投票する
1 に答える
2509 参照

linux-kernel - pci構成スペースへのアクセスについて、マクロPCI_CONF1_ADDRESSが私を混乱させます

pciの部分について、Linuxカーネルコードを学んでいて、ファイルを読んでいます/arch/x86/pci/Direct.c.いくつかのコードは私を混乱させます:

カーネルのバージョンは 2.6.18 なので、マクロ PCI_CONF1_ADDRESS は私を混乱させます。ご存知のように、IO ポート CF8/CFC を使用する場合、PCI 構成スペースの最初の 256 バイトにしかアクセスできません。256 ~ 4095 バイトの間のスペースにアクセスする場合は、ECAM (Enhanced Configuration Accessメカニズム) ですが、上記の注釈には次のように記載されています。

タイプ 1 アクセスによる拡張 (PCI 機能ごとに 4096 バイト) 構成空間。

これは、IO ポート CF8/CFC を使用すると、pci 構成スペースの 4096 バイトすべてにアクセスできるということですか? しかし、なぜ PCI LOCAL BUS SPECIFICATION はこれについて言及していないのでしょうか?

一方、次の表現にも戸惑いを覚えます。

((reg & 0xF00) << 16)

この方法を使用して pci 構成アドレスを生成しますが、この表現は本や仕様で見たことがありません。

0 投票する
1 に答える
1720 参照

linux - Linux での PCI ドライバーの仕組み

PC 環境の Linux で pci ドライバーがどのように機能するかを学ぼうとしていますが、実際には難しいと感じています。移行する前に理解しておきたい次のステートメントはほとんどありません。

  1. PCI 仕様では、システムは最大 256 個のバスをホストできます (バス = PCI スロット?)。

  2. 各バスは最大 32 個のデバイスをホストします。

  3. 各デバイスは、最大 8 つの機能を備えた多機能ボードにすることができます (この行は正確には何を意味しますか?)

私の PC では 3 つの pci スロット (これらはバスと呼ばれます) しか見えず、各スロットから 1 つの irq ラインが cpu に送られます。

私の理解はかなり間違っているようで、それがより多くのビューを獲得したかった理由です.

0 投票する
1 に答える
241 参照

linux - Linuxデバイスのリソース番号?

組み込みの x86 システム設計ドキュメントを見ていました。ザイリンクス FPGA を含む I/O ボードは、Linux x86 PCI バスに接続されています。FPGA の実装は次のように記述されています。

接続後、x86 が「MB プロセッサ」、「デュアル ポート RAM」、「周辺機器」にアクセスできるようになると主張しています。

次に、 PCI ボード自体が 2 セットのリソースを公開していると主張します。リソース 0は、MB プロセッサと ioboard の IO ポイントに接続するための 4Meg 領域です。リソース 1は、MB プロセッサと x86 間のデュアル ポート RAM インターフェイスです。

私はLinuxデバイスドライバーが初めてで、学習を始めたばかりです。

「PC ボード自体が 2 セットのリソースを発行する」ということの意味を、誰か少し説明してもらえますか? ボードを接続した後 (ドライバーのインストールが必要ですか?)、Linux OS が何らかのリソースを検出するということですか?

また、このリソース情報は、IO ボードのデバイス ドライバを作成する際にどのように使用されますか? あるいは、MB、RAM、および周辺機器用に個別のデバイス ドライバーを作成する場合はどうでしょうか。

ありがとう、

0 投票する
1 に答える
4593 参照

c# - マザーボードの PCI(e) スロットにプラグインされている PCI デバイス (存在する場合) を特定します。

多くの Windows XP ワークステーションでハードウェア監査を実行するプログラムを C# で作成しています。

PCI バス (マザーボードに組み込まれている) を使用するオンボード デバイスではなく、マザーボード スロットを介して接続された実際のカードである PCI デバイスを特定する必要があります。

さまざまな WMI クラスを使用して、すべての PCI バスを使用するすべてのデバイスを正常に一覧表示できますが、オンボードのものとスロット経由で接続されているものを示すものはありません。

情報の取得方法や情報源 (Pinvoke、WMI、レジストリなど) が信頼できるものである限り、私はこだわりません。

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