Проектирование встраиваемой системы с низким энергопотреблением имеет решающее значение независимо от того, планируете ли вы использовать устройство с питанием от батареи или нет.
Устройство, которое плохо управляет питанием, может стоить клиентам дополнительных денег, привести к избыточному проектированию для рассеивания тепла и даже нагрузить электросеть.
Довольно типично, что команды по встроенным решениям игнорируют энергопотребление до конца цикла разработки. К сожалению, минимизация энергопотребления устройства требует от разработчиков проектировать свои аппаратные и программные архитектуры для достижения минимального энергопотребления.
Давайте рассмотрим три совета по снижению энергопотребления встроенных устройств. Эти советы помогут вам минимизировать энергопотребление с наименьшими усилиями.
Совет № 1: используйте домены питания
Программное обеспечение может многое сделать для оптимизации энергопотребления встроенной системы, но и аппаратное обеспечение должно вносить свой вклад. Один из методов — это разделение оборудования на домены питания.
Идея домена питания заключается в том, что оборудование сегментируется на различные области, которые могут быть индивидуально включены и отключены. Например, система может состоять из микроконтроллера, радио, энергонезависимой памяти и т. д. Каждый из этих основных компонентов в конструкции оборудования будет сегментирован так, чтобы их можно было включить или отключить в зависимости от состояния питания системы.
Если система находится в состоянии низкого энергопотребления, может не быть необходимости поддерживать питание радио. Таким образом, вместо того, чтобы позволять ему потреблять энергию, микроконтроллер может использовать сигнал GPIO для отключения питания радио. Результатом будет экономия энергии, которая в противном случае была бы потрачена впустую.
Когда вы решите использовать домены питания, важно тщательно рассмотреть следующее:
- Будет ли время включения домена питания соответствовать требованиям системы в реальном времени?
- Будет ли включение устройства по-прежнему экономить энергию? По сути, мощность, используемая для запуска устройства, меньше, чем просто перевод его в состояние низкого энергопотребления?
- Могут ли какие-либо компоненты быть «обратно запитаны» в случае аварии, что приведет к потере энергии?
Домены питания могут быть удобным инструментом, если их правильно использовать. Просто будьте осторожны, чтобы сделать свой проект простым и не допустить неприемлемого увеличения стоимости материалов. Всегда есть компромисс, который вам придется оптимизировать.
Совет №2: тщательно управляйте периферийными устройствами
Наш следующий совет по снижению энергопотребления встроенных систем — тщательно управляйте периферийными устройствами. Каждый микроконтроллер имеет множество периферийных устройств, таких как GPIO, SPI, I2C, USART, таймеры и т. д. Не все периферийные устройства созданы одинаково!
Микроконтроллер будет иметь некоторые периферийные устройства, которые специально разработаны для использования в маломощных приложениях. Например, вы можете обнаружить, что ваш микроконтроллер имеет таймер LP, LP USART и т. д. LP означает маломощный! Эти периферийные устройства были разработаны для потребления меньшего количества энергии, чем типичная периферийная версия. Вместо использования универсального периферийного устройства начните с использования маломощной версии.
Помимо использования маломощных периферийных устройств, вам захочется узнать, какие дополнительные «помощники» предоставляет ваш микроконтроллер. Например, многие устройства сегодня поставляются с аппаратными ускорителями, специализированными аппаратными блоками, предназначенными для ускорения операций. Это могут быть криптографические ускорители, CRC-калькуляторы и т. д.
Ускоритель может увеличить энергопотребление, но во многих случаях он будет использовать меньше энергии, чем ЦП, для выполнения той же операции. Таким образом, включение ускорителя будет иметь общий чистый эффект снижения энергопотребления. Это немного нелогично, потому что мы увеличиваем энергопотребление, разрешая ускоритель, но экономим энергию в целом, выполняя операцию быстрее.
Существует множество других методов, которые вы также можете использовать для снижения энергопотребления, например:
- Отключение или выключение неиспользуемых периферийных устройств.
- Снижение тактовой частоты.
- Использование прямого доступа к памяти (DMA) для ускорения передачи данных.
При снижении энергопотребления вашего устройства ключевым моментом является определение способов ускорения операций, которые позволят системе перейти в состояние пониженного энергопотребления.
Совет №3: Оптимизируйте прошивку
Программное обеспечение на вашем устройстве играет решающую роль в том, сколько энергии оно потребляет. ЦП является одним из самых значимых устройств потребления энергии в большинстве продуктов. Это означает, что вы должны использовать меньше ЦП, чтобы снизить энергопотребление вашей встроенной системы. Есть несколько способов, с помощью которых вы можете помочь своему ЦП работать меньше.
Во-первых, включите оптимизации вашего компилятора. В практике попадается уйма команд, которые оставляют свои уровни оптимизации на -O0. Это не оптимизация! Как минимум, вы должны использовать -Og, который состоит из базовых оптимизаций, которые не влияют на отладку. Если вас беспокоит энергопотребление, вы хотите оптимизировать свой код для скорости. Для этого вам потребуется использовать уровень оптимизации -O2 или -O3. Если вы действительно хотите выйти за рамки, вы можете использовать -Ofast, но это может нарушить строгое соответствие стандартам. Однако ваш код будет работать намного быстрее.
Еще один метод, помогает, когда вы хотите использовать меньше циклов ЦП, — это коммерческий компилятор. Понятное дело, что разработчики программного обеспечения не любят платить за вещи! Однако, как показала практика, вы можете увеличить выполнение кода на 10–40% с помощью коммерческого компилятора. Результаты существенно зависят от того, что вы делаете и какой компилятор вы выбираете, но это все еще часто упускаемый из виду вариант.
Отсюда есть целый ряд методов, которые вы можете использовать для снижения энергопотребления, таких как:
- Использование архитектуры программного обеспечения, управляемой событиями.
- Создание менеджера питания для управления состояниями питания.
- Использование бестактного режима, если ваша RTOS его поддерживает.
- Использование инструкции WFI на процессорах Arm.
- Использование ОЗУ с нулевым ожиданием.
Это всего лишь несколько примеров оптимизаций, которые вы можете использовать для улучшения своего программного обеспечения. Вы можете использовать бесчисленное множество других методов, но эти являются наиболее упускаемыми из виду и мощными.
Подытожим
В сегодняшней статье мы рассмотрели несколько советов по снижению энергопотребления встраиваемых систем. Оптимизацию энергопотребления можно рассматривать как вызов или игру.
Обычно можно выполнить следующие шаги для оптимизации энергопотребления:
- Измерьте текущее энергопотребление устройства.
- Разработайте новые функции или выполните оптимизацию.
- Измерьте результат изменений и количественно оцените разницу.
- Повторите.
Важно измерять и количественно оценивать любые изменения энергопотребления. Когда вы начинаете идти по пути снижения энергопотребления встраиваемой системы, это может стать увлекательным! Прежде чем вы это осознаете, вы потратите много времени, выжимая каждый кулон заряда или джоуль энергии из вашего устройства. Однако существует компромисс между временем и энергопотреблением.
Рекомендуется отслеживать улучшения оптимизации и рассчитывать процентное улучшение. В конце концов вы обнаружите, что новые изменения приводят к очень небольшим улучшениям, и на этом этапе вы достаточно оптимизировали свое устройство, так что любые дополнительные временные затраты, вероятно, не стоят того.
Если вы будете следовать этим советам, вы должны быть на пути к получению минимально возможной оценки для вашего устройства. (Возможно, это единственный раз, когда вы хотите получить минимальную оценку!)
Ссылка на первоисточник: https://www.designnews.com/embedded-systems/3-tips-to-lowering-your-embedded-systems-power-consumption
Возможно, вам также понравится: