Я пытаюсь получить OpenHardwareMonitor для чтения данных о температуре из чипа Winbond W83793 на моей материнской плате Supermicro X7DWA.Проблема в том, что у меня нет никакого опыта программирования на низком уровне, и доступные документы в Интернете, кажется, не достаточны для объяснения того, как получить доступ к температурам.
Однако за месяц, в течение которого я работал над этой проблемой, я обнаружил несколько значений и низкоуровневых методов, которые могут стать ключом к решению моей проблемы.Мне просто нужно выяснить, как их использовать, чтобы получить то, что я хочу.Вот где я обращаюсь к вам, потому что вы, в отличие от меня, можете понять, что означает эта информация и как ее применять.Я уже сделал свою большую долю возни, в результате чего много синих экранов и перезагрузок компьютера.Хватит гадать, мне нужно собрать эти ключи вместе.Вот что я знаю до сих пор:
Для чтения из чипа мне как-то понадобится доступ к 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 показывает мне, - это фактические напряжения, температуры и скорости вращения вентиляторов, а также массив шестнадцатеричных значений, представляющих данные из какого-то места на чипе, которые я воспроизведу здесь, если вы захотите посмотреть на них.
Наконец, в листе данных W83793, на странице 53 (если у вас есть открытый документ), здесь указаны адреса в шестнадцатеричном формате с температурами, которые я хотел бы прочитать (я полагаю):
Считывание TD1 - адрес банка 0 1C
Считывание TD2 - адрес банка 0 1D
Считывание TD3 - адрес банка 0 1E
Считывание TD4 - адрес банка 01F
Считывание младших битов - Банк 0 Адрес 22 * 1041 *
TR1 Считывание - Банк 0 Адрес 20
TR2 Считывание - Банк 0 Адрес 21
Это все, что я знаю до сих пор.OpenHardwareMonitor, чип W83793 и код Ring0 доступны по ссылкам, указанным выше.Как я уже говорил ранее, я занимался этим уже месяц, и я пока не смог разгадать эту загадку.Я надеюсь, что вы можете мне помочь.Вся эта информация может показаться немного пугающей, но я уверен, что это будет иметь смысл для кого-то с небольшим опытом программирования низкого уровня.
Чтобы подвести итог моего вопроса, используйте подсказки, предоставленные выше, чтобы выяснить, как получитьOpenHardwareMonitor для считывания температуры из чипа W83793.Мне не нужны подробности о создании чипа в OpenHardwareMonitor.У меня уже есть готовый класс.Мне просто нужны последовательность и формат для записи команд Ring0, если это то, что мне нужно сделать.
РЕДАКТИРОВАТЬ: Я нашел еще немного информации.Я распечатал отчет об устройстве SMBus от HWMonitor, и, помимо прочего, я получил эту строку, включенную сюда, потому что там написано 0x2F:
Устройство SMB: I / O = 0x1100, адрес 0x2F, канал = 0
Это должно означать, что мне нужно как-то объединить адреса ввода / вывода с адресом чипа, который, кажется, 0x2F. Я попытался сложить их вместе, но затем я получил все значения температуры 255, так что это было неправильное предположение.