Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: OS и энергопотребление
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
inventor

Такой вопрос: у меня есть работающее устройство, которое я сделал в
2013 году, оно сделано без операционной системы.
Там я использую различные слипрежимы и прочее, что позволяет сократить энергопотребление.
Там 4 АЦП, 2 процессора и еще куча устройств,
Изначальное потребление в полвата я сократил до 350 мВатт
сократив сначала частоту ядра, периферии, отключив ненужные устройства
прибегнув к другим методам
Насколько применение OS и использования таймера ядра
для переключения задач
увеличит энергопотребление,
кто нибудь проводил такие тесты и измерения?
aaarrr
Цитата(inventor @ Oct 9 2016, 00:14) *
Насколько применение OS и использования таймера ядра
для переключения задач
увеличит энергопотребление,

А почему оно должно непременно увеличить? Использование ОС зачастую позволяет более эффективно использовать режимы энергосбережения.
dac
QUOTE (inventor @ Oct 9 2016, 03:14) *
Насколько применение OS и использования таймера ядра
для переключения задач
увеличит энергопотребление,
кто нибудь проводил такие тесты и измерения?

абсолютно не обязательно, что увеличит, может и уменьшить. например, за счет циклов ожидания. У меня есть устройство на STM32L152 ОС TNKernel, TNeo со средним потреблением примерно 300мкА, т.е. примерно 1мВт, причем основное потребление это не процессора. Вторая реализация подобного устройства планируется со средним потреблением 20-30мкА. Как правило, в ОС есть специальная задача idle, когда другим задачам выполнять нечего. в этой задаче и отправляешь мк в спячку. ну и собственно все считается. выход из спячки это включение генератора 6мкс*500мкА, + время обработки таск свича 10мкс*10мА и т.д. цифры свои подставьте, даташит +дока на ОС.
jcxz
Цитата(dac @ Oct 9 2016, 12:14) *
Как правило, в ОС есть специальная задача idle, когда другим задачам выполнять нечего. в этой задаче и отправляешь мк в спячку. ну и собственно все считается. выход из спячки это включение генератора 6мкс*500мкА, + время обработки таск свича 10мкс*10мА и т.д. цифры свои подставьте, даташит +дока на ОС.

Если ПО автора (которое без ОС) написано оптимально, то там и так есть фоновый процесс, в котором выполняется просто цикл с одной командой WFE/WFI, а вся полезная работа производится внутри ISR-ов на разных уровнях приоритета. Тогда внедрение ОС приведёт к незначительному увеличению загрузки CPU и соответственно - незначительному увеличению потребления.
Если же там просто суперцикл, то тут совсем другое дело.
Так что говорить стоит не о том "с ОС" или "без ОС" написано, а как построен алгоритм работы ПО.
inventor
у меня так сделано - процессор всегда спит, разрешен
выход из спящего режима по прерыванию
выход и прерываний - какие то дейсвия вход в speep()
по прерыванию опять выход из Spleep() работа и тд.
мне просто интересно, на сколько премерно процентов увеличиться потребление.
если на 10-15, то это вполне допустимо, так как многозадачность
дает такие возможности, что очень трудно реализовать в однозадачной програме
aaarrr
Цитата(inventor @ Oct 9 2016, 12:48) *
мне просто интересно, на сколько премерно процентов увеличиться потребление.

Скорее всего, не увеличится совсем - под ОС процессор будет точно так же спать большую часть времени.
jcxz
Цитата(inventor @ Oct 9 2016, 15:48) *
мне просто интересно, на сколько премерно процентов увеличиться потребление.
если на 10-15, то это вполне допустимо, так как многозадачность
дает такие возможности, что очень трудно реализовать в однозадачной програме

Увеличится незначительно. Зависит от: частоты сис.таймера (на нём работает шедулер), кол-ва задач, интенсивности их переключения, ну и частоты CPU. Так как требуется время на работу шедулера и некоторое время на переключение задач (сохранение/восстановление контекста). С частотой сис. таймера около 1 кГц и десятком задач уложитесь в 1-2 % загрузки CPU при его частоте в десятки МГц.
inventor
у меня не работает CoreTimer или SysTimer
по моему он много дает к потреблению


Цитата(jcxz @ Oct 9 2016, 14:09) *
С частотой сис. таймера около 1 кГц и десятком задач уложитесь в 1-2 % загрузки CPU при его частоте в десятки МГц.


надо провести эксперимент на день-два
с измерением потребления
если так - то это будет идеально
jcxz
Цитата(inventor @ Oct 10 2016, 16:48) *
у меня не работает CoreTimer или SysTimer
по моему он много дает к потреблению

SysTick находится в ядре, тактирование его вроде не отключается и ест думаю неск. мкА. Активное состояние CPU, запускаемое им, будет есть во много раз больше и при этом CPU будет загружен всего на пару %
uriy
Не надо в малопотребляющих устройствах использовать Systick. При уходе в спячку надо оставлять только внешние прерывания и пробуждение по RTC через нужное время.
Как правило в контроллерах есть регистр который считает на частоте 32768 Гц. Его же можно сравнивать и просыпаться по нему.
x893
Режим tickless смотрите в нужной ОС
jcxz
Цитата(uriy @ Oct 12 2016, 16:53) *
Не надо в малопотребляющих устройствах использовать Systick.

Не вижу никакой связи.
Systick используется ОС для работы шедулера, различных отсчётов времени для задач и вытеснения задач. Если нужно уйти в глубокий сон, естественно все ненужные на период глубокого сна источники прерываний следует отключать.
AlexandrY
Цитата(jcxz @ Oct 14 2016, 10:18) *
Не вижу никакой связи.
Systick используется ОС для работы шедулера, различных отсчётов времени для задач и вытеснения задач. Если нужно уйти в глубокий сон, естественно все ненужные на период глубокого сна источники прерываний следует отключать.


Чего его отключать, в смысле это Systick , он и так будет отключен когда ядро отключат.
Сергей Борщ
QUOTE (AlexandrY @ Oct 14 2016, 10:22) *
Чего его отключать, в смысле это Systick , он и так будет отключен когда ядро отключат.
Да ладно?
CODE
The devices feature three low-power modes:
• Sleep mode (Cortex®-M4 with FPU core stopped, peripherals kept running)
• Stop mode (all clocks are stopped)
• Standby mode (1.2 V domain powered off)
Что-то не замечал, чтобы Systick отключался в Stop mode.

AHTOXA
Цитата(Сергей Борщ @ Oct 14 2016, 13:25) *
Что-то не замечал, чтобы Systick отключался в Stop mode.

Он конечно не отключается, в том смысле, что бит, активный за его включение, остаётся взведённым.
Но ведь он останавливается, когда ядро остановлено и "all clocks are stopped"?
Сергей Борщ
QUOTE (AHTOXA @ Oct 15 2016, 02:50) *
Но ведь он останавливается, когда ядро остановлено и "all clocks are stopped"?
Опечатался я. В Sleep коечно. Ядро отключено, все включенные таймера тикают. В STOP все таймера, разумеется, стоят.
jcxz
Цитата(Сергей Борщ @ Oct 20 2016, 15:57) *
Опечатался я. В Sleep коечно. Ядро отключено, все включенные таймера тикают. В STOP все таймера, разумеется, стоят.

Ещё осталось уточнить о каком МК речь. Чтобы понять что такое Стоп, а что - Слип...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.