Gamma SPb (16.01.2007 11:02, просмотров: 1) ответил vsasha на А ведь пока нет ни одного ответа на поставленный вопрос ! Попробую кое что прояснить.
ИМХО добавлю FreeRTOS:
- есть несколько схем выделения памяти под control blocks сервисов и задач. Одна из них - статическое выделение. Но тогда нельзя динамически удалять и создавать задачи
- "Легко переносится на другую платформу" = угу, только с оговорками, типа, может не работать при некоторых условиях, мы до конца не разобрались почему =) Если про ARM, то там все в порядке
- код убогий, абсолютно не читабельный
- хорошая документация, много примеров
TNKernel:
- "размер ядра примерно 18кб (для ARM)" - У меня получилось около 26 кБ (Keil, RV) в максимальной конфигурации (а по другому, если использовать родной порт никак, потому что все исходники включаются в проект)
- "На мой взгляд у этой ОС только одна отрицательная особенность, но очень весомая - все прерывания сваливаются в одну кучу" - на скорость особо не влияет, все равно, в противном случае у каждого вектора должен быть пролог (сохранение контекста) и эпилог (восставновление и, если надо, переключение контекста). Это занимает самую большую часть времени, поэтому поллинг флагов в одном векторе - фигня.
- "код хорошо построен" +1
- примеры есть, относительно хорошая документация (не критичные ошибки находил)
uCOS, embOS
- похоже, один человек писал =) но в embOS задачи могут иметь одинаковый приоритет.
- uCOS - код убогий, везде условная компиляция. Память выделяется в момент компиляции - самый дебильный вариант
- я бы ее использовать не стал.