Количественные различия между ядрами RTOS для небольших микроконтроллеров ARM
Существует много разных RTOS для микроконтроллеров. Я специально ищу RTOS, которая поддерживает процессоры ARM Cortex M. Кроме того, я не заинтересован в решениях с закрытым исходным кодом.
Попытка сравнить относительные достоинства каждой ОСРВ на веб-сайтах и в списках рассылки кажется довольно сложной, поскольку они, как правило, имеют эквивалентные функции и делают то же самое. Реальные различия становятся очевидными только после попытки использовать каждую ОСРВ для некоторых задач.
Я знаю, что это довольно субъективный вопрос, и, вероятно, на него трудно ответить, но должно быть много людей, которые действительно попробовали несколько разных ОСРВ и сформировали мнение об относительных достоинствах каждого из них.
Я особенно заинтересован в FreeRTOS, ChibiOS и Coocox CoOS, но другие варианты также очень приветствуются.
Например: может показаться, что в ChibiOS ISR могут вызывать любые системные функции, но эти вызовы должны быть заключены в chSysLockFromIsr()
/chSysUnlockFromIsr()
и код не выгружается во время этих разделов. В CoOS единственными вызываемыми функциями являются те, которые начинаются с isr_
такие как isr_PostSem()
, isr_PostMail()
, isr_PostQueueMail()
а также isr_SetFlag()
, но эти функции внутренне используют очередь запросов на обслуживание, что означает, что большая часть запроса является приоритетной.
1 ответ
Некоторые функции, которые можно учитывать при выборе ОСРВ:
- время переключения контекста
- задержка прерывания
- механизмы синхронизации (флаги, семафоры, мьютексы, почтовые ящики, очереди, ...)
- обработка приоритета инверсии
- поддержка управления памятью (т.е. пулы памяти)
- поддержка политик планирования
- Поддержка MMU
- поддержка процесса
- след памяти
- эффективность самого ядра
- POSIX против не-POSIX API
- доступна программная эко-система (промежуточное ПО)
- ...
Какой пункт (ы) больше сфокусировать, зависит от самого приложения, которое вы собираетесь запустить. Но, как правило, это те вещи, которые я помню, которые имеют значение между различными ОСРВ.