Yo soy la evaluación de los sistemas operativos a utilizar en un Internet de las Cosas de Proyecto y no sé cuál es la mejor manera de proceder.
Estoy usando un TM4C123GH6PM MCU con 32k de RAM y un CC2520 802.15.4 transceptor, sería genial si el sistema ya controladores proporcionados por los.
El sistema de ejecución de un (interactivo), tarea en la que se dibuja una pantalla matricial y reacciona a la entrada del usuario. Se guardará la configuración y los datos de la aplicación en flash spi. Habrá una malla de varios módulos (basado en 802.15.4) para la sincronización de datos entre los módulos, extraer datos de los sensores de los módulos y reenviar a una puerta de enlace (rpl viene a la mente) y también la distribución de OtA las actualizaciones de firmware en un chisme-como la moda. Todo mientras se ejecuta un lugar de memoria hambre aplicación.
Hasta ahora he mirado en estos sistemas:
RIOT:
pros
- buena abstracción de hardware
- pequeña huella
- muy activo y útil de la comunidad
- completa 802.15.4/6LoWPAN pila
contras
- inestable, todavía experimentando cambios fundamentales
- todavía contiene las condiciones de carrera/accidentes
- no hay soporte de sistemas de archivos
- algunos de los protocolos de red
pros
- madura sistema, utilizado en productos comerciales
- completa 802.15.4/6LoWPAN pila con muchos protocolos
- soporte del sistema de archivos
- cc2520 apoyo
contras
- el desarrollo se ha convertido en obsoletos
- 'crecido' codebase, un montón de bit rot
- mala calidad tiva c puerto
- poco apoyo para plataformas modernas
- no preferente, la programación puede causar problemas con la aplicación
pros
- un poco de complejidad
- fácil de usar, fiable programador
- madura proyecto, se utiliza en muchos productos
- un montón de puertos
contras
- ningún sistema de archivos
- ninguna de abstracción de hardware de controladores y no controladores de hardware
- no hay pila de red
- algo en lo alto uso de memoria dinámica
pros
- muy ricos de la característica, casi se siente como Linux, sin embargo, todavía pequeño
- soporte del sistema de archivos
- buena abstracción de hardware
- Tiva C puerto, muchos otros puertos
contras
- algo complejo
- no hay soporte para 802.15.4/6LoWPAN, sólo el 'clásico' netstack
Mi conclusión sería tomar las partes buenas de Contiki (el netstack, el sistema de archivos) y el puerto a FreeRTOS. Pero no estoy del todo cómodo con un tenedor como eso. Probablemente estaría agregando errores y no ser capaz de migración aguas arriba de errores, también tengo que inventar mi propia abstracción de hardware para ser capaz de cambiar el MCU en el futuro. Así que me gustaría terminar con mi propio sistema operativo para algo que parece un problema de que muchas otras personas deben tener demasiado - alguien no ha hecho eso antes? (Me refiero a que me hizo encontrar algo, pero la idea de la ejecución de la totalidad de contiki-os como un FreeRTOS tarea me hace incómodo)
Hay algo que me falta? Tal vez sería el dolor de la pena y yo debería tratar de conseguir Contiki a un estado funcional en el hardware de mi lugar? O es que hay otro sistema que se me haya olvidado que iba a solucionar mis problemas?
También no estoy seguro si necesito 6lowPan, pero cuando eso significa ser capaz de construir en los protocolos existentes/ser compatible con otros sistemas (por ejemplo, Linux), yo estaría dispuesto a asumir el coste adicional.