Ha habido una discusión relacionada con esta pregunta aquí: enlace
Extractos: el artículo de Linux Journal al que se hace referencia está aquí: enlace
Creo que los puertos 8052 y M68HC12 son opciones especialmente malas para caracterizar NuttX porque ambos tienen algunos problemas, y NuttX ahora está en la versión 5.16 con 63 lanzamientos.
Completé la entrevista en la pestaña "Editor" aquí: enlace ; hay una revisión allí también: enlace .
La documentación extensa de NuttX está disponible aquí: enlace .
Los problemas con las piezas hcs12 y 8051 son los siguientes:
8051 / 80c52: esta arquitectura es realmente hostil RTOS. Tiene una pequeña pila de hardware (128 bytes en el 8051, 256 en el 80c52) en una ubicación de memoria dedicada (dirección 0). Para cambiar las tareas, debe copiar la pila completa de la tarea que se bloqueará desde su dirección dedicada a alguna ubicación de guardado, y luego copiar la pila completa de la tarea que se iniciará desde su ubicación de guardado a la ubicación de la pila dedicada. ¡YECH!
Y desde entonces, la pila es tan pequeña. Es muy, muy fácil sobrepasar la pila, especialmente durante el manejo de interrupciones.
El puerto NuttX 8051 es completo y funcional (al menos la última vez que lo usé). Pero para que sea útil, probablemente también tenga que copiar toda la pila en cada interrupción para evitar que se desborde. Básicamente, perdí el interés en ese punto, pero si alguien estuviera realmente motivado para usar el 8051, es factible (si no está bien aconsejado).
Lo bueno del puerto 8051 es que fue un gran ejercicio para llevar NuttX a una ubicación de memoria muy pequeña. El puerto 8051 se ejecuta en 32Kb de RAM, que incluye RTOS, libc, bibliotecas de compilación, un programa de prueba sustancial, .data / .bss y heap. ¡Y con un poco de memoria de sobra!
hcs12: Este es un proyecto en el que trabajo en mi tiempo libre cuando no hago nada más. Simplemente no está terminado y aún no está listo para el horario estelar.
Con respecto a la comparación con otros RTOS, realmente no tengo ninguna respuesta buena y automática porque no uso otros RTOS. Pero aquí está mi comprensión ingenua:
FreeRTOS tiene toneladas de descargas y una huella realmente pequeña de aproximadamente 4Kb. Es el RTOS de elección para las MCU realmente pequeñas. Los proveedores de silicio incluyen un puerto FreeRTOS con casi todas las MCU. Por lo tanto, es la opción RTOS predeterminada.
Hay docenas de competidores con FreeRTOS por ahí. ChiBIOS viene a la mente de inmediato. Todos estos son pequeños programadores de diferentes tipos.
Para hacer una comparación real, una cosa que debemos hacer primero es definir qué queremos decir con un RTOS: ¿es solo un programador? ¿O se trata de un conjunto integrado de características estándar del sistema operativo, como el planificador, el sistema de archivos, los controladores de dispositivos, la administración de memoria, las redes, etc. NuttX es un sistema operativo completo, tiene el mismo sentido que Linux. Aquí hay un par de otros:
RTEMS : He trabajado con este. Ha existido desde siempre y debería ser muy estable. Es grande; pensar> 100kb. Creo que apunta un poco por encima del mercado de MCU.
uCOS : Nunca lo usé, pero este es el RTOS bajo varios cargadores de arranque populares, ¿no? Mi impresión es que es similar a RTEMS, pero realmente no sé de qué estoy hablando.
¿Cómo compararía NuttX con esos? Bueno, es mucho más pequeño. La huella inicial es de alrededor de 20Kb. Una combinación con todas las características es de unos 10-20Kb más. Otra diferencia de estos RTOS es que NuttX está muy orientado a los estándares. Puedes pensar en NuttX como un pequeño y similar trabajo de Linux. La mayoría del código que se compila y ejecuta en Linux también se ejecutará en NuttX (algunos códigos del sistema, como el código de red o los demonios, pueden necesitar algunos ajustes).
Creo que RTEMS está más enfocado en microprocesadores; NuttX está más centrado en los microcontroladores.