質問: pcieバス上のsmbus / i2c 免責事項、私はcentos/linuxの専門家から遠く離れており、googlefuを使用してこれを自分で見つけるのに苦労しています。 centosを実行しているpcのpcieスロットに入る製品に取り組んでいます。 pcie相互接続のサイドチャネルには、vital product data(vpd)テーブルを収集するために使用されるsmbus(つまり、i2c)があります。私はこのインターフェースをテストする方法を見つけようとしていますが、これまでのところ惨めに失敗しています。 vpdおよびi2cデバイスを試して読み取るためのツールがいくつかあることを私は知っています。lm-tools(i2c)、sudo yum install i2c-tools dmidecodeを使用してインストール、sudo yum install dmidecodeを使用してインストールdmidecodeのツールには何も返さない「vpddecode」があり、メモリ内で何かを探していると思われますが、実際にはわかりません。 lm-toolsにはi2cdetectがありますが、「sudo i2cdetect -y 0」を実行しようとしても機能せず、次のように報告されます。 エラー:ファイル/ dev/i2c-2または/ dev/i2c/2を開くことができませんでした:そのようなファイルまたはディレクトリはありません /devの下を見ると、i2cが含まれているアイテムはありません。だから、私はモジュールか何かをロードする必要があると思っていますか?だから、私の質問は次のとおりです。 これらのツールは、pcie smbus上にあるデバイスと通信できますか? これらのユーティリティがpciesmbus上のデバイスで機能する場合、それらが機能するためにどのようなアクションを実行する必要がありますか? これらのユーティリティがpciesmbus上のデバイスで機能しない場合、どのユーティリティが機能しますか? どんな助けでも大歓迎です。私はグーグルを持っていますが、私のグーグルフーは、たとえそれらをフィルターで除外しようとしても、ほとんどの場合、lmモジュールが温度やそのようなアイテムを読み取るための情報を表示します。ありがとう、マーク
回答: 私の知る限り、smbusコントローラーはlinuxではi2cデバイスとして表されます。 (smbusはi2cのサブセットであるため、これらのデバイスはすべてのi2cコマンドをサポートするわけではなく、smbusに関連するコマンドのみをサポートします。)したがって、ユーザースペースプログラムが通信するには、メインボードのsmbusコントローラーを/dev/i2c-xデバイスとして表示する必要があります。 pciesmbusデバイスを使用します。/dev/i2c-xデバイスを使用するには、i2c-devモジュールをロードする必要があります。これを手動で行うには、シェルでmodprobe i2c-devを実行するか、モジュール名のみを含む行を/etc/modulesファイルに追加します。後者は、システムが起動するたびにモジュールを自動的にロードします。さらに、メインボードに特定のsmbusコントローラーのドライバーをロードする必要があります(自動的にロードされない場合)。お持ちのメインボード(チップセット)がわかりません。ほとんどのintelチップセットのsmbusコントローラーは、i2c-i801linuxカーネルモジュールでサポートされています。両方のモジュールをロードした場合は、システムで1つ以上のi2cバスを使用できるはずです。バスごとに、/dev/i2c-xデバイスと、/sys/bus/i2c/devices/の下に同じ名前のエントリがあります。pcieデバイスに属するバスを絞り込むには、次のことを試してください。$ grep . /sys/bus/i2c/devices/i2c-*/name これにより、すべてのバスのリストが表示され、各バスのドライバー名が出力されます。 i2c-toolsがインストールされているので、i2cdetect -lを使用して同様のリストを取得することもできます。編集:acpi関連のようです 一部のメインボードのi2c-i801およびintelc220チップセットの問題 レンダリングsmbusモジュールは使用できません。