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

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

Заранее благодарен!

addi
Цитата(agregat @ Nov 30 2015, 10:49) *

ага, понял спасибо, значит можно, а не подскажите atmega168PA потянет ее??
Непомнящий Евгений
Цитата(addi @ Nov 30 2015, 10:51) *
ага, понял спасибо, значит можно, а не подскажите atmega168PA потянет ее??


очень сомнительно. Для авр-ок есть более другие оси. А обычно обходятся for с проверкой флагов + прерываниями
addi
Цитата(Непомнящий Евгений @ Nov 30 2015, 11:29) *
очень сомнительно. Для авр-ок есть более другие оси. А обычно обходятся for с проверкой флагов + прерываниями

странно в описании Freertos написано что для avr и требования ресурсов по памяти вроде как удовлетворяються
А какие тогда можно на avr подобной atmega168PA использовать?
Непомнящий Евгений
Цитата(addi @ Nov 30 2015, 11:50) *
странно в описании Freertos написано что для avr и требования ресурсов по памяти вроде как удовлетворяються
А какие тогда можно на avr подобной atmega168PA использовать?


атмега168 имеет 16К флеша и 1К озу. Вполне возможно, что фриртос и взлетит. Вот только что останется для прикладного кода?

Вы ж понимаете, что для ОС необходимо хранить стеки для каждого потока, плюс всякую служебную информацию. Думаете это все влезет в 1К?

А по теме - зачем тут вообще ОС? Цикл с проверкой флагов в main + прерывания, в которых нужные флаги и выставляются...
addi
Цитата(Непомнящий Евгений @ Nov 30 2015, 12:00) *
атмега168 имеет 16К флеша и 1К озу. Вполне возможно, что фриртос и взлетит. Вот только что останется для прикладного кода?

Вы ж понимаете, что для ОС необходимо хранить стеки для каждого потока, плюс всякую служебную информацию. Думаете это все влезет в 1К?

А по теме - зачем тут вообще ОС? Цикл с проверкой флагов в main + прерывания, в которых нужные флаги и выставляются...


Да, код там не более 1 кбайта, включить выключить по мониторе пары сигналов
Я так и не понял а сколько нужно оперативки для этой ОС?
Непомнящий Евгений
Цитата(addi @ Nov 30 2015, 12:43) *
Да, код там не более 1 кбайта, включить выключить по мониторе пары сигналов
Я так и не понял а сколько нужно оперативки для этой ОС?


Вы хотите поразвлечься или у вас реальная задача? Если второе - то зачем тут ОС? Если первое - то как сделаете - напишите о результатах, интересно sm.gif

А насчет расхода памяти - все индивидуально. На задачу - порядка 26 байт. Плюс служебные данные, которые зависят от числа приоритетов (где-то 8*(3 + число_приоритетов) ). Плюс другие служебные данные.

Ну и плюс для каждой задачи нужен стек (а для ИАРа - два стека). Переключения стека при входе в прерывание в авр нет. Соответственно стек каждой задачи должен быть с запасом - на стеки прерываний. Ну или какой-то кастомный обработчик прерывания, который переключает стеки.

В качестве кучи можно взять heap_1, которая фактически стек (только выделяет память, без освобождения). Накладные расходы там минимальны.
addi
Цитата(Непомнящий Евгений @ Nov 30 2015, 12:58) *
Вы хотите поразвлечься или у вас реальная задача? Если второе - то зачем тут ОС? Если первое - то как сделаете - напишите о результатах, интересно sm.gif

А насчет расхода памяти - все индивидуально. На задачу - порядка 26 байт. Плюс служебные данные, которые зависят от числа приоритетов (где-то 8*(3 + число_приоритетов) ). Плюс другие служебные данные.

Ну и плюс для каждой задачи нужен стек (а для ИАРа - два стека). Переключения стека при входе в прерывание в авр нет. Соответственно стек каждой задачи должен быть с запасом - на стеки прерываний. Ну или какой-то кастомный обработчик прерывания, который переключает стеки.

В качестве кучи можно взять heap_1, которая фактически стек (только выделяет память, без освобождения). Накладные расходы там минимальны.

задача исследовательского характера, надоело писать громоздкий код под задачи обработки(не цифровой) сигналов и вообще интересно чего дает ОС на МК, а плата свободная щас на atmega168pa
Непомнящий Евгений
Цитата(addi @ Nov 30 2015, 14:38) *
задача исследовательского характера, надоело писать громоздкий код под задачи обработки(не цифровой) сигналов и вообще интересно чего дает ОС на МК, а плата свободная щас на atmega168pa


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

Ну и ваш МК как-то все таки мелковат для ОСи, не развернешься sm.gif

Из авр-овских вытесняющих осей на слуху еще scmRtos, она по идее меньше памяти кушает - все задачи создаются статически, и ее авторы тут бывают.
addi
Цитата(Непомнящий Евгений @ Nov 30 2015, 14:49) *
Мне кажется на простых задачах ОС будет более громоздка, чем рукопашный код. Опять же для ваших типичных задач можно написать свой собственный типовой код и использовать его (к примеру что-то подобное сделала ардуина)

Ну и ваш МК как-то все таки мелковат для ОСи, не развернешься sm.gif

Из авр-овских вытесняющих осей на слуху еще scmRtos, она по идее меньше памяти кушает - все задачи создаются статически, и ее авторы тут бывают.

спасибо, попробую, отпишусь
addi
Цитата(addi @ Nov 30 2015, 14:51) *
спасибо, попробую, отпишусь

Здравствуйте!

Попробовал на примере из нета запустить ось на atmega168pa, сделал один в один но таски не запускаются, проект прилагаю, подскажите пожалуйста, кто знает, в чем может быть проблема

Спасибо!
addi
Здравствуйте, исследовал далее проблему, выяснилось что не работает ф-я vTaskDelay(тики)...
Подскажите пожалуйста может ли это быть что не хватает ресурсов для ОС?

В FreeRTOSConfig.h указал 500 байт под нужды ОС #define configTOTAL_HEAP_SIZE ( (size_t ) ( 500) )

В итоге:

Task "RunOutputFileVerifyTask"
Program Memory Usage : 3162 bytes 19,3 % Full
Data Memory Usage : 620 bytes 60,5 % Full

Может ей мало 500 байт??
addi
Цитата(addi @ Jan 12 2016, 08:41) *
Здравствуйте, исследовал далее проблему, выяснилось что не работает ф-я vTaskDelay(тики)...
Подскажите пожалуйста может ли это быть что не хватает ресурсов для ОС?

В FreeRTOSConfig.h указал 500 байт под нужды ОС #define configTOTAL_HEAP_SIZE ( (size_t ) ( 500) )

В итоге:

Task "RunOutputFileVerifyTask"
Program Memory Usage : 3162 bytes 19,3 % Full
Data Memory Usage : 620 bytes 60,5 % Full

Может ей мало 500 байт??

Наконец-то все заработало!, оказываеться ей хватает и 500 байт)
SyncLair
Цитата(addi @ Nov 30 2015, 11:51) *
ага, понял спасибо, значит можно, а не подскажите atmega168PA потянет ее??

FreeRTOS работает на меге в лёгкую вопрос в расходе оперативной памяти. Ставьте и проверяйте переполнение стеков.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.