Цитата(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 задачу можно было остановить только из самой себя.