Читая сегодня Linux User's Journal, я наткнулся на небольшую рекламу о RTOS NuttX . Я проверил их веб-сайт и был довольно впечатлен его набором функций и возможностью установить его в 8052! Мне кажется интересным, что он поддерживает POSIX, над чем я работал в одном из моих собственных клиентов RTOS. Этот кажется немного более функциональным, чем внутренняя ОСРВ.
Кто-нибудь еще слышал о NuttX и попробовал? Если да, то как он сравнивается с другими ОСРВ, такими как FreeRTOS ?
Ответы:
Там было обсуждение, связанное с этим вопросом здесь: ссылка
Выдержки: ссылка на статью в Linux Journal находится здесь: ссылка
Я думаю, что порты 8052 и M68HC12 являются особенно плохим выбором для характеристики NuttX, потому что у них обоих есть некоторые проблемы, и NuttX сейчас находится в версии 5.16 с 63 выпусками.
Я заполнил интервью на вкладке «Издатель» здесь: ссылка ; там тоже есть обзор: ссылка .
Обширная документация по NuttX доступна здесь: ссылка .
Проблемы с частями hcs12 и 8051 заключаются в следующем:
8051 / 80c52: Эта архитектура действительно враждебна для ОСРВ. Он имеет крошечный аппаратный стек (128 байтов на 8051, 256 на 80c52) в выделенном месте памяти (адрес 0). Чтобы переключить задачи, необходимо скопировать весь стек задачи, которая должна быть заблокирована, с ее выделенного адреса в какое-либо место сохранения, а затем скопировать весь стек задачи, которая должна быть запущена, из места сохранения в выделенное место стека. YECH!
И с тех пор, стек такой маленький. Очень, очень легко переполнить стек, особенно во время обработки прерываний.
Порт NuttX 8051 является полным и функциональным (по крайней мере, в последний раз, когда я его использовал). Но чтобы сделать его полезным, вам, вероятно, придется копировать весь стек на каждом прерывании, чтобы предотвратить его переполнение. По сути, я потерял интерес к этому моменту, но если кто-то действительно заинтересован в использовании 8051, это выполнимо (если, возможно, не рекомендуется).
Что было хорошо в порте 8051, так это то, что это было отличным упражнением для переноса NuttX в очень маленькую область памяти. Порт 8051 работает в 32 КБ ОЗУ, включая RTOS, libc, библиотеки компилятора, существенную тестовую программу, .data / .bss и heap. И немного памяти, чтобы сэкономить!
hcs12: это проект, над которым я работаю в свободное время, когда больше ничего не делаю. Он просто еще не закончен и еще не готов к прайм-тайм.
Что касается сравнения с другими ОСРВ, у меня действительно нет хороших, авторских ответов, потому что я не использую другие ОСРВ. Но вот мое наивное понимание:
FreeRTOS имеет множество загрузок и очень маленький размер около 4Kb. Это ОСРВ для действительно небольших микроконтроллеров. Порт FreeRTOS поставляется поставщиком кремния практически со всеми MCU. Так что это выбор RTOS по умолчанию.
Есть десятки конкурентов с FreeRTOS. ChiBIOS приходит на ум сразу. Это все крошечные планировщики разных типов.
Чтобы провести реальное сравнение, сначала нам нужно определить, что мы подразумеваем под ОСРВ: это просто планировщик? Или это интегрированный набор стандартных функций ОС - таких как планировщик, файловая система, драйверы устройств, управление памятью, работа в сети и т. Д. Большинство операционных систем, например, Linux, являются полноценными средами разработки, а не просто планировщиками. NuttX является полноценной операционной системой в том же смысле, что и Linux. Вот несколько других:
RTEMS : я работал с этим. Это было вокруг навсегда и должно быть очень стабильным. Оно большое; думаю> 100кб. Я думаю, что он нацелен чуть выше рынка MCU.
УКО : Никогда не использовал его, но это ОСРВ под несколькими популярными загрузчиками, не так ли? У меня сложилось впечатление, что это похоже на RTEMS, но я не знаю, о чем говорю.
Как бы я сравнил NuttX с такими: ну, это намного меньше. Начальная площадь составляет около 20 КБ. Полнофункциональная конфигурация на 10-20 КБ больше. Еще одно отличие от этих ОСРВ заключается в том, что NuttX очень ориентирован на стандарты. Вы можете думать о NuttX как о крошечном, похожем на Linux. Большая часть кода, который компилируется и выполняется в Linux, также будет работать в NuttX (некоторые системные коды, такие как сетевой код или демоны, могут нуждаться в некоторой настройке).
Я думаю, что RTEMS больше ориентирован на микропроцессоры; NuttX больше ориентирован на микроконтроллеры.
источник
Лицензирование - это еще одно отличие, о котором следует помнить при выборе ОСРВ с открытым исходным кодом. Особенно, если вы планируете использовать ОСРВ в коммерческом проекте. Большинство RTOS с открытым исходным кодом имеют измененную лицензию GPL. Изменение лицензии обычно указывает на то, что у вас нет своего проприетарного кода, который связан с RTOS GPL (но вам все равно придется выпускать файлы RTOS с вашими модификациями).
NuttX (и, возможно, другие) имеют неограниченную модифицированную лицензию BSD. С лицензией BSD вы можете по существу взять код и использовать его, как если бы он был вашим, без каких-либо обязательств, кроме как сохранить информацию о лицензировании и авторских правах в файлах.
источник