OpenHardwareMonitorは、私のSupermicro X7DWAマザーボードのWinbond W83793 chipから温度データを読み取ろうとしています。問題は、低レベルのプログラミング経験がなく、オンラインで利用できるドキュメントが気温にアクセスする方法を説明するのに十分ではないように思われることです。Winbond W83793チップの温度を読み取るのに役立つヒントをまとめることができますか?
しかし、私がこの問題に取り組んでいる月には、問題を解決する鍵となるかもしれないいくつかの値と低レベルの方法を発見しました。私は、それらを使って私が望むものを得る方法を理解する必要があります。それが私のところです。なぜなら、私のように、この情報が何を意味し、どのように適用するのかを理解するかもしれないからです。私はすでに多くの青い画面とコンピュータの再起動の結果、突っ込んで私の公正な分け前をしました。十分に推測すれば、私はこれらの手がかりを一緒にまとめる必要があります。ここで私はこれまで知っているものである:それは、CPUID HWMonitorなどの監視プログラムは、情報を取得している方法ですので
チップから読み取るには、私は何とか、SMBusのにアクセスする必要があります。私が知る限り、OpenHardwareMonitorはSMBusにアクセスするためのコードを持っていないので、チップから読み込むことができません。しかし、OpenHardwareMonitorは、Ring0 classに以下のメソッドを含んでおり、他のチップからの情報にアクセスするために使用します。私はレポートを保存するときHWMonitorは私にWinbond社W83793チップに関する次の情報を報告し、他の情報の中で
void Ring0.WriteIOPort(uint port, byte value); byte Ring0.ReadIOPort(uint port);
:私は私の利点にこれらのメソッドを使用することができるかもしれ
登録スペース:SMBusの、ベースアドレス= 0x01100
SMBusの要求:チャンネル0x0の、アドレス0x2Fは
それはトンのようになります。 heseは重要な値ですが、私はそれらの意味を正確にはわかりませんし、上記のRing0メソッドと組み合わせてそれらをどのように使用することもできます。うーん...そんなに多くの手がかり。他のHWMonitorの値は、実際の電圧、温度、ファン速度、チップのどこかからのデータを表す16進数の配列です。見たい場合はここで再現します。 (あなたが開いている文書を持っている場合)
最後に、W83793のデータシートには、53ページ、ここでは温度の六角のアドレスは(私は信じて)私が読みたいです:
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コマンドを書き込むためのシーケンスとフォーマットが必要です。もしそれが必要ならば。
EDIT:さらに詳しい情報が見つかりました。私はHWMonitorからSMBusデバイス・レポートを印刷し、そしてとりわけ、私はこのラインを持って、それが0x2F言うのでここに含ま:
SMBデバイスは:I/O =は0x1100、アドレス0x2F、チャネル= 0
これは、I/Oのアドレスと0x2Fのようなチップのアドレスを何らかの形で組み合わせる必要があることを意味します。私はそれらを一緒に追加しようとしましたが、それから私はすべての温度の読み値が255になるので、正しい推測ではありませんでした。
これは非常に役に立ちます。ありがとうございます!あなたの指定した方法でこれらのメソッドを使ってみましたが、最初の4つの温度(1C - 1F)と最後の2つ(20と21)の255のすべてが0になりました。しかし、私は新しい発見をしました(上記の質問を編集してください)。 0x1100はチップのアドレスではなく、SMBusチャネル(または何か)のアドレスであると思われますが、0x2Fはチップのアドレスです。私は間違っている可能性がある。私は想定されたチップアドレスにベースアドレスを追加しようとしましたが、結果はまだ間違っていました。何か案は? – Dalal
私はSMBusの手がかりを見逃しました。私の理解では、SMBusコントローラに、特定のデバイスの特定のアドレスからの読み書きを指示する必要があるということです。 SMBus仕様(http://smbus.org/specs/)では、SMBus上のデバイスがどのように話され、応答するかが規定されていますが、SMBusコントローラがx86世界でどのようにCPUと話すべきかを定義することは避けられません。だから次のものは、あなたのマザーボードのSMBusコントローラ用のデータシートであるか、古いデータシートが実行するのに十分な汎用性があるかどうかを調べることです。私の最初の2つのGoogleは働いていませんが、私は探し続けます。 – Tommy
マザーボード用の「メモリコントローラハブ」と思われるIntel 5400 MCH(http://www.intel.com/Assets/PDF/datasheet/318610.pdf)のデータシートが見つかりました。マザーボードのデータシート。これが私たちに必要なものかどうかはわかりません。 – Dalal