Estoy evaluando los sistemas operativos para usar en un proyecto de Internet de las cosas y no sé cuál es la mejor manera de proceder.
Estoy usando una MCU TM4C123GH6PM con 32k RAM y un transceptor CC2520 802.15.4, sería genial si el sistema ya proporcionara controladores para ellos.
El sistema ejecutará una tarea (interactiva) que dibuja una pantalla dotmatrix y reacciona a la entrada del usuario. Almacenará datos de configuración y aplicaciones en spi flash. Habrá una malla de múltiples módulos (basados en 802.15.4) para sincronizar datos entre los módulos, extraer datos del sensor de los módulos y reenviarlos a una puerta de enlace (rpl viene a la mente) y también distribuir actualizaciones de firmware de OtA en un chisme. como la moda Todo mientras ejecuta una aplicación bastante hambrienta de memoria también.
Hasta ahora he examinado estos sistemas:
RIOT :
pros
- buena abstracción de hardware
- pequeña huella de pie
- comunidad muy activa y servicial
- pila completa 802.15.4 / 6LoWPAN
contras
- inestable, aún experimentando cambios fundamentales
- todavía contiene condiciones de carrera / accidentes
- sin soporte de sistema de archivos
- pocos protocolos de red
Contiki :
pros
- sistema maduro, utilizado en productos comerciales
- pila completa 802.15.4 / 6LoWPAN con muchos protocolos útiles
- soporte del sistema de archivos
- soporte cc2520
contras
- el desarrollo se ha vuelto rancio
- código base 'crecido', mucha putrefacción
- puerto tiva c de mala calidad
- poco soporte para plataformas modernas
- la programación no preventiva puede causar problemas con la aplicación
FreeRTOS :
pros
- poca complejidad adicional
- fácil de usar, programador confiable
- proyecto maduro, usado en muchos productos
- muchos puertos
contras
- sin sistema de archivos
- sin abstracción de hardware para controladores / sin controladores de hardware
- sin pila de red
- uso algo elevado de memoria dinámica
NuttX :
pros
- muy rico en funciones, casi se siente como Linux, pero aún así es pequeño
- soporte del sistema de archivos
- buena abstracción de hardware
- Puerto Tiva C, muchos otros puertos
contras
- algo complejo
- no es compatible con 802.15.4 / 6LoWPAN, solo netstack 'clásico'
Mi conclusión sería tomar las partes buenas de Contiki (netstack, sistema de archivos) y portarlas a FreeRTOS. Pero no estoy del todo cómodo con un tenedor como ese. Probablemente estaría agregando errores y no sería capaz de realizar una copia de seguridad de las correcciones anteriores, también tengo que inventar mi propia abstracción de hardware para poder cambiar la MCU en el futuro. Así que terminaría con mi propio sistema operativo por algo que parece un problema que muchas otras personas también deberían tener, ¿alguien no lo ha hecho antes? (Quiero decir que encontré algo, pero la idea de ejecutar todo el contiki-os como una tarea de FreeRTOS me hace sentir incómodo)
¿Se me escapa algo? ¿Tal vez el dolor valdría la pena y debería tratar de llevar a Contiki a un estado funcional en mi hardware? ¿O hay otro sistema que me he perdido y que resolvería mis problemas?
Tampoco estoy seguro de si necesito 6lowPan, pero cuando eso significa poder construir sobre protocolos existentes / ser compatible con otros sistemas (por ejemplo, Linux), estaría dispuesto a asumir los gastos adicionales.
running the entire contiki-os as a FreeRTOS task makes me uncomfortable
Eso es solo ... ¡guau! Nunca hubiera pensado en eso ..