реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> OS и энергопотребление
inventor
сообщение Oct 8 2016, 21:14
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748




Такой вопрос: у меня есть работающее устройство, которое я сделал в
2013 году, оно сделано без операционной системы.
Там я использую различные слипрежимы и прочее, что позволяет сократить энергопотребление.
Там 4 АЦП, 2 процессора и еще куча устройств,
Изначальное потребление в полвата я сократил до 350 мВатт
сократив сначала частоту ядра, периферии, отключив ненужные устройства
прибегнув к другим методам
Насколько применение OS и использования таймера ядра
для переключения задач
увеличит энергопотребление,
кто нибудь проводил такие тесты и измерения?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 8 2016, 23:39
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(inventor @ Oct 9 2016, 00:14) *
Насколько применение OS и использования таймера ядра
для переключения задач
увеличит энергопотребление,

А почему оно должно непременно увеличить? Использование ОС зачастую позволяет более эффективно использовать режимы энергосбережения.
Go to the top of the page
 
+Quote Post
dac
сообщение Oct 9 2016, 06:14
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



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

абсолютно не обязательно, что увеличит, может и уменьшить. например, за счет циклов ожидания. У меня есть устройство на STM32L152 ОС TNKernel, TNeo со средним потреблением примерно 300мкА, т.е. примерно 1мВт, причем основное потребление это не процессора. Вторая реализация подобного устройства планируется со средним потреблением 20-30мкА. Как правило, в ОС есть специальная задача idle, когда другим задачам выполнять нечего. в этой задаче и отправляешь мк в спячку. ну и собственно все считается. выход из спячки это включение генератора 6мкс*500мкА, + время обработки таск свича 10мкс*10мА и т.д. цифры свои подставьте, даташит +дока на ОС.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 9 2016, 06:49
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



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

Если ПО автора (которое без ОС) написано оптимально, то там и так есть фоновый процесс, в котором выполняется просто цикл с одной командой WFE/WFI, а вся полезная работа производится внутри ISR-ов на разных уровнях приоритета. Тогда внедрение ОС приведёт к незначительному увеличению загрузки CPU и соответственно - незначительному увеличению потребления.
Если же там просто суперцикл, то тут совсем другое дело.
Так что говорить стоит не о том "с ОС" или "без ОС" написано, а как построен алгоритм работы ПО.
Go to the top of the page
 
+Quote Post
inventor
сообщение Oct 9 2016, 09:48
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



у меня так сделано - процессор всегда спит, разрешен
выход из спящего режима по прерыванию
выход и прерываний - какие то дейсвия вход в speep()
по прерыванию опять выход из Spleep() работа и тд.
мне просто интересно, на сколько премерно процентов увеличиться потребление.
если на 10-15, то это вполне допустимо, так как многозадачность
дает такие возможности, что очень трудно реализовать в однозадачной програме
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 9 2016, 10:18
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(inventor @ Oct 9 2016, 12:48) *
мне просто интересно, на сколько премерно процентов увеличиться потребление.

Скорее всего, не увеличится совсем - под ОС процессор будет точно так же спать большую часть времени.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 9 2016, 11:09
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



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

Увеличится незначительно. Зависит от: частоты сис.таймера (на нём работает шедулер), кол-ва задач, интенсивности их переключения, ну и частоты CPU. Так как требуется время на работу шедулера и некоторое время на переключение задач (сохранение/восстановление контекста). С частотой сис. таймера около 1 кГц и десятком задач уложитесь в 1-2 % загрузки CPU при его частоте в десятки МГц.
Go to the top of the page
 
+Quote Post
inventor
сообщение Oct 10 2016, 10:48
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



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


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


надо провести эксперимент на день-два
с измерением потребления
если так - то это будет идеально
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 10 2016, 14:47
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



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

SysTick находится в ядре, тактирование его вроде не отключается и ест думаю неск. мкА. Активное состояние CPU, запускаемое им, будет есть во много раз больше и при этом CPU будет загружен всего на пару %
Go to the top of the page
 
+Quote Post
uriy
сообщение Oct 12 2016, 10:53
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Не надо в малопотребляющих устройствах использовать Systick. При уходе в спячку надо оставлять только внешние прерывания и пробуждение по RTC через нужное время.
Как правило в контроллерах есть регистр который считает на частоте 32768 Гц. Его же можно сравнивать и просыпаться по нему.
Go to the top of the page
 
+Quote Post
x893
сообщение Oct 12 2016, 11:03
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Режим tickless смотрите в нужной ОС
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 14 2016, 07:18
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(uriy @ Oct 12 2016, 16:53) *
Не надо в малопотребляющих устройствах использовать Systick.

Не вижу никакой связи.
Systick используется ОС для работы шедулера, различных отсчётов времени для задач и вытеснения задач. Если нужно уйти в глубокий сон, естественно все ненужные на период глубокого сна источники прерываний следует отключать.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Oct 14 2016, 07:22
Сообщение #13


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



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


Чего его отключать, в смысле это Systick , он и так будет отключен когда ядро отключат.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 14 2016, 08:25
Сообщение #14


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



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.



--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Oct 14 2016, 23:50
Сообщение #15


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



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

Он конечно не отключается, в том смысле, что бит, активный за его включение, остаётся взведённым.
Но ведь он останавливается, когда ядро остановлено и "all clocks are stopped"?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th June 2025 - 23:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01506 секунд с 7
ELECTRONIX ©2004-2016