Управление состоянием выключения питания для устройств Azure Sphere

Высокоуровневое приложение Azure Sphere может использовать API управления питанием для перевода устройства в состояние выключения питания. Состояние выключения питания — это минимально возможное состояние питания, в которое может находиться устройство, за исключением полного выключения. Устройство может быть разбужено двумя событиями:

  • Поступление входного сигнала, активировающего пин-код WAKEUP.
  • Прохождение указанного промежутка времени.

Чтобы использовать эту функцию, необходимо:

  1. Настройте оборудование.
  2. Объявите значение ForcePowerDown для возможности PowerControls в манифесте приложения.
  3. Используйте PowerManagement_ForceSystemPowerDown из API управления питанием .

Состояние выключения питания

Состояние выключения питания имеет следующие характеристики:

  • Отключается все, кроме часов реального времени (RTC). Это означает, что все подключения, ОЗУ, флэш-память, ядра ЦП и т. д. отключены.
  • Состояние не сохраняется. Пробуждение от Power Down эквивалентно холодной загрузке.
  • Пробуждение от выключения происходит при срабатывании будильника часов в режиме реального времени (пробуждение на основе времени) или при низком нажатии пин-кода WAKEUP (пробуждение на основе событий), в зависимости от того, что произойдет первым.

Примечание

Сертификат DAA (клиент) постоянно сохраняется. В результате устройство не подключается к AS3 для получения нового сертификата после каждой холодной загрузки или выключения питания, которое происходит между обычными 24-часовые обновления. Это сокращает потребление электроэнергии и время, необходимое для подключения к облаку.

Особенности MT3620

Рекомендации по отключению питания MediaTek MT3620 приведены в заметках по оборудованию MT3620.

Принудительное выключение питания и обновления

Предупреждение

Несоблюдение рекомендаций в этом разделе может привести к тому, что устройство не сможет получить обновления приложений или ОС и потребует восстановления. Внимательно прочитайте перед использованием ForcePowerDown.

Поскольку и ForcePowerDown, и ForceReboot позволяют приложению выключать устройство в любое время, это приложение несет ответственность за то, чтобы устройство по-прежнему может периодически проверка обновлений при использовании ForcePowerDown или ForceReboot. Чтобы упростить проверка обновлений в этом сценарии, мы ввели связанные с обновлениями уведомления о системных событиях, чтобы предоставить приложениям сведения о процессе обновления, чтобы ваши приложения могли принимать обоснованное решение о том, когда выключать устройство. Соответствующие доступные системные уведомления о событиях:

  • SysEvent_Events_NoUpdateAvailable. Обновление проверка завершено и обновления ОС или приложений недоступны.
  • SysEvent_Events_UpdateStarted: началось скачивание обновления ОС или приложения. За этим событием последует событие SysEvent_Events_UpdateReadyForInstall , когда обновление будет полностью загружено и готово к установке. Если обновление недоступно, вместо этого события будет отправлено SysEvent_Events_NoUpdateAvailable .
  • SysEvent_Events_UpdateReadyForInstall: обновление завершило скачивание и готово к применению при перезагрузке.

Приложения, использующие ForcePowerDown, должны учитывать состояние обновления устройства. Приложения, использующие ForcePowerDown, должны всегда регистрировать эти события и учитывать их, чтобы приложение не приводило к отсрочке обновления на неопределенный срок.

Мы предоставляем пример приложения , в котором показано, как правильно создавать проверки обновлений в приложении, которое использует ForcePowerDown. Настоятельно рекомендуется начинать с этого примера при разработке приложений с помощью ForcePowerDown.

Завершение работы приложения

После выполнения запроса Power Down в приложение отправляется сигнал SIGTERM. Если приложение обрабатывает сигнал, у него есть до 2 секунд, чтобы выполнить очистку. В противном случае приложение будет немедленно завершено. Дополнительные сведения, в том числе о том, как правильно обрабатывать сигнал, см. в разделе Завершение работы приложения для обновления.

Пример приложения

Пример приложения Power Down демонстрирует, как правильно использовать ForcePowerDown для снижения энергопотребления, сохраняя при этом, что устройство будет периодически спать, чтобы проверка обновлений ОС и приложений.

Этот пример мигает красным индикатором, который представляет работу или "бизнес-логику", которую приложение, возможно, потребуется выполнить во время пробуждения устройства, а затем выключает устройство в течение указанного времени. При каждом N-м цикле выключения питания или пробуждения приложение будет дольше поддерживать пробуждение устройства, чтобы проверка обновлений, а не немедленно выключать после завершения бизнес-логики (мигающий красный индикатор в этом случае). Чтобы убедиться, что обновления завершены перед выключением, пример приложения использует три уведомления о системных событиях (SysEvent_Events_NoUpdateAvailable, SysEvent_Events_UpdateStarted и SysEvent_Events_UpdateReadyForInstall), которые информируют приложение о состоянии проверка или скачивания обновления. В примере приложения также показано, как измерить текущее потребление RDB, чтобы убедиться, что устройство выходит из строя.