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

 
 
> Помогите определиться с RTOS, для CortexM3-like MCU
Algol
сообщение Jan 18 2012, 13:01
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 140
Регистрация: 7-04-05
Из: Россия, Владимир
Пользователь №: 3 941



Доброго времени суток!
Решил в качестве самообразования освоить для себя применение RTOS для embedded.
В приоритете Cortex-M3..возможно M4 в недалеком будущем.

Пока есть начальные представления о TNKernel и FreeRTOS - создание задач моргания светодиодами. Наверное между ними и сводится выбор в конечном счете.
Задачи наверное типовые - опрос периферии, ethernet.
Субъективно TNKernel понравилась гораздо больше, но смущает только один нюанс - не слишком широкое распространение. Боюсь остаться один на один с возникающими граблями.

Наверное вопрос больше религиозный, но все же...что скажет купечество?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
EugenyAM
сообщение Jan 31 2012, 07:53
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 14-10-08
Из: Omsk
Пользователь №: 40 929



Больше года использую TNKernel под ARM7, полгода под Cortex M3. Использовал все фичи, кроме выделения буферов памяти. Граблей пока не обнаружено. Недавно начал писать набор макросов для быстрого создания задач, семафоров, событий с наиболее часто используемым набором параметров. С данными макросами легко можно будет перейти на другую ОС в случае необходимости.
На тот момент, когда стояла такая же проблема выбора, у FreeRTOS не было примеров для ARM7 под IAR, у TNKernel они были и запустились сразу и без проблем - это и стало причиной выбора. Под Cortex M3 пришлось немного допилить проект для совместного использования с последней StdPeriferialLibrary и IAR 6.21. Еще где-то на форуме видел бенчмарк по переключению контекста для различных ОС - TNKernel в числе лидеров. TN-Net пока не пробовал, пока экспериментирую с LwIP.

Сообщение отредактировал EugenyAM - Jan 31 2012, 08:11
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jan 31 2012, 08:55
Сообщение #3


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (EugenyAM @ Jan 31 2012, 15:53) *
Больше года использую TNKernel под ARM7, полгода под Cortex M3. Использовал все фичи,

Добрый день!
Можно спросить? Есть ли возможность динамического создания и удаления задач в этой ОС? Если да, то это делается во флеши, или можно и к ОЗУ прикрутить (как во взрослых системах)?
Спасибо!


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
EugenyAM
сообщение Jan 31 2012, 09:42
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 14-10-08
Из: Omsk
Пользователь №: 40 929



Цитата(haker_fox @ Jan 31 2012, 15:55) *
Есть ли возможность динамического создания и удаления задач в этой ОС? Если да, то это делается во флеши, или можно и к ОЗУ прикрутить (как во взрослых системах)?


Задача использует для своей работы две области ОЗУ - структуру TCB и стек задачи, а также, собствено функцию задачи ,которая размещается во флеш при компиляции. Указатели на эти три области памяти передаются функции tn_task_create.
Теоретически никто не мешает выделить память под TCB и стек динамически перед вызовом функции создания задачи. Если куча находится не на стеке, (в IAR вроде бы она лежит в отдельном сегменте) - все должно сработать.
Если речь идет о загрузке кода функции в ОЗУ и объявления его задачей - тоже подводных камней не видно (хотя сам не проверял). В описании функции задачи отсутствуют какие-либо специальные макросы и определения - она не отличается от обычной Си-функции void func(void). Для ее работы должно выполняться два условия - бесконечный цикл и хотя-бы один системный вызов внутри него (например tn_task_sleep или tn_event_wait) - без него программа зависает.
В любой момент задачу можно остановить и удалить из списка. Задача может быть остановлена и удалена как другой задачей (tn_task_terminate, tn_task_delete), так и сама собой (tn_task_exit, если нужно, с опцией TN_EXIT_AND_DELETE_TASK). Имхо, все сделано "по взрослому, но без излишеств".
Насколько я помню, в uCOS/II задачу можно было остановить только из самой себя.

Сообщение отредактировал EugenyAM - Jan 31 2012, 09:44
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 25th August 2025 - 18:38
Рейтинг@Mail.ru


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