Рецепт рационального питания от Microsoft

Рецепт рационального питания от Microsoft

Когда-то операционные системы персональных ком­пью­те­ров раз­ра­ба­ты­ва­лись в со­от­вет­ст­вии с су­щест­ву­ю­щей ар­хи­тек­ту­рой ап­па­рат­но­го обес­пе­че­ния. Стре­ми­тель­ный рост воз­мож­но­с­тей тех­ни­ки и потреб­но­стей поль­зо­вателей, а в пер­вую оче­редь фак­тор ин­тел­ле­к­ту­а­ли­за­ции обо­ру­до­ва­ния, пе­ре­вер­ну­ли этот прин­цип. Се­го­дня в об­лас­ти ап­па­рат­ного ди­зай­на x86-сов­ме­сти­мых плат­форм, «ко­ман­ду­ет па­ра­дом» про­граммная ин­дус­т­рия. Об­ра­тив­шись к стра­нич­ке ба­зы зна­ний MSDN, ссыл­ка на ко­то­рую при­ве­де­на в кон­це ста­тьи, про­а­на­ли­зи­ру­ем тре­бо­ва­ния к Po­wer Ma­na­ge­ment в кон­тек­сте ОС Win­dows 10.

Тезисы Windows 10 Ready

1. Charging always occurs when connected to the charger. Это означает, что независимо от текущего состояния мобильной плат­фор­мы, фактом физического подключения к зарядному устройству необходимо воспользоваться и начать за­ряд­ку. Из этого следует важное требование к контроллеру электропитания, который должен выполнить не­об­хо­ди­мые опе­ра­ции (открыть соответствующие коммутирующие ключи и включить широтно-импульсный модулятор) без участия про­грам­мно­го обеспечения, ведь если зарядное устройство будет подключено к выключенному ноутбуку, когда цен­т­раль­ный процессор физически обесточен, ни UEFI, ни ОС в этой операции участвовать не могут.

2. Windows can always boot when connected to the charger. Означает, что независимо от текущего состояния, исправности и даже наличия батареи, подключение зарядного устройства должно означать возможность загрузки ОС. Это логично: электроэнергия есть — можем работать, а потому полностью севшая батарея — не повод для безделья. Читая между строк, понимаем, что ограничения, известные как Dead Battery Provision, снимаются. Этот тезис не касается устройств, использующих Windows 10 Mobile.

3. Hardware autonomously manages charging. Этот тезис продолжает тему автономности локального ин­тел­лек­та кон­т­рол­ле­ра электропитания, начатую в первом тезисе. Выбор оптимального зарядного тока, в том числе динамически, в со­от­вет­ст­вии с состоянием батареи, изменяющимся во времени, должен выполняться контроллером аппаратно, даже ес­ли мобильное устройство выключено (находится в состоянии S5 shutdown), либо низкоуровневое программное обес­пе­че­ние «зависло».

4. Charging stops automatically when the battery is fully charged or when a fault occurs. И это про автономность. Отключение зарядного тока при достижении заданного уровня заряда должно выполняться аппаратно и своевременно, не­за­ви­си­мо от состояния центрального процессора, Firmware и ОС. Последствия нарушения этого требования очевидны: воз­мож­ный перезаряд батареи при несвоевременном отключении зарядного тока в лучшем случае уменьшит ее ре­сурс, в худ­шем случае может привести к перегреву и даже возгоранию.

Программный стек Power Management подсистемы

Способность контроллера электропитания к самостоятельному принятию решений по управлению зарядным током не означает, что программный мониторинг и управление отсутствуют.

Рассмотрим стек программных протоколов (Рис.1). На нижнем уровне работает ACPI machine (Advanced Configuration and Power Interface), обеспечивая передачу информации о топологии и текущем состоянии платформы от UEFI к опе­ра­ци­он­ной системе. Далее три системных уровня обеспечивают инкапсуляцию Vendor-Specific особенностей плат­фор­мы и приведение ее программной модели к формату унифицированного устройства, нумеруемого и об­слу­жи­ва­е­мо­го в рамках процедур IOCTL (Input-Output Control). Идеология этого интерфейса подразумевает общие методы для до­сту­па к уст­ройст­вам и файлам. Результатом являются прикладные API (Application Program Interfaces), доступные для поль­зо­ва­тель­ских приложений, возвращающие в простом формате информацию о батарее: напряжение, уровень за­ря­да, тем­пе­ра­ту­ра, имя мо­де­ли, имя производителя и т.д.

Стек драйверов и интерфейсов, обеспечивающих доступ программного обеспечения к аппаратным ресурсам контроллера электропитания

Рис 1. Стек драйверов и интерфейсов, обеспечивающих доступ
программного обеспечения к аппаратным ресурсам контроллера электропитания

Два варианта топологии Power Management подсистемы

Возможность программно прочитать информацию о батарее, включая текущие физические параметры, а также воз­дей­ст­во­вать на ее режимы, требует физического канала доступа. С ним и взаимодействует нижнее звено стека драй­ве­ров. Кон­т­рол­лер батареи связан с внешним миром двунаправленным интерфейсом System Management Bus. Эта по­сле­до­ва­тель­ная шина занимает два контакта в составе разъема батареи: данные (SMB DATA) и тактирование (SMB CLK).

Топология на Рис.2, в качестве средства коммуникации, задействует канал SMBus, реализованный в составе ми­кро­схе­мы Embedded Controller мобильной платформы. В этом случае, ACPI-методы, обслуживающие батарею, ад­ре­су­ют ре­сур­сы этого контроллера.

Метод доступа к ресурсам Power Management подсистемы, использующий Embedded Controller мобильной платформы в качестве посредника

Рис 2. Метод доступа к ресурсам Power Management подсистемы,
использующий
Embedded Controller мобильной платформы в качестве посредника

Топология на Рис.3, задействует канал SMBus в составе системной логики. Недостатки: возможностей для ис­поль­зо­ва­ния локального интеллекта микросхемы EC, в этом случае нет. Преимущества: ресурсы батареи, управляемой по ши­не SMBus, непосредственно доступны программному обеспечению, выполняемому на хост-платформе. Иногда это по­зво­ля­ет про­чи­тать из батареи чуть больше информации, чем положено по стандарту...

Метод доступа к ресурсам Power Management подсистемы, использующий SMBus (I2C) контроллер в составе системной логики

Рис 3. Метод доступа к ресурсам Power Management подсистемы,
использующий
SMBus (I2C) контроллер в составе системной логики

Встроенный контроллер (EC, Embedded Controller) выполняет ряд вспомогательных операций в составе мобильной платформы, в том числе реализует функциональность в рамках интерфейса ACPI, освобождая хост-процессор от рутинной работы.

прощенная схема подключения Embedded Controller мобильной платформы
Рис 4. Упрощенная схема подключения Embedded Controller мобильной платформы. Контроллер может принимать данные и команды (DATA WRITE, COMMAND WRITE) и возвращать данные и статус (DATA READ, STATUS READ). Генерируемые запросы на прерывание SMI (System Management Interrupt) и SCI (System Control Interrupt) позволяют информировать центральный процессор о событиях в окружении EC. Фрагмент документа ACPI 6.1 specification.

Вместо послесловия

Современные аппаратные платформы, проектируются и сертифицируется в соответствии с требованиями, предъ­яв­ля­е­мы­ми разработчиками операционных систем. Во времена IBM PC и MS-DOS, сам факт участия про­грам­мис­тов в раз­ра­бот­ке схем электропитания мог показаться странным. Сегодня, прежде чем задуматься об оптимальной емкости сглаживающих конденсаторов и рабочей частоте широтно-импульсного модулятора, разработчик обязан изучить ре­ко­мен­да­ции софтверного гиганта. Особенно это актуально для мобильных устройств, снабженных аккумуляторами, а так­же плат­форм, USB-порты которых способны выполнять роль интеллектуального зарядного устройства, в со­от­вет­ст­вии с тре­бо­ва­ни­я­ми Battery Charging Specification.

Источники информации

  1. Рекомендации разработчикам аппаратного обеспечения, описание базовых алгоритмов и методов функ­ци­о­ни­ро­ва­ния подсистемы электропитания, а также ссылки для получения более подробной информации, доступны в ба­зе зна­ний MSDN.
  2. Документацию, регламентирующую роль подсистемы USB и ее интеграцию в архитектуру управления элек­т­ро­пи­та­ни­ем, в частности основополагающий документ Battery Charging Specification Revision 1.2 можно загрузить у нас или на странице поддержки разработчиков Universal Serial Bus.
  3. Свободно распространяемая утилита Power Info, — один из проектов тестовой лаборатории «Компостера», обес­пе­чи­ва­ет получение информации о подсистеме электропитания и мониторинг физических параметров ак­ку­му­ля­тор­ных батарей.