inventor 0 8 октября, 2016 Опубликовано 8 октября, 2016 · Жалоба Такой вопрос: у меня есть работающее устройство, которое я сделал в 2013 году, оно сделано без операционной системы. Там я использую различные слипрежимы и прочее, что позволяет сократить энергопотребление. Там 4 АЦП, 2 процессора и еще куча устройств, Изначальное потребление в полвата я сократил до 350 мВатт сократив сначала частоту ядра, периферии, отключив ненужные устройства прибегнув к другим методам Насколько применение OS и использования таймера ядра для переключения задач увеличит энергопотребление, кто нибудь проводил такие тесты и измерения? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 8 октября, 2016 Опубликовано 8 октября, 2016 · Жалоба Насколько применение OS и использования таймера ядра для переключения задач увеличит энергопотребление, А почему оно должно непременно увеличить? Использование ОС зачастую позволяет более эффективно использовать режимы энергосбережения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dac 0 9 октября, 2016 Опубликовано 9 октября, 2016 · Жалоба Насколько применение OS и использования таймера ядра для переключения задач увеличит энергопотребление, кто нибудь проводил такие тесты и измерения? абсолютно не обязательно, что увеличит, может и уменьшить. например, за счет циклов ожидания. У меня есть устройство на STM32L152 ОС TNKernel, TNeo со средним потреблением примерно 300мкА, т.е. примерно 1мВт, причем основное потребление это не процессора. Вторая реализация подобного устройства планируется со средним потреблением 20-30мкА. Как правило, в ОС есть специальная задача idle, когда другим задачам выполнять нечего. в этой задаче и отправляешь мк в спячку. ну и собственно все считается. выход из спячки это включение генератора 6мкс*500мкА, + время обработки таск свича 10мкс*10мА и т.д. цифры свои подставьте, даташит +дока на ОС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 238 9 октября, 2016 Опубликовано 9 октября, 2016 · Жалоба Как правило, в ОС есть специальная задача idle, когда другим задачам выполнять нечего. в этой задаче и отправляешь мк в спячку. ну и собственно все считается. выход из спячки это включение генератора 6мкс*500мкА, + время обработки таск свича 10мкс*10мА и т.д. цифры свои подставьте, даташит +дока на ОС. Если ПО автора (которое без ОС) написано оптимально, то там и так есть фоновый процесс, в котором выполняется просто цикл с одной командой WFE/WFI, а вся полезная работа производится внутри ISR-ов на разных уровнях приоритета. Тогда внедрение ОС приведёт к незначительному увеличению загрузки CPU и соответственно - незначительному увеличению потребления. Если же там просто суперцикл, то тут совсем другое дело. Так что говорить стоит не о том "с ОС" или "без ОС" написано, а как построен алгоритм работы ПО. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inventor 0 9 октября, 2016 Опубликовано 9 октября, 2016 · Жалоба у меня так сделано - процессор всегда спит, разрешен выход из спящего режима по прерыванию выход и прерываний - какие то дейсвия вход в speep() по прерыванию опять выход из Spleep() работа и тд. мне просто интересно, на сколько премерно процентов увеличиться потребление. если на 10-15, то это вполне допустимо, так как многозадачность дает такие возможности, что очень трудно реализовать в однозадачной програме Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 9 октября, 2016 Опубликовано 9 октября, 2016 · Жалоба мне просто интересно, на сколько премерно процентов увеличиться потребление. Скорее всего, не увеличится совсем - под ОС процессор будет точно так же спать большую часть времени. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 238 9 октября, 2016 Опубликовано 9 октября, 2016 · Жалоба мне просто интересно, на сколько премерно процентов увеличиться потребление. если на 10-15, то это вполне допустимо, так как многозадачность дает такие возможности, что очень трудно реализовать в однозадачной програме Увеличится незначительно. Зависит от: частоты сис.таймера (на нём работает шедулер), кол-ва задач, интенсивности их переключения, ну и частоты CPU. Так как требуется время на работу шедулера и некоторое время на переключение задач (сохранение/восстановление контекста). С частотой сис. таймера около 1 кГц и десятком задач уложитесь в 1-2 % загрузки CPU при его частоте в десятки МГц. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inventor 0 10 октября, 2016 Опубликовано 10 октября, 2016 · Жалоба у меня не работает CoreTimer или SysTimer по моему он много дает к потреблению С частотой сис. таймера около 1 кГц и десятком задач уложитесь в 1-2 % загрузки CPU при его частоте в десятки МГц. надо провести эксперимент на день-два с измерением потребления если так - то это будет идеально Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 238 10 октября, 2016 Опубликовано 10 октября, 2016 · Жалоба у меня не работает CoreTimer или SysTimer по моему он много дает к потреблению SysTick находится в ядре, тактирование его вроде не отключается и ест думаю неск. мкА. Активное состояние CPU, запускаемое им, будет есть во много раз больше и при этом CPU будет загружен всего на пару % Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 5 12 октября, 2016 Опубликовано 12 октября, 2016 · Жалоба Не надо в малопотребляющих устройствах использовать Systick. При уходе в спячку надо оставлять только внешние прерывания и пробуждение по RTC через нужное время. Как правило в контроллерах есть регистр который считает на частоте 32768 Гц. Его же можно сравнивать и просыпаться по нему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 59 12 октября, 2016 Опубликовано 12 октября, 2016 · Жалоба Режим tickless смотрите в нужной ОС Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 238 14 октября, 2016 Опубликовано 14 октября, 2016 · Жалоба Не надо в малопотребляющих устройствах использовать Systick. Не вижу никакой связи. Systick используется ОС для работы шедулера, различных отсчётов времени для задач и вытеснения задач. Если нужно уйти в глубокий сон, естественно все ненужные на период глубокого сна источники прерываний следует отключать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 14 октября, 2016 Опубликовано 14 октября, 2016 · Жалоба Не вижу никакой связи. Systick используется ОС для работы шедулера, различных отсчётов времени для задач и вытеснения задач. Если нужно уйти в глубокий сон, естественно все ненужные на период глубокого сна источники прерываний следует отключать. Чего его отключать, в смысле это Systick , он и так будет отключен когда ядро отключат. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 14 октября, 2016 Опубликовано 14 октября, 2016 · Жалоба Чего его отключать, в смысле это 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 14 октября, 2016 Опубликовано 14 октября, 2016 · Жалоба Что-то не замечал, чтобы Systick отключался в Stop mode. Он конечно не отключается, в том смысле, что бит, активный за его включение, остаётся взведённым. Но ведь он останавливается, когда ядро остановлено и "all clocks are stopped"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться