Как сделать, питание экономит на основанной на ARM Встроенной системе Linux?

Я планирую разработать миленькое приложение, которое будет работать на основанной на руке встроенной платформе Linux; однако, так как та платформа будет работающей от аккумулятора, я ищу релевантную информацию о том, как обработать питание, сохраняют.

Довольно важно получить достойное время работы от аккумулятора.

Я думаю, что ядро Linux реализовало некоторую поддержку этого, но я не могу найти документацию относительно этого предмета.

  • Любой вход о том, как разработать мою программу и систему, приветствуется.

  • Любой вход о том, как ядро Linux пытается, решает этот тип проблемы, также приветствуется.

Другие вопросы:

  • То, сколько делает программу в пространстве пользователя, должно сделать?

  • И необходимо ли изменить ядро?

  • О чем системные вызовы ядра или API хороши для знания?


Обновление:

Кажется, что люди, связанные с сайтом "Свободных электронов", произвели некоторые хорошие презентации этого предмета.

Но возможно у кого-то еще есть еще больше информации об этом предмете?


Обновление:

Кажется, что идея Adam Shiemke пойти посмотреть на проект MeeGo может быть лучшей подсказкой до сих пор.

Это может быть лучший Встроенный проект Linux c батарейным питанием там в данный момент.

И Nokia обычно довольно хороша в этом типе вещи.


Обновление:

Нужно быть осторожным относительно Android, так как он имеет "измененное" ядро Linux в нижней части, и некоторые вещи, которые сделали люди в Google, не используют базовые/нормальные ядра Linux. Я думаю, что некоторые их идеи управления питанием могли быть неприятными к повторному использованию для других проектов.

16
задан Jonathan Leffler 3 June 2012 в 03:28
поделиться

2 ответа

На самом деле я этого не делал, но у меня есть опыт работы с двумя разными (Linux и встроенное управление питанием). Когда вы думаете об управлении питанием, на ум приходят два основных дистрибутива Linux: Android и MeeGo. MeeGo использует (насколько я могу судить) немодифицированное ядро ​​2.6 с некоторыми дополнительными функциями. Мне не удалось многое узнать о том, в чем именно заключается их стратегия управления питанием, хотя я подозреваю, что в ближайшем будущем об этом станет больше, по мере того, как продукт приближается к зрелости.

Однако по Android доступно гораздо больше информации. Они запускают довольно сильно модифицированное ядро ​​2.6. Вы можете увидеть хорошую информацию о различных стратегиях, реализованных в http://elinux.org/Android_Power_Management (а также о драме ядра). Некоторые другие ссылки:

https://groups.google.com / group / android-kernel / browse_thread / thread / ee356c298276ad00 / 472613d15af746ea? lnk = raot & pli = 1

http://www.ok-labs.com/blog/entry/context-switching-in-context/

Я уверен, что вы можете найти больше ссылок такого рода. Поскольку оба проекта имеют открытый исходный код, вы можете взять код ядра и, вероятно, получить дополнительную информацию от людей, которые действительно знают, о чем они говорят, в формах и группах.

На уровне драйвера вы должны убедиться, что ваши драйверы могут правильно обрабатывать приостановку и отключение устройств, которые не используются. Большинство устройств, предназначенных для мобильного рынка, предлагают очень детальную поддержку для отключения отдельных компонентов и настройки параметров часов (помните, что мощность пропорциональна частоте часов ^ 2).

Надеюсь, это поможет.

11
ответ дан 30 November 2019 в 22:37
поделиться

Вы можете немного сэкономить электроэнергию, не требуя какой-либо специальной поддержки со стороны ОС, если вы пишете (или, по крайней мере, имеете исходный код) свое приложение и драйверы.

Ваши драйверы должны иметь возможность отключать связанные с ними устройства и восстанавливать их, не требуя перезапуска или нестабильности системы. Если ваши устройства подключены к шине PCI / PCIe, выясните, какие состояния питания они поддерживают (D0 - D3) и что нужно сделать вашему драйверу для перехода между этими режимами с низким энергопотреблением. Если вы выбираете аппаратные устройства для использования, ищите устройства, которые соответствуют спецификации управления питанием PCI или имеют аналогичные функции (например, спящий режим и сигнал прерывания «пробуждение»).

Когда ваше устройство загружается, каждое устройство, которое может определить, подключено ли оно к чему-либо, должно это сделать. Если какие-либо порты или шины обнаруживают, что они не используются, выключите их или переведите в спящий режим. Порт, работающий на полную мощность, но бездействующий, может тратить больше энергии, чем вы думаете.В зависимости от вашего конкретного оборудования и варианта использования, также может быть полезно иметь фоновое приложение, которое отслеживает использование устройства, идентифицирует неиспользуемые / бездействующие ресурсы и действует соответствующим образом (например, «хранитель экрана» для вашего оборудования).

Ваше прикладное программное обеспечение должно обязательно определять, включены ли аппаратные устройства, прежде чем пытаться их использовать. Если вам нужен доступ к устройству, которое может быть переведено в режим пониженного энергопотребления, ваше приложение должно иметь возможность обрабатывать потенциально длительную задержку ожидания, пока устройство проснется и ответит. Ваши приложения также должны учитывать потребность устройства в спящем режиме. Если вам нужно отправить серию команд на аппаратное устройство, попробуйте их буферизовать и отправить все сразу, вместо того, чтобы разделять их и требовать нескольких циклов пробуждения-> отправка-> сна.

Не бойтесь немного занизить тактовую частоту компонентов вашей системы. Помимо экономии энергии, это может помочь им работать более прохладно (что требует меньше энергии для охлаждения). Я видел некоторые проекты, в которых используется процессор, который мощнее, чем необходимо, с приличным запасом, который затем занижается на целых 40% (снижая производительность до исходного уровня, но за небольшую часть затрат на электроэнергию) . Кроме того, не бойтесь тратить энергию на ее экономию. То есть не бойтесь использовать аппаратные устройства для мониторинга времени процессора для возможности их отключения / перехода в спящий режим (даже если это заставит ваш процессор потреблять немного больше энергии). В большинстве случаев такой компромисс приводит к чистой экономии энергии.

6
ответ дан 30 November 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: