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.
fuente
running the entire contiki-os as a FreeRTOS task makes me uncomfortable
Eso es solo ... ¡guau! Nunca hubiera pensado en eso ..Respuestas:
Si no está casado con ese procesador específico (o es lo suficientemente inteligente como para copiar / pegar el código de todos modos), con frecuencia uso MCU de Freescale con CodeWarrior y Processor Expert. PEX incluye una serie de componentes que incluyen FreeRTOS, MQX, FAT, etc. Se pueden descargar componentes adicionales y, al final, es solo un generador de código basado en GUI, por lo que, como se sugiere, puede copiar / pegar el código C resultante en tu proyecto.
Editar:
-MQX incluye pila de IP
-FNET
Gran paquete precompilado de muchos componentes útiles: http://sourceforge.net/projects/mcuoneclipse/files/PEx%20Components/
fuente
Te falta mbed OS :
pros
contras
fuente
Si esto es para uso comercial, le recomiendo que mire las opciones no gratuitas, el soporte lo es todo, si es un proyecto personal, entonces puedo entenderlo.
Sí, hay un costo involucrado, pero con algunos desarrolladores de RTOS, no es tan grande, realmente ganan dinero en desarrollo personalizado y las licencias pueden ser gratuitas hasta que realice una venta. A continuación hay un enlace a un artículo que compara algunos competidores pagados:
Comparación de sistemas operativos de microcontroladores en tiempo real
Soy gerente de proyectos y pasamos de usar los controladores ofrecidos por ST a Unison. IIRC, la licencia era sorprendentemente pequeña, y obtuvimos una "prueba completa" hasta que estuvimos convencidos, pero el apoyo directo constante fue lo que nos llevó al límite y lo que realmente ayudó a acelerar nuestro desarrollo. Creo que ya tienen soporte para varios chips inalámbricos de TI, no estoy seguro sobre CC2520.
El tipo que hace la mayor parte de la venta es realmente personal y no enumera los precios por dos razones, me dijeron 1) porque quieren escuchar lo que necesitas, realmente quieren clientes que regresan y referencias de boca en boca, y 2) competencia.
Para su información, el sitio web de Unison es realmente malo.
fuente