Перейти к содержанию
    

OS и энергопотребление

 

Такой вопрос: у меня есть работающее устройство, которое я сделал в

2013 году, оно сделано без операционной системы.

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

Там 4 АЦП, 2 процессора и еще куча устройств,

Изначальное потребление в полвата я сократил до 350 мВатт

сократив сначала частоту ядра, периферии, отключив ненужные устройства

прибегнув к другим методам

Насколько применение OS и использования таймера ядра

для переключения задач

увеличит энергопотребление,

кто нибудь проводил такие тесты и измерения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насколько применение OS и использования таймера ядра

для переключения задач

увеличит энергопотребление,

А почему оно должно непременно увеличить? Использование ОС зачастую позволяет более эффективно использовать режимы энергосбережения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насколько применение OS и использования таймера ядра

для переключения задач

увеличит энергопотребление,

кто нибудь проводил такие тесты и измерения?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как правило, в ОС есть специальная задача idle, когда другим задачам выполнять нечего. в этой задаче и отправляешь мк в спячку. ну и собственно все считается. выход из спячки это включение генератора 6мкс*500мкА, + время обработки таск свича 10мкс*10мА и т.д. цифры свои подставьте, даташит +дока на ОС.

Если ПО автора (которое без ОС) написано оптимально, то там и так есть фоновый процесс, в котором выполняется просто цикл с одной командой WFE/WFI, а вся полезная работа производится внутри ISR-ов на разных уровнях приоритета. Тогда внедрение ОС приведёт к незначительному увеличению загрузки CPU и соответственно - незначительному увеличению потребления.

Если же там просто суперцикл, то тут совсем другое дело.

Так что говорить стоит не о том "с ОС" или "без ОС" написано, а как построен алгоритм работы ПО.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у меня так сделано - процессор всегда спит, разрешен

выход из спящего режима по прерыванию

выход и прерываний - какие то дейсвия вход в speep()

по прерыванию опять выход из Spleep() работа и тд.

мне просто интересно, на сколько премерно процентов увеличиться потребление.

если на 10-15, то это вполне допустимо, так как многозадачность

дает такие возможности, что очень трудно реализовать в однозадачной програме

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

мне просто интересно, на сколько премерно процентов увеличиться потребление.

Скорее всего, не увеличится совсем - под ОС процессор будет точно так же спать большую часть времени.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

мне просто интересно, на сколько премерно процентов увеличиться потребление.

если на 10-15, то это вполне допустимо, так как многозадачность

дает такие возможности, что очень трудно реализовать в однозадачной програме

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у меня не работает CoreTimer или SysTimer

по моему он много дает к потреблению

 

 

С частотой сис. таймера около 1 кГц и десятком задач уложитесь в 1-2 % загрузки CPU при его частоте в десятки МГц.

 

надо провести эксперимент на день-два

с измерением потребления

если так - то это будет идеально

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у меня не работает CoreTimer или SysTimer

по моему он много дает к потреблению

SysTick находится в ядре, тактирование его вроде не отключается и ест думаю неск. мкА. Активное состояние CPU, запускаемое им, будет есть во много раз больше и при этом CPU будет загружен всего на пару %

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не надо в малопотребляющих устройствах использовать Systick. При уходе в спячку надо оставлять только внешние прерывания и пробуждение по RTC через нужное время.

Как правило в контроллерах есть регистр который считает на частоте 32768 Гц. Его же можно сравнивать и просыпаться по нему.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не надо в малопотребляющих устройствах использовать Systick.

Не вижу никакой связи.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не вижу никакой связи.

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

 

Чего его отключать, в смысле это Systick , он и так будет отключен когда ядро отключат.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чего его отключать, в смысле это Systick , он и так будет отключен когда ядро отключат.
Да ладно?

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.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то не замечал, чтобы Systick отключался в Stop mode.

Он конечно не отключается, в том смысле, что бит, активный за его включение, остаётся взведённым.

Но ведь он останавливается, когда ядро остановлено и "all clocks are stopped"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...