Не могли бы вы собрать воедино следующие подсказки, которые помогут мне считывать температуру с чипа Winbond W83793?

Я пытаюсь заставить OpenHardwareMonitor считывать данные о температуре из чипа Winbond W83793 на моем Материнская плата Supermicro X7DWA. Проблема в том, что у меня нет опыта низкоуровневого программирования, а доступная онлайн-документация кажется недостаточной для объяснения того, как получить доступ к температуре.

Однако за месяц, пока я работал над этой проблемой, я обнаружил несколько значений и низкоуровневых методов, которые могут быть ключом к решению моей проблемы. Мне просто нужно выяснить, как использовать их, чтобы получить то, что я хочу. Вот где я обращаюсь к вам, потому что вы, в отличие от меня, можете понять, что означает эта информация и как ее применять. Я уже проделал изрядную долю поисков, что привело к множеству синих экранов и перезагрузкам компьютеров. Хватит догадываться, мне нужно собрать эти улики воедино. Вот то, что я знаю на данный момент:

  1. Для чтения с чипа мне каким-то образом потребуется доступ к SMBus, потому что таким образом программы мониторинга, такие как CPUID HWMonitor, получают информацию. OpenHardwareMonitor, насколько мне известно, не содержит кода для доступа к SMBus, поэтому он может не считывать данные с чипа. Однако OpenHardwareMonitor имеет следующие методы, включенные в его класс Ring0 , которые он использует для доступа к информации с других микросхем. Я могу использовать эти методы в своих интересах:

     void Ring0.WriteIOPort (порт uint, значение байта);
    байт Ring0.ReadIOPort (порт uint);
     
  2. Среди прочего, HWMonitor сообщает мне следующую информацию о микросхеме Winbond W83793, когда я сохраняю отчет:

    Регистровое пространство: SMBus, базовый адрес = 0x01100

    Запрос SMBus: канал 0x0, адрес 0x2F

    Похоже, что это важные значения, но я не знаю точно, что они означают, и как я могу использовать их в сочетании с методами Ring0, описанными выше. Хм ... так много подсказок. Другие значения, которые показывает мне HWMonitor, - это фактические значения напряжения, температуры и скорости вращения вентилятора, а также массив шестнадцатеричных значений, представляющих данные откуда-то на микросхеме, которые я воспроизведу здесь, если вы захотите взглянуть на них.

  3. Наконец, в листе данных W83793, на странице 53 (если у вас открыт документ), вот адреса в шестнадцатеричном формате температур, которые я хотел бы прочитать (я полагаю):

    Показание TD1 - Адрес банка 0 1C

    Показание TD2 - адрес банка 0 1D

    Показание TD3 - адрес банка 0 1E

    Показание TD4 - адрес банка 0 1F

    Считывание младшего бита - адрес банка 0 22

    Показание TR1 - адрес банка 0 20

    TR2 Readout - Bank 0 Address 21

Это все, что я знаю на данный момент. OpenHardwareMonitor, чип W83793 и код Ring0 доступны по ссылкам, приведенным выше. Как я сказал ранее, я занимаюсь этим месяц, и я просто еще не смог разгадать эту загадку. Я надеюсь, что вы можете мне помочь. Вся эта информация может показаться немного пугающей, но я уверен, что она будет иметь смысл для тех, кто имеет некоторый опыт программирования на низком уровне.

Подводя итог моему вопросу, воспользуйтесь приведенными выше подсказками, чтобы выяснить, как заставить OpenHardwareMonitor читать температуры вне микросхемы W83793. Мне не нужны подробности по созданию чипа в OpenHardwareMonitor. У меня уже есть готовый урок. Мне просто нужна последовательность и формат для записи команд Ring0, если это то, что мне нужно сделать.

РЕДАКТИРОВАТЬ: Я нашел дополнительную информацию. Я распечатал отчет об устройстве SMBus из HWMonitor, и, среди прочего, я получил эту строку, включенную сюда, потому что в ней написано 0x2F:

Устройство SMB: I / O = 0x1100, адрес 0x2F, channel = 0

Это должно означать Мне нужно как-то объединить адреса ввода-вывода с адресом чипа, который кажется 0x2F. Я попытался сложить их вместе, но потом все показания температуры оказались 255, так что это было неправильное предположение.

5
задан Dalal 22 August 2011 в 22:35
поделиться