Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Режимы управления питанием
Компоненты вне системы на микросхеме (SoC) подсистемы камеры должны поддерживать два режима управления питанием. Компоненты камеры должны поддерживать активный режим, в котором устройство камеры активно передаёт потоковое содержимое в приложение. Кроме того, компоненты камеры должны поддерживать режим, в котором устройство камеры отключается, питание удаляется, а устройство камеры потребляет ноль ватт. В следующей таблице описаны активные и удаленные режимы управления питанием для устройства камеры.
| Режим | Описание | Состояние питания устройства (Dx) | Среднее потребление энергии | Задержка перехода в активное состояние | Механизм перехода |
|---|---|---|---|---|---|
Активный стриминг |
Устройство камеры активно передаёт содержимое потока в приложение. Содержимое может быть видео, предварительным просмотром или фотографией. |
Да |
Датчик, автофокус и вспышка. |
Не применимо |
Программно инициированный переход на уровень D0. (Приложение инициировало потоковую передачу, задав состояние пин-кода записи на KSSTATE_ACQUIRE.) |
Питание — удалено |
Устройство камеры не выполняет потоковую передачу содержимого в приложения. Контекст не сохраняется на датчике камеры, устройстве флэш-памяти или подсистеме автоматического фокуса. |
Да |
0 ватт |
< 200 миллисекунд до первого кадра (см. примечание ниже по таблице.) |
Переход, инициированный программным обеспечением D3. (Для всех пин-адресов потоковой передачи задано любое значение, отличное от KSSTATE_RUN.) |
Заметка Windows ожидает, что время перехода из активного режима в режим отключения (задержка выключения) будет меньше 100 миллисекунда. Большинство усилий по управлению питанием ориентировано на сокращение времени перехода от режима отключенного питания к активному режиму (время включения).
Те же два режима управления питанием, активный и при отключённом питании, должны поддерживаться единицами обработки изображений на SoC. Поставщик SoC определяет отдельные компоненты, составляющие единицы обработки изображений и их состояния управления питанием. Рекомендуется, чтобы один драйвер управлял единицами обработки изображений на базе SoC, а все единицы обработки изображений для захвата камеры были представлены в модуль энергопотребления (PEP) как единый компонент с управлением питанием.
Механизмы управления питанием программного обеспечения
И в блоках обработки изображений системы на кристалле (SoC), и в компонентах камеры off-SoC ожидается отсутствие энергопотребления (ноль ватт) во время нахождения системы в режиме ожидания с поддержкой связи и отключенного дисплея. Основным программным механизмом управления питанием является учет ссылок на захват камеры. Это число ссылок поддерживается драйвером контроллера камеры, который является AVStream минидрайвером. Этот базовый механизм управления питанием можно использовать в любой момент, когда система включена, включая время включения системного дисплея.
Драйвер контроллера камеры должен перенаправить состояние управления питанием на драйверы, которые управляют компонентами off-SoC, такими как датчик камеры, автоматический фокусировщик и вспышка. В ответ драйверы, управляющие этими устройствами, должны предпринять определенные действия для изменения режимов энергопотребления и отключения или включения питания.
Рекомендуемая архитектура драйвера
Подсистема камеры должна быть предоставлена Windows с помощью одного минидрайвера AVStream, называемого драйвером контроллера камеры. Рекомендуется, чтобы драйвер контроллера камеры напрямую не обращается к оборудованию и не напрямую управляет аппаратными компонентами управления питанием. Вместо этого драйвер контроллера камеры должен пересылать запросы на управление питанием и оборудованием другим драйверам, составляющим подсистему камеры.
Аппаратное обеспечение для обработки изображений на SoC должно управляться с помощью модуля управления питанием (PEP) SoC. Оборудование обработки изображений должно управляться драйвером Windows Driver Frameworks (WDF), и этот драйвер должен включить сотрудничество с PEP, задав член IdleTimeout в структуре WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS значение SystemManagedIdleTimeout. Этот параметр позволяет PEP управлять любой топологией совместного использования тактовой частоты и цепей питания, уникальной для оборудования системы на кристалле (SoC). Драйвер, который управляет единицей обработки изображений в SoC, должен представлять всю единицу обработки изображений как единый управляемый питанием компонент, чтобы можно было использовать возможности WDF по умолчанию для управления питанием.
Компоненты подсистемы камеры вне SoC должны управляться одним или несколькими драйверамиKernel-Mode Driver Framework (KMDF). Драйверы для компонентов вне SoC должны переходить в состояние с отключённым питанием (D3), когда их компоненты больше не требуются для съёмки камеры. Кроме того, драйверы для компонентов off-SoC должны активировать D3cold, что позволяет основной подсистеме ACPI изменять состояние линий GPIO для подачи и отключения питания. Дополнительные сведения см. в разделе "Поддержка D3cold" в драйвере.
На следующей схеме блоков показана рекомендуемая архитектура драйвера.
Все драйверы, составляющие подсистему камеры, включая драйвер контроллера камеры, драйвер единицы обработки изображений и драйверы компонентов камеры off-SoC, должны быть перечислены в одном файле установки драйвера (INF). Все драйверы подсистемы камеры должны быть членами класса установки устройства PnP для обработки изображений. ClassGuid для устройств обработки изображений — {6bdd1fc6-810f-11d0-bec7-08002be2092f}.
Каждый драйвер, представляющий один компонент камеры, должен быть перечислен как одно устройство в пространстве имен ACPI.
Активные и обесточенные состояния
Драйвер контроллера камеры должен перенести устройства камеры в состояние удаления питания, если приложения не передают содержимое с устройства камеры. Приложение может остановить потоковую передачу, так как оно было закрыто пользователем или перемещено в фон и приостановлено.
Если приложение инициирует потоковую передачу с камеры, устройства которых находятся в состоянии удаления питания, драйвер контроллера камеры должен вернуть устройства камеры обратно в активное состояние в пределах 100 миллисекунда.
Чтобы изменить состояние питания различных компонентов подсистемы камеры, драйверы контроллера камеры используют собственные интерфейсы для взаимодействия с другими драйверами, составляющими подсистему камеры. Чтобы запросить соответствующий интерфейс, драйвер подсистемы камеры должен использовать стандартный метод, который предназначен для отправки запроса IRP_MN_QUERY_INTERFACE ввода-вывода, который получает набор указателей функции.
Драйвер контроллера камеры должен поместить устройство камеры в состояние удаления питания, когда все пин-коды потоковой передачи вошли в состояние KSSTATE_STOP . Windows автоматически приостанавливает приложения переднего плана, когда пользователь нажимает кнопку питания, а система входит в режим ожидания подключения. При приостановке приложения захвата API захвата камеры, предоставляемые средой выполнения Windows Runtime, уведомляются и изменяют состояние контактов камеры, что приводит к их вводу в состояние KSSTATE_STOP.
Когда первый пин-код потоковой передачи входит в состояние KSSTATE_ACQUIRE , драйвер контроллера камеры должен поместить устройство камеры ( включая единицу обработки изображений on-SoC) в активном состоянии.
Связанные функции камеры
Датчик камеры и устройства флэш-памяти могут иметь дополнительные функции уровня платформы, которыми должен управлять драйвер. Эти функции могут включать следующие функции:
- Включение, отключение и настройка датчика камеры на шине I2C.
- Настройка скорости вспышки и уровня яркости на шине I2C.
- Обнаружение тепловых условий посредством модуля вспышки через линии GPIO к SoC.
Для реализации этих функций разработчики драйверов устройств камеры должны использовать методы и рекомендации, приведенные в следующей таблице.
| Функция | Описание | Подключение к оборудованию и встроенному ПО | Механизм программного обеспечения |
|---|---|---|---|
| Конфигурация датчиков | Перечислите возможности оборудования датчика камеры или настройте текущий режим работы. | Обмен данными по шине I2C. Ресурсы I2C описаны в методе _CRS под устройством камеры в пространстве имен ACPI. | Интерфейс запроса простой периферийной шины (SPB) ввода-вывода (I/O) используется для взаимодействия с контроллером узла I2C и устройством датчика камеры. |
| Обнаружение событий датчика | Вызов событий или указание состояния с помощью линий GPIO от датчика камеры к SoC. | Ресурсы GPIO, предоставляемые устройству камеры. Эти ресурсы описаны в методе _CRS на устройстве камеры в пространстве имен ACPI. Пины GPIO, которые сигнализируют о событиях, должны быть описаны как ресурсы прерывания GPIO. | Прерывание обрабатывается драйвером в ответ на событие GPIO. Интерфейс запроса ввода-вывода spB используется для взаимодействия с устройством датчика для определения причины прерывания. |
| Конфигурация флэш-памяти | Настройте устройство флэш-памяти для скорости ускорения, количества подключенных индикаторов или других свойств. | Обмен данными по шине I2C. Ресурсы I2C описаны в методе _CRS под устройством камеры в пространстве имен ACPI. | Интерфейс запроса ввода-вывода spB используется для взаимодействия с контроллером узла I2C и устройством датчика камеры. |
| Координация с драйвером единицы обработки изображений | Инициируйте и координируйте захват с цепью обработки изображений на SoC. | Не применимо | Частный интерфейс предоставляется драйвером, который управляет единицами обработки изображений. |
Перечисление устройств камеры
Чтобы идентифицировать устройства камеры на платформе, приложения обычно запрашивают диспетчер Plug and Play (PnP), чтобы найти экземпляры устройств камеры. Каждый экземпляр PnP соответствует одному устройству камеры. Чтобы определить такой экземпляр, системный интегратор определяет устройство камеры в пространстве имен ACPI. Устройство камеры может передавать содержимое только одному приложению одновременно. Однако приложение может выполнять потоковую передачу из нескольких устройств камеры одновременно.
Каждое устройство камеры, представленное драйвером контроллера камеры (мини-driver AVStream), должно быть перечислено в пространстве имен ACPI в качестве отдельного устройства, являющегося дочерним элементом графического драйвера.
В качестве специального случая, если платформа SoC не может одновременно передавать содержимое со всех устройств камеры на платформе в любом сочетании их указанных разрешений или режимов, вместо этого можно перечислить одно устройство камеры. Однако эта реализация требует тщательного рассмотрения и должна выполняться только в прямом сотрудничестве с корпорацией Майкрософт.
Устройства, представляющие оставшуюся часть подсистемы камеры, включая модуль обработки изображений on-SoC и датчик камеры off-SoC, автофокусатор и вспышку, должны быть перечислены в качестве одного или нескольких устройств в пространстве имен ACPI. Блок обработки изображений on-SoC должен быть зарегистрирован как устройство, отдельное от устройств, представляющих компоненты камеры вне SoC.
Контрольный список управления питанием камеры
Системные интеграторы, поставщики датчиков камеры и поставщики системы на микросхеме (SoC) должны использовать контрольный список в этой статье, чтобы обеспечить совместимость их системы управления питанием с Windows 10.
- Системный интегратор должен взаимодействовать и сотрудничать с поставщиком SoC при выборе компонентов датчика камеры и интеграции устройств камеры.
- Разработчик драйвера контроллера камеры должен выполнить следующие действия:
- Отключите питание на оборудование камеры, если приложения больше не передают содержимое с устройства камеры. (Это происходит, когда все пины захвата находятся в состоянии KSSTATE_STOP.)
- Включите питание камеры, когда приложение начинает потоковую передачу с любого из устройств захвата камеры.
- Разработайте один драйвер KMDF, который управляет единицей обработки изображений on-SoC. Драйвер контроллера камеры должен использовать пользовательские интерфейсы драйверов, чтобы сообщить драйверу модуля обработки изображений инициировать или завершить захват камеры.
- Убедитесь, что драйвер модуля обработки изображений зарегистрирован в системе управления питанием Windows (PoFx), чтобы PEP, предоставленный поставщиком SoC, мог управлять питанием оборудования модуля обработки изображений.
- Разработайте один драйвер Windows Driver Frameworks (WDF) для управления каждым аппаратным компонентом, который управляет оборудованием камеры вне SoC, включая датчик камеры, автофокусировку и вспышку (при наличии). Драйвер контроллера камеры должен использовать пользовательские интерфейсы драйверов, чтобы указать драйверам off-SoC аппаратного обеспечения камеры начать или завершить захват изображения.
- Убедитесь, что драйверы, управляющие оборудованием камеры off-SoC, инициируют переход D3 при отключении компонентов камеры, чтобы ACPI был проинформирован о переходе D3 и может удалить мощность из компонентов. • Убедитесь, что драйверы, управляющие оборудованием камеры off-SoC, осуществляют переход в состояние D0, когда компоненты камеры должны быть включены, чтобы ACPI получила информацию о переходе в состояние D0 и чтобы питание было подано к компонентам.
- Разработайте любой код драйвера для управления конфигурацией оборудования датчика камеры или устройства флэш-памяти.
- Сообщите системной интегратору о ожидаемом упорядочении всех ресурсов GPIO и I2C, необходимых для управления оборудованием датчика камеры или флэш-устройством.
- Убедитесь, что все драйверы, составляющие подсистему камеры, перечисляются в одном файле установки драйвера (INF).
- Убедитесь, что все драйверы, составляющие подсистему камеры, являются членами класса установки устройства PnP. Класс GUID для устройств обработки изображений — {6bdd1fc6-810f-11d0-bec7-08002be2092f}.
- Системный интегратор должен разработать встроенное ПО ACPI платформы, чтобы выполнить следующие действия:
- Перечислите каждое устройство камеры как отдельное устройство в пространстве имен ACPI.
- Включите объект _PLD под каждым устройством камеры в пространство имен ACPI, чтобы указать, находится ли камера на передней или задней части компьютера.
- Включите ресурс питания в корневое пространство имен ACPI для каждого устройства камеры. Все компоненты оборудования вне-SoC для данного устройства камеры (датчик, AF, вспышка и т. д.) должны питаться от одного источника питания.
- Реализуйте методы управления _ON и _OFF для каждого ресурса питания, чтобы изменить состояние пин-кода GPIO из SoC, который управляет оборудованием переключения электроэнергии.
- Укажите методы _PR0 и _PR3 под каждым устройством камеры в пространстве имен, чтобы ссылаться на ресурс питания для каждого устройства камеры и связанного с ним оборудования.
- Предоставьте объект _CRS под каждым устройством камеры в пространстве имен ACPI для перечисления ресурсов GPIO и I2C для датчика камеры и оборудования флэш-памяти. Ресурсы GPIO и I2C должны быть в порядке, указанном разработчиком драйвера датчика камеры.
- Системный интегратор должен разработать оборудование платформы и маршрутизацию питания таким образом:
- Каждое устройство камеры имеет собственный энергопотребление, который можно контролировать независимо от рельсов питания для других устройств камеры, и которые можно включить и отключить с помощью пин-кода GPIO из SoC.
- Системный интегратор должен тестировать и проверять следующее:
- Оборудование устройства камеры не потребляет мощность (ноль ватт), если устройство камеры не используется приложением. Системный интегратор должен использовать инструментированное оборудование для измерения этого потребления энергии.