Программно вам нужно будет создать драйвер режима ядра, который использует MmMapIoSpace и обрабатывает IOCTL из основной функции IRP_MJ_CONTROL, а затем вызывает для него StartServiceManager, CreateService и StartService, а затем отправляет IOCTL с помощью DeviceIoControl для выполнения задач, которые управляют базовой физической памятью / пространством ввода-вывода. / МСР. См.: https://stackoverflow.com/a/40449498/7194773. Вы больше не можете запрограммировать вентилятор. Обратите внимание на ответ Маргарет:
Стоит отметить, что 9 лет спустя SuperIO исчезли в ноутбуках, их заменили EC. EC имеют свою прошивку и используют интерфейс PECI для чтения DTS ЦП. HW PWM EC доступен только из EC, ОС больше не может контролировать FAN ЦП, если не путем настройки политики регулирования ЦП.
Раньше вы могли выбрать логическое устройство SuperIO, записав 07h в порт ввода-вывода 2Eh (индексный регистр), что заставляло южный мост генерировать циклы LPC, которые заставляли SIO выбирать регистр LDN (по смещению 07h в общем пространстве: смещения 00h–30h), а затем запишите LDN в порт 2Fh (регистр данных), чтобы сгенерировать циклы LPC, которые заставят SIO выбрать этот LDN. Это приведет к тому, что конфигурационное пространство LDN со смещением 30h–FFh будет отображено на портах, к которым затем можно получить доступ с помощью индекса, а затем чтение/запись в регистр данных. Бит в мосте LPC на PCH используется для выбора того, следует ли выставлять порты 2F/2E или 4F/4E.
В EC регистры были разделены на представление хоста и представление EC. Все регистры PWM и PECI больше не являются логическими устройствами, и их регистры отображаются только в пространство MMIO встроенного ЦП EC, оставляя только несколько общих регистров в обычном пространстве ввода-вывода, видимых хосту. Некоторые LDN предоставляют регистры базового адреса ввода-вывода в своем собственном пространстве (смещение 30h–FFh), что позволяет отображать дополнительные регистры. Прошивка EC использует шину PECI для считывания DTS ЦП и соответствующей регулировки скорости вращения вентилятора при известных смещениях регистров в его пространство MMIO.
person
Lewis Kelsey
schedule
02.05.2020