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

вопрос

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

 

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

Если да, то почему??

 

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

 

 

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


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

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


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

ага, понял спасибо, значит можно, а не подскажите atmega168PA потянет ее??

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


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

ага, понял спасибо, значит можно, а не подскажите atmega168PA потянет ее??

 

очень сомнительно. Для авр-ок есть более другие оси. А обычно обходятся for с проверкой флагов + прерываниями

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


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

очень сомнительно. Для авр-ок есть более другие оси. А обычно обходятся for с проверкой флагов + прерываниями

странно в описании Freertos написано что для avr и требования ресурсов по памяти вроде как удовлетворяються

А какие тогда можно на avr подобной atmega168PA использовать?

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


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

странно в описании Freertos написано что для avr и требования ресурсов по памяти вроде как удовлетворяються

А какие тогда можно на avr подобной atmega168PA использовать?

 

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

 

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

 

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

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


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

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

 

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

 

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

 

Да, код там не более 1 кбайта, включить выключить по мониторе пары сигналов

Я так и не понял а сколько нужно оперативки для этой ОС?

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


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

Да, код там не более 1 кбайта, включить выключить по мониторе пары сигналов

Я так и не понял а сколько нужно оперативки для этой ОС?

 

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

 

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

 

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

 

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

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


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

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

 

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

 

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

 

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

задача исследовательского характера, надоело писать громоздкий код под задачи обработки(не цифровой) сигналов и вообще интересно чего дает ОС на МК, а плата свободная щас на atmega168pa

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


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

задача исследовательского характера, надоело писать громоздкий код под задачи обработки(не цифровой) сигналов и вообще интересно чего дает ОС на МК, а плата свободная щас на atmega168pa

 

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

 

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

 

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

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


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

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

 

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

 

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

спасибо, попробую, отпишусь

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


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

спасибо, попробую, отпишусь

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

 

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

 

Спасибо!

proba.rar

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


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

Здравствуйте, исследовал далее проблему, выяснилось что не работает ф-я 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 байт??

 

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


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

Здравствуйте, исследовал далее проблему, выяснилось что не работает ф-я 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 байт)

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


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

ага, понял спасибо, значит можно, а не подскажите atmega168PA потянет ее??

FreeRTOS работает на меге в лёгкую вопрос в расходе оперативной памяти. Ставьте и проверяйте переполнение стеков.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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