Supermicro X7DWA マザーボードのWinbond W83793 チップからOpenHardwareMonitorに温度データを読み取らせようとしています。問題は、私には低レベルのプログラミング経験がなく、オンラインで入手可能なドキュメントが温度へのアクセス方法を説明するのに十分ではないように思われることです。
しかし、この問題に取り組んできた 1 か月間、問題を解決する鍵となる可能性のある値と低レベルのメソッドをいくつか発見しました。必要なものを得るためにそれらを使用する方法を理解する必要があります。私とは異なり、あなたはこの情報が何を意味し、どのように適用するかを理解しているかもしれないので、私はあなたに頼ります. 私はすでにかなりの部分を突っついてきましたが、その結果、多くのブルースクリーンとコンピューターの再起動が発生しました。十分に推測して、これらの手がかりをつなぎ合わせる必要があります。これが私がこれまでに知っていることです:
チップから読み取るには、どうにかして SMBus にアクセスする必要があります。これは、CPUID HWMonitor などの監視プログラムが情報を取得する方法だからです。私の知る限り、OpenHardwareMonitor には SMBus にアクセスするためのコードが含まれていないため、チップから読み取れない可能性があります。ただし、OpenHardwareMonitor には、他のチップからの情報にアクセスするために使用するRing0 クラスに含まれる次のメソッドがあります。これらの方法を有利に使用できる場合があります。
void Ring0.WriteIOPort(uint port, byte value); byte Ring0.ReadIOPort(uint port);レポートを保存すると、HWMonitor は Winbond W83793 チップに関する次の情報をレポートします。
レジスタ空間: SMBus、ベースアドレス = 0x01100
SMBus リクエスト: チャネル 0x0、アドレス 0x2F
これらは重要な値のように見えますが、それらが何を意味するのか、上記の Ring0 メソッドと組み合わせてどのように使用できるのか正確にはわかりません。うーん...非常に多くの手がかり。HWMonitor が表示する他の値は、実際の電圧、温度、ファン速度、およびチップ上のどこかからのデータを表す 16 進数値の配列です。見たい場合はここで再現します。
最後に、W83793 データ シートの 53 ページ (ドキュメントを開いている場合) に、私が読みたい温度の 16 進数のアドレスがあります (私は信じています)。
TD1 読み出し - バンク 0 アドレス 1C
TD2 読み出し - バンク 0 アドレス 1D
TD3 読み出し - バンク 0 アドレス 1E
TD4 読み出し - バンク 0 アドレス 1F
下位ビットの読み出し - バンク 0 アドレス 22
TR1 読み出し - バンク 0 アドレス 20
TR2 読み出し - バンク 0 アドレス 21
これまでのところ、私が知っているのはそれだけです。OpenHardwareMonitor、W83793 チップ、および Ring0 コードは、上記のリンクから入手できます。先ほど言ったように、私は 1 か月間取り組んできましたが、まだこの謎を解くことができていません。あなたが私を助けてくれることを願っています。これらの情報はすべて少し難解に思えるかもしれませんが、低レベルのプログラミング経験がある人にとっては理解できると確信しています。
私の質問を要約すると、上記の手がかりを使用して、OpenHardwareMonitor に W83793 チップから温度を読み取らせる方法を見つけてください。OpenHardwareMonitor でのチップの作成に関する詳細は必要ありません。すでにクラスの準備ができています。それが必要な場合は、Ring0コマンドを書き込むためのシーケンスとフォーマットが必要です。
編集:さらに情報が見つかりました。HWMonitor から SMBus デバイス レポートを出力したところ、0x2F と表示されているため、ここに含まれている次の行が得られました。
SMB デバイス: I/O = 0x1100、アドレス 0x2F、チャネル = 0
これは、I/O のアドレスをチップのアドレス (0x2F と思われる) と組み合わせる必要があることを意味しているに違いありません。それらを合計してみましたが、すべての温度測定値が 255 になったので、それは正しい推測ではありませんでした。