Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Мобильный компьютер обычно включает устройства датчиков, такие как датчик внешнего света (ALS), 3-D акселерометр, 3-D гирометр или 3-D магнитометр. Если устройство датчика не используется операционной системой или приложением, программное обеспечение управления питанием может переключить устройство в режим низкой мощности для снижения потребления энергии. На компьютере, поддерживающем современную модель резервной мощности, устройства датчиков, как ожидается, переключятся в режим низкой мощности вскоре после того, как компьютер входит в современный режим ожидания и остается в этом режиме, пока компьютер не выйдет из современного режима ожидания.
В этой статье объясняется, как реализовать управление питанием для устройств датчиков. Кроме того, в этой статье рассматривается управление питанием дополнительного микроконтроллера датчика (также называемого концентратором слияния датчика или MCU датчика) и агрегированными устройствами датчиков. (Например, устройство датчика компаса может быть реализовано путем агрегирования акселерометра, гирометра и магнитометра под контролем микроконтроллера датчика. Микроконтроллер предоставляет эти устройства датчика Windows в качестве одного логического устройства датчика.)
Датчики и микроконтроллер датчиков
Оборудование датчика критически важно для современного мобильного интерфейса. Начиная с Windows 10, расширенная системная инфраструктура доступна для предоставления и управления несколькими устройствами датчиков. Эта инфраструктура упрощает разработку приложений, которые включают сведения об датчиках и поддерживают критически важные встроенные сценарии Windows, такие как автоматическое поворот экрана или изменение яркости дисплея на основе внешнего света.
Во время выполнения системы отдельные датчики могут быть отключены, если они не используются. Требования к использованию определенного устройства датчика передаются устройству и его драйверам через API датчика Windows. Если устройство датчика не используется операционной системой или приложениями, устройство может быть подключено драйвером датчика или встроенной встроенной системой, работающей на микроконтроллере датчика.
После отключения системного дисплея и аппаратной платформы вступают в современный режим ожидания, все устройства датчиков и необязательные микроконтроллеры датчика, которые еще не находятся в состояниях низкой мощности, должны входить в их низкое питание, резервные состояния в течение нескольких секунд, чтобы платформа в целом может входить в состояние низкой мощности. Однако драйверы датчиков не отслеживают переходы в современный резервный режим и не отслеживают, когда устройства датчиков должны быть включены и отключены. Вместо этого драйвер датчика должен позволить устройству получать питание, если устройство активно используется одним или несколькими клиентами, которые могут быть приложениями или компонентами операционной системы. Драйвер должен удалить питание с устройства, если клиенты не используют устройство.
Когда расширение класса датчика запрашивает драйвер начать чтение примеров датчика, он вызывает метод обратного вызова драйвера датчика EvtSensorStart. Когда расширение класса датчика запрашивает драйвер прекратить чтение примеров датчика, он вызывает метод обратного вызова драйвера EvtSensorStop. Дополнительные сведения см. в разделе "Сведения о событиях драйвера датчика".
После того как компьютер входит в современный резервный режим, и все устройства датчика вступают в состояния низкой мощности, общее потребление электроэнергии всех системного оборудования датчика должно быть меньше одного милливатта. Устройства датчика и дополнительный микроконтроллер датчика могут ввести состояние ожидания с низкой мощностью, относящееся к оборудованию датчика. Кроме того, аппаратный рельс питания на устройствах датчиков и дополнительный микроконтроллер датчика можно отключить под контролем драйверов датчиков и (или) встроенного ПО ACPI системы.
Начиная с Windows 10 поддержка предоставляется для ограниченного набора аппаратных возможностей подключения датчика к основному кремнию или системе на микросхеме (SoC) на современной резервной платформе. В следующих разделах подробно описаны поддерживаемые конфигурации оборудования и программного обеспечения, а также их поведение управления питанием как во время современного резервного режима, так и при активном использовании платформы.
Режимы управления питанием
Windows ожидает, что каждое устройство датчика или микроконтроллер датчика будет иметь три режима мощности — активный, бездействующий и ждущий, а также дополнительный режим нулевой мощности с отключением питания. В следующей таблице описаны режимы питания для устройства датчика и дополнительного микроконтроллера датчика. Таблица различает режим простоя, в котором оборудование датчика используется, но в настоящее время находится в состоянии покоя, и режим простоя, в котором оборудование датчика не используется.
| Режим | Описание | Среднее потребление энергии | Задержка перехода в активное состояние | Механизм перехода |
|---|---|---|---|---|
Активен |
Устройство датчика и (или) микроконтроллер датчика активно предоставляет или обрабатывает изменения среды. |
< 100 милливатт |
Не применимо |
Не применимо |
Бездействие (в процессе использования) |
Устройство датчика и (или) микроконтроллер датчика используется одним или несколькими приложениями и ожидает предоставления следующего набора данных датчика основному процессору. |
< 50 милливатт |
Специфичный для датчика |
Автономное оборудование |
Бездействия (не используется) |
Устройство датчика и (или) микроконтроллер датчика не используется ни в одном приложении. Данные калибровки для датчика или микроконтроллера датчика поддерживаются. |
< 5 милливатт |
Датчик, зависящий от датчика |
Команды устройства пользовательского интерфейса (HID) или сообщения Sensor Framework, описывающие текущее использование устройств датчиков. |
Резервный |
Устройство датчика и (или) микроконтроллер датчика не используется ни в одном приложении. Данные калибровки для датчика или микроконтроллера датчика поддерживаются. Микроконтроллер датчика и (или) датчика не принимает никаких дальнейших действий, пока не запрашивается программным обеспечением, работающим на основном процессоре. |
< 1 милливатт (для всех системных датчиков) |
< 10 миллисекунда |
Несколько вариантов:
|
Снятие энергии |
Питание отключается от устройства датчика и/или микроконтроллера датчика, и весь аппаратный контекст теряется. |
0 милливатт |
< 100 миллисекунда |
Внешняя сущность удаляет питание или применяет питание через встроенное ПО ACPI в ответ на D3 power IRP. |
Замечание
В предыдущей таблице термин "Резервный" относится к режиму питания устройства, отличному от современного резервного режима, который является состоянием питания на уровне платформы.
Механизмы управления питанием программного обеспечения
Управление энергопотреблением во время работы для устройств датчиков и микроконтроллера датчика главным образом зависит от того, используются ли они. Как правило, драйвер датчика и оборудование, как ожидается, помещают датчик в режим питания бездействия, если он не используется операционной системой или приложением. Платформа датчика Windows предоставляет сведения о количестве клиентов приложения или операционной системы, подключенных к заданному датчику, а также о требованиях к рабочему циклу датчика или скорости данных. Драйвер датчика и (или) оборудование использует эти сведения для плавного перехода устройства датчика в режим простоя питания во время выполнения системы и включения дисплея.
После выключения системного дисплея платформа переходит в современный режим ожидания, Windows ожидает, что все датчики и микроконтроллеры датчиков будут входить в режим ожидания или отключения питания.
Выбор программного механизма управления питанием для устройств датчиков и дополнительного микроконтроллера датчика зависит от того, как оборудование датчика предоставляется драйвером устройства Windows и как оборудование датчика физически подключено к SoC или основному кремнию. Windows поддерживает два метода открытия и подключения устройств датчиков. Один из методов использует встроенный драйвер класса HID датчика через подключение I2C, где встроенный драйвер HIDI2C передает данные HID через подключение I2C. Для другого требуется сторонний драйвер, реализующий интерфейс драйвера универсального датчика и вызывающий методы в таблице SensorcxFunctions.
Два варианта подключения к датчику или микроконтроллеру датчиков сравниваются в следующей таблице. Выбор одного из двух вариантов подключения к оборудованию датчика определяет механизмы программного управления питанием, необходимые для перевода оборудования датчика в режим ожидания или отключения питания.
| Параметр подключения | Автобусное сообщение | Требуется драйвер датчика | Поставщик драйверов | Комментарии |
|---|---|---|---|---|
HIDI2C |
Оборудование датчика подключается непосредственно к SoC или основному кремнию через I2C. |
Драйвер класса HID датчика + драйвер класса HID over-I2C |
Корпорация Майкрософт. Компонент папки "Входящие" начиная с Windows 8. |
Плюсы / Минусы |
Сторонний драйвер датчика |
Оборудование датчика подключается непосредственно к SoC или основному кремнию через I2C или UART. |
Сторонний драйвер, реализующий SENSOR_CONTROLLER_CONFIG |
Поставщик устройства датчика. |
Плюсы / Минусы |
HIDI2C
Для параметра HIDI2C необязательный микроконтроллер датчика физически подключен к SoC или основному кремнию через шину I2C. Микроконтроллер предоставляет несколько коллекций HID верхнего уровня, по одному для каждого устройства логического датчика. Например, компасный датчик может быть представлен через HID как логическое устройство сенсора, которое является объединением акселерометра, гирометра и магнитометра, под управлением микроконтроллера датчика. Это проще всего реализовать с точки зрения подключения и программного обеспечения, так как он не требует стороннего программного обеспечения для устройства датчика.
Стек Windows HIDI2C аналогичен стеку сенсорных контроллеров и стилусов в том, что он поддерживает два механизма программного управления питанием: встроенную HID команду и переход во время выполнения в состояние D3.
Команда HID в полосе частот
SET_POWER(Спящий режим) Отправлено на устройство после отключения дисплея, а платформа входит в современный резервный режим. Эта команда может перенести устройство в режим резервной питания.
SET_POWER(Вкл.) Отправляется на устройство, когда платформа существует современная резервная версия, и дисплей снова включен.
Переход во время выполнения в состояние D3 для стека устройств датчика HID
D3 IRP Запрос IRP_MJ_POWER, отправляемый в стек драйверов для устройства сразу после команды SET_POWER(Спящий режим). Это указывает устройству ввести состояние питания устройства D3. В рамках перехода на D3 встроенное ПО системы ACPI может запускать методы управления для переключения устройства в режим ожидания или питания.
D0 IRP Запрос IRP_MJ_POWER, отправляемый в стек драйверов для устройства, когда платформа выходит из современного режима ожидания и дисплей включен. Это означает, что устройство должно перейти в состояние питания D0. При необходимости встроенное ПО системы ACPI может запускать методы управления, чтобы переключить устройство обратно в режим простоя (не используется).
Сторонний драйвер датчика
Для стороннего драйвера датчика микроконтроллер датчика физически подключен к основному кремнию через шину I2C или UART.
Поставщик устройства датчика должен предоставить драйвер User-Mode Driver Framework (UMDF), реализующий интерфейс SENSOR_CONTROLLER_CONFIG . Драйвер UMDF взаимодействует с устройством датчика через I2C или UART. Это можно реализовать несколько раз — один раз для каждого датчика, который находится под управлением микроконтроллера датчика. Сторонний драйвер датчика отвечает за создание и координацию всего управления питанием.
Предполагается, что сторонние драйверы датчиков будут созданы с помощью Платформы драйверов Windows (WDF) и основаны на примере драйвера Adxl354acc . Драйвер должен использовать управляемую питанием очередь и настроить состояние простоя D3 с помощью вызова метода IWDFDevice3::AssignS0IdleSettingsEx . Драйвер должен использовать методы IWDFDevice2::StopIdle и IWDFDevice2::ResumeIdle , чтобы указать WDF, когда устройство неактивно или активно. Драйвер также должен включить D3cold, установив элемент ExcludeD3Cold структуры WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS в значение WdfFalse. Включение D3cold позволяет платформе удалять питание с устройства датчика после его простоя и входить в состояние D3.
Рекомендуется поместить код для конкретного устройства в драйвер и поместить код для конкретной платформы в встроенное ПО ACPI, чтобы обеспечить низкозатратное повторное использование кода драйвера на нескольких платформах.
Ввод современных требований к резервному режиму
Требования стороннего драйвера датчика для управления питанием являются функцией резервного потребления электроэнергии оборудования датчика.
Сторонние драйверы датчиков должны инициировать переход на D3, когда устройство датчика готово к переходу в режим ожидания или отключения питания, даже если устройство может использовать механизм связи в полосе для перехода в режим, который потребляет менее милливатта. Причиной этого требования является то, что многие водители шины в Windows отслеживают состояние питания устройств конечной точки и отключают питание только при отключении всех устройств конечных точек. Для некоторых проектов SoC и шин подключения (особенно универсальная последовательная шина (USB)) все конечные устройства и хост-контроллер должны находиться в D3 для SoC, чтобы он вошел в наименьшее состояние потребления энергии во время современного режима ожидания. Неспособность ввести наименьшее состояние питания может легко предотвратить соответствие системы современным требованиям к резервному режиму для заряда батареи.
Если оборудование датчика имеет резервное потребление энергии менее одного милливатта для всего управляемого оборудования датчика, драйвер датчика должен автоматически переключать устройство в режим ожидания, если датчики (или все датчики на микроконтроллере) больше не используются.
Если оборудование датчика имеет резервное потребление энергии больше одного милливатта, драйвер датчика должен выполнить переход D3 и разрешить методам управления ACPI удалить мощность с устройства датчика. Драйвер датчика должен сохранить все необходимые состояния датчика, чтобы питание можно было отключить от устройства во время D3. Поставщик оборудования датчика должен тесно сотрудничать с системным интегратором, чтобы гарантировать, что оборудование датчика и драйвер выполняют переход D3 надежно и быстро.
Это важно
Драйвер должен сохранить весь контекст устройства датчика перед вводом D3 и восстановить весь контекст устройства датчика после ввода устройства D0.
Вскоре после входа в современный резервный режим Windows автоматически останавливает использование всех датчиков, отключив использование датчиков операционной системы (например, внешний свет и поворот) и приостанавливая приложения. Драйвер датчика должен агрегировать состояние всего управляемого оборудования датчика и переключить это оборудование в режим питания резервного устройства, когда все датчики больше не используются.
Механизм переключения устройства датчика в резервный режим можно использовать в полосе связи через шину, которая подключает устройство к SoC. Например, частная команда ожидания может быть отправлена через шину на оборудование датчика. Кроме того, оборудование датчика может быть подключено к GPIO линии, которая переключает устройство в режим ожидания и отключает его из режима ожидания.
Замечание
Если линия GPIO используется для переключения устройства в режим ожидания, драйвер датчика должен переключить стек драйверов на D3 и разрешить методы управления ACPI для устройства (например, _PS3), чтобы установить строку GPIO в состояние, необходимое для размещения оборудования в режиме ожидания. Эта схема позволяет драйверу датчика записываться в не зависящем от платформы способе— конкретная строка GPIO, требования к времени и другие сведения о платформе кодируются в встроенном ПО ACPI, предоставленном системным интегратором, а не в драйвере для конкретного устройства.
Выход из современных резервных требований
Когда платформа выходит из современного режима ожидания, драйвер датчика должен переключить оборудование датчика обратно в режим простоя (не используется). По мере возобновления работы системных служб Windows запрашивает использование датчиков, таких как поворот и внешний свет, необходимые для выполнения системных функций. По мере возобновления работы приложений они могут запрашивать сведения о датчике. Если оборудованию датчика требуется сообщение в полосе для возврата устройства в режим простоя, драйвер устройства должен отправить это сообщение сразу после отправки первого запроса на получение сведений об датчике. Если оборудованию датчика требуется линия GPIO, чтобы сигнализировать устройству вернуться в состояние простоя, драйвер должен использовать эту строку GPIO, чтобы выполнить переход на D0 сразу после первого запроса данных датчика. В этом случае методы управления ACPI (например, _PS0) должны переключать линию GPIO, как требуется, чтобы инициировать переход. Наконец, если оборудование датчика ранее потребовало перехода в режим удаления питания, так как потребление электроэнергии в режиме ожидания превышает один милливатт, драйвер датчика должен выполнить переход на D0 и разрешить методам управления ACPI восстановить мощность на устройстве.
Поддерживаемые конфигурации питания оборудования
Конфигурация аппаратного управления питанием, используемая для устройства датчика, зависит от потребления электроэнергии оборудования датчика в режиме ожидания и от того, управляет ли дополнительный микроконтроллер датчика.
Резервная мощность < один милливатт
Если потребление электроэнергии устройством датчика в режиме ожидания не превышает одного милливатта, конструктору платформы не требуется подключать оборудование датчика к линии питания, которая может быть включена и отключена методами управления ACPI. Один из следующих механизмов используется для переключения датчика в режим резервной питания:
- Команда HID SET_POWER(Спящий режим).
- Линия GPIO из SoC.
- Собственная команда, отправленная на оборудование датчика сторонним драйвером датчика.
Если платформа включает микроконтроллер датчика, микросхема микроконтроллера может содержать один или несколько интегрированных устройств датчика или подключиться к одному или нескольким внешним устройствам датчика. С точки зрения программного обеспечения, эти устройства датчиков скрыты за микроконтроллером, невидимы для Windows. Если микроконтроллер датчика и его собранные устройства датчика вместе потребляют менее одного милливатта, когда микроконтроллер и оборудование датчика находятся в режиме ожидания питания, конструкторы платформы не обязаны подключать микроконтроллер или оборудование датчика к электропитанию, которое может быть включено и выключено методами управления ACPI. Микроконтроллер датчика использует один из следующих механизмов для перехода его самого и всех управляемых датчиков в и из режима ожидания:
- Команда HIDI2C SET_POWER (или аналогичная), отправленная через шину связи.
- Линия GPIO из SoC.
Если датчику требуется линия GPIO из SoC для запуска переходов в режим ожидания и из режима ожидания, встроенное ПО платформы должно предоставить как объект _PS3, так и объект _PS0 в пространстве имен ACPI под аппаратным устройством датчика. Встроенное ПО ACPI также должно включать область операции GPIO, описывающую линию GPIO из SoC в оборудование датчика. Метод управления _PS3 переключает строку GPIO для переключения устройства в режим ожидания, а метод управления _PS0 переключает линию GPIO для переключения оборудования датчика в режим простоя.
На следующей блок-схеме показаны параметры управления питанием для автономного датчика, который потребляет менее одного милливатта в режиме резервного питания.
Один из вариантов — использовать стек Windows HIDI2C, как показано в левой части предыдущей схемы. В этом случае переход датчика на резервный режим питания можно инициировать либо встроенной командой HID SET_POWER(Режим сна), либо с помощью D3 IRP, который драйвер ACPI обрабатывает, выполняя метод управления _PS3 для датчика.
Другой вариант — использовать сторонний драйвер датчика, как показано в правой части предыдущей схемы. Сторонний драйвер датчика может инициировать переход в режим ожидания питания с помощью собственной встроенной команды или отправкой запроса D3 IRP, который драйвер ACPI обрабатывает, выполняя метод управления _PS3 для датчика.
Конструктор платформы может выбрать любой механизм независимо от того, интегрированы ли устройства датчика или внешние с микросхемой микроконтроллера.
Резервная мощность > один милливатт
Если платформа включает оборудование датчика и (или) микроконтроллер датчика, который вместе потребляет более одного милливатта в режиме резервной мощности, оборудование датчика и микроконтроллер должны быть перенесены в режим удаления питания, когда система находится в современном режиме ожидания. В этой конфигурации датчик, необязательный микроконтроллер датчиков и все датчики, расположенные за микроконтроллером, должны быть помещены на одну шину питания, которая включается и выключается под управлением линии GPIO от SoC.
Для этой конфигурации конструктор платформы должен разместить все оборудование датчика на переключаемой линии питания, контролируемой линией GPIO из SoC. Если для оборудования датчика требуется несколько входных напряжения, можно использовать несколько коммутаторов, контролируемых одной линией GPIO. Помимо переключаемой линии питания, встроенное ПО ACPI платформы должно определять Power Resource в пространстве имен. Эта ресурсная мощность описывает аппаратное обеспечение датчика и включает методы _ON и _OFF, отвечающие за использование области операций GPIO для переключения линии GPIO от SoC.
Встроенное ПО платформы должно содержать ссылку на ресурс электропитания под каждым устройством датчика в пространстве имен ACPI, на переключаемой линии питания, включая объекты _PR0 и _PR3.
На следующей схеме блоков показаны параметры управления питанием для оборудования датчика и (или) микроконтроллера датчика, которые вместе используют более одного милливатта в режиме резервного питания. Два варианта — использовать стек Windows HIDI2C, как показано слева от схемы, или использовать сторонний драйвер датчика, как показано справа.
В конфигурации, которая использует встроенный стек драйверов HIDI2C, как показано слева от предыдущей схемы, драйвер HIDI2C инициирует переход D3 после отключения дисплея, а платформа входит в современный резервный режим. Когда D3 IRP проходит через драйвер ACPI, объект _PR3 будет оцениваться, и Windows отключит указанный энергетический ресурс, выполнив метод _OFF. Если несколько датчиков совместно используют Power Resource, Windows автоматически учитывает количество всех датчиков и запускает метод _OFF только после ввода всех датчиков в D3.
Если оборудование датчика использует сторонний драйвер датчика, как показано на правой части предыдущей схемы, поток управления совпадает с предыдущим, за исключением того, что драйвер датчика отвечает за инициирование перехода на D3.
После того как платформа возобновляет работу из современного режима ожидания, и приложение или операционная система запрашивают использование датчика, драйвер переходит в D0. IRP D0 проходит через драйвер ACPI, и объект _PR0 оценивается так, чтобы драйвер ACPI выполнял метод _ON для связанного источника питания. Метод _ON переключает линию GPIO, чтобы включить переключимую линию питания. Если система использует сторонний драйвер датчика, драйвер должен запросить D0 IRP и инициировать переход на D0 сразу после запроса данных датчика операционной системой или приложением.
Проблемы пробуждения
Нет проблем пробуждения для датчиков или дополнительного микроконтроллера датчика. Ожидается, что устройства датчиков находятся в режиме ожидания или без питания во время современного режима ожидания и не должны пробуждать SoC, пока платформа находится в современном режиме ожидания.
Тестирование и проверка
Важно для системного конструктора убедиться, что оборудование датчика входит в режим ожидания или отключения питания при отключении дисплея для современного резервного режима. Метод, используемый для тестирования и проверки управления питанием устройств, зависит от того, как подключено устройство датчика.
Датчик, подключенный через HIDI2C
Если система использует стек Windows HIDI2C, системный интегратор должен обратиться к поставщику драйвера датчика для получения сведений о том, как лучше убедиться, что драйвер правильно выполняет управление питанием. Поставщики драйверов датчиков рекомендуется использовать трассировку событий для Windows (ETW) для всех решений по управлению питанием в драйвере устройства, а также предоставить пример документации системным интеграторам, чтобы описать, как проверить правильную операцию управления питанием с помощью событий ETW и набора средств производительности Windows (WPT).
Сторонний драйвер датчика
Если система использует сторонний драйвер датчика, системный интегратор должен обратиться к поставщику драйвера датчика для получения сведений о том, как лучше убедиться, что драйвер правильно выполняет управление питанием. Поставщики драйверов датчиков рекомендуется использовать трассировку событий для Windows (ETW) для всех решений по управлению питанием в драйвере устройства, а также предоставить пример документации системным интеграторам, чтобы описать, как проверить правильную операцию управления питанием с помощью событий ETW и набора средств производительности Windows (WPT).
Если драйвер инициирует переход на D3, когда все его устройства датчика больше не используются, можно выполнить инструкции, приведенные в следующем списке, чтобы убедиться, что этот переход происходит должным образом, и что устройство датчика возвращается в D0, когда приложению или операционной системе необходимо снова использовать устройство.
Метод, ориентированный на программное обеспечение, использует инструментирование Windows, чтобы убедиться, что D3 IRP проходит через стек драйверов датчика. Диспетчер питания Windows имеет встроенную инструментацию ETW, которая включает механизмы для обнаружения Dx IRPs (запросов на управление питанием устройств). Чтобы просмотреть эти сведения в ручном режиме, скачайте набор средств производительности Windows и установите его в системе под тестом.
После установки набора средств производительности Windows выполните следующие инструкции, чтобы запустить трассировку XPerf в пользовательском режиме:
Откройте окно командной строки от имени администратора.
Перейдите к папке \%ProgramFiles%\Windows Kits\8.0\Windows Performance Toolkit\ .
Чтобы запустить Xperf, выполните следующую команду:
xperf.exe -start power_session -on Microsoft-Windows-Kernel-PowerПерезапустите систему в современный режим ожидания, нажав кнопку питания.
Подождите 30 секунд.
Перезапустите систему из современного режима ожидания, нажав кнопку питания.
Выполните следующую команду, чтобы остановить ведение журнала событий:
xperf.exe -stop power_sessionПреобразуйте двоичный файл трассировки в .csv и удобочитаемый пользователем формат:
xperf.exe –i \user.etl > power.txtОткройте файл Power.txt в текстовом редакторе и найдите идентификатор оборудования устройства датчика. Идентификатор оборудования устройства датчика можно найти на вкладке "Сведения" свойств устройства в диспетчере устройств в разделе "Путь экземпляра устройства". В следующем примере путь экземпляра устройства датчика — ACPI\MST0731\2&daba3ff&0.
Запуск IRP D3 для устройства датчика указывается событием типа Microsoft-Windows-Kernel-Power/IRP/Stop, который содержит путь экземпляра устройства датчика и последнее значение события 3, указывающее, что целевое состояние — D3. Следующее событие выходных данных из файла Power.txt показывает начало IRP D3. Последние два значения параметров для этого события (показаны в правом конце) указывают путь экземпляра устройства и целевое состояние.
Microsoft-Windows-Kernel-Power/Irp/Start, 7605393, "Unknown" (4), 256, 0,,,,, 0x868e2728, 1, 2, 0x85fb56e0, 25, "ACPI\MSFT0731\2&daba3ff&0", 3Это событие должно быть зарегистрировано в начале выходного файла Power.txt. Значение
0x868e2728параметра в предыдущем выходном событии — это указатель на структуру IRP для IRP D3. Выполнив поиск последующих событий в файле трассировки с таким же указателем IRP, вы можете отслеживать процесс прохождения IRP D3 по мере его прохождения через стек драйверов для сенсорного устройства.Microsoft-Windows-Kernel-Power/Irp/Start, 7605393, "Unknown" (4),256, 0,,,,, 0x868e2728, 1, 2, 0x85fb56e0, 25, "ACPI\ATML1000\2&daba3ff&0", 3Microsoft-Windows-Kernel-Power/Driver/Start, 7605416, "Unknown" (4), 20, 0,,,,, 0x868e2728, 0x85fb56e0, "\Driver\sensdrv"Microsoft-Windows-Kernel-Power/Driver/Stop, 7605515, "Unknown" (4), 20, 0,,,,, 0x868e2728, 0x85fb56e0Microsoft-Windows-Kernel-Power/Driver/Start, 7605522, "Unknown" (4), 20, 0,,,,, 0x868e2728, 0x85fab6a0, "\Driver\i2cdrv"Microsoft-Windows-Kernel-Power/Driver/Stop, 7608342, "Unknown" (4), 20, 0,,,,, 0x868e2728, 0x85fab6a0Microsoft-Windows-Kernel-Power/Driver/Start, 7608351, "Unknown" (4), 20, 0,,,,, 0x868e2728, 0x857ffb90, "\Driver\ACPI"Microsoft-Windows-Kernel-Power/Driver/Stop, 7608416, "Unknown" (4), 20, 0,,,,, 0x868e2728, 0x857ffb90Microsoft-Windows-Kernel-Power/Driver/Start, 7608424, "Unknown" (4), 20, 0,,,,, 0x868e2728, 0x85fb56e0, "\Driver\sensdrv"
Когда драйвер Windows ACPI Acpi.sysобрабатывает IRP D3, Acpi.sys запускает соответствующий метод управления _PR3. Разработчик прошивки системы предоставляет этот метод управления, чтобы указать, какой ресурс питания необходимо отключить для перехода датчика в состояние D3. Acpi.sys также выполняет метод управления _OFF в Power Resource.
Вы можете использовать аналогичный процесс, чтобы убедиться, что устройство датчика возвращается в D0, когда платформа выходит из современного режима ожидания и включается дисплей. Событие Microsoft-Windows-Kernel-Power/IRP/Start для устройства датчика регистрируется с целевым состоянием 0 (указывающее D0) сразу после нажатия кнопки питания для пробуждения системы, а операционная система или возобновленные данные датчика приложений.
Контрольный список управления питанием датчика и микроконтроллера датчика
Поставщики системных интеграторов и устройств датчиков должны использовать следующий контрольный список, чтобы обеспечить совместимость системы управления питанием с Windows 8 и более поздних версий.
- Выберите оборудование датчика, совместимое со встроенным драйвером HIDI2C и стеком драйверов HIDSensor.
- Выберите оборудование датчика, которое имеет резервное потребление электроэнергии менее одного милливатта.
- Убедитесь, что оборудование датчика и сторонний драйвер (при необходимости) поддерживают управление питанием во время выполнения при включении дисплея:
- Датчики должны отключаться и автоматически переходить в состояние D3, если они не используются приложением или операционной системой.
- Датчики должны включаться и переходить в режим D0 автоматически, когда данные датчика запрашиваются приложением или операционной системой.
- Сторонний драйвер датчика должен быть реализован как драйвер WDF и может быть основан на примере драйвера SpbAccelerometer.
- Опрос информации с датчика должен быть ограничен и осуществлен на минимальном уровне потребления электроэнергии. Например, опрос аналогового датчика должен происходить под управлением микроконтроллера или другого оборудования с низким энергопотреблением, которое может прервать SoC, когда новые данные датчика превышают некоторое пороговое значение обнаружения. Избегайте опроса датчика в драйвере, который периодически работает на SoC, что может значительно увеличить общее потребление электроэнергии системы.
- Если оборудование датчика использует сторонний драйвер:
- Системный интегратор должен взаимодействовать с поставщиком устройства датчика, чтобы понять, как реализовать управление питанием для оборудования датчика.
- Если оборудование датчика потребляет более одного милливатта в резервном режиме питания, поместите оборудование датчика на автономный рельс питания, контролируемый линией GPIO из SoC. Укажите ссылки на необходимые методы управления ACPI Power Resource, _ON/_OFF и Power Resource на устройстве датчика в пространстве имен ACPI (как описано ниже).
- Если оборудование датчика использует линию GPIO из SoC для переключения устройства в режим ожидания питания, убедитесь, что встроенное ПО системы ACPI включает правильные _PS3 и _PS0 методы управления (как описано ниже).
- Если оборудование датчика включает микроконтроллер датчика с устройствами датчиков, подключенными за ним, микроконтроллер датчика должен иметь способ питания устройств датчиков. Устройства можно включить с помощью сетевого подключения через шину, которая подключает микроконтроллер к устройствам или линию GPIO от микроконтроллера к устройствам.
- Если для оборудования датчика требуется линия GPIO из SoC для переключения устройства на режим резервной мощности:
- Убедитесь, что строка GPIO из SoC соответствует уровню и требованиям триггера, заданным поставщиком оборудования датчика.
- В пространстве имен ACPI опишите пин-код SoC GPIO в рамках области операции GPIO.
- Предоставьте метод управления _PS3 под устройством датчика в пространстве имен ACPI, чтобы переключить сигнал на линию GPIO при необходимости, чтобы переключить оборудование датчика в режим резервной мощности.
- Предоставьте метод управления _PS0 для устройства датчика в пространстве имен ACPI, чтобы при необходимости изменить сигнал на линии GPIO, переключая оборудование датчика в бездействующий или активный режим после перевода устройства в состояние D0.
- Если оборудование датчика потребляет более одного милливатта в режиме резервного питания:
- Поместите все оборудование датчика на шину питания, которую можно включать и отключать с помощью линии GPIO от SoC. Или, если платформа содержит несколько датчиков с разными требованиями к напряжениям, укажите отдельные рельсы, которые могут быть независимо переключены.
- Опишите переключаемую шину питания как ресурс питания в пространстве имен ACPI.
- В рамках этого ресурса Power Resource укажите методы управления _ON и _OFF, которые включают и выключают энергетическую шину с помощью линии GPIO, описанной как часть региона операций GPIO.
- В пространстве имен ACPI укажите _PR3 и _PR0 объекты, которые назначают Power Resource для оборудования датчика.
- Убедитесь, что методы _ON и _OFF включают требования к устранению дребезга или временным параметрам аппаратного обеспечения датчика.
- Протестируйте и подтвердите управление питанием датчиковых устройств в процессе выполнения на платформе. Тесно сотрудничайте с поставщиком аппаратного обеспечения датчиков, чтобы валидировать управление питанием во время работы системы, когда дисплей включен.
- Проверьте и убедитесь, что оборудование датчика входит в режим ожидания или отключения питания, когда платформа входит в современный режим ожидания.
- Если оборудование датчика использует стеки драйверов датчиков HIDI2C + HID, включенные в Windows, см. сведения о тестировании и проверке.
- Если оборудование датчика использует сторонний драйвер, обратитесь к поставщику драйвера датчика по рекомендуемой методологии тестирования.
- Если драйвер датчика выполняет переход на D3 в рамках его входа в резервный или удаленный режим питания, используйте набор средств производительности Windows, как описано в разделе "Тестирование и проверка". Убедитесь, что оборудование датчика входит в D3, когда платформа входит в современную резервную систему, и что оборудование датчика вступает в D0 после того, как система выходит из современной резервной системы и запрашивается информация о датчике снова.
- Измеряйте потребление энергии оборудования датчика в режиме ожидания или отключения питания.
- Инициируйте несколько переходов в современный резервный режим, а затем стресс-тестируйте работу устройств датчиков и приложений, использующих сведения об датчике при включении дисплея.