Pregunta

En primer lugar los antecedentes, detalles de mi pregunta va a seguir:

En la empresa que trabajo en la plataforma que trabajar es en la actualidad la familia Microchip PIC32 utilizando el IDE MPLAB como nuestro entorno de desarrollo. Anteriormente también hemos escrito firmware para las familias Microchip dsPIC y TI MSP para esta misma aplicación. El firmware es bastante sencillo en que el código está dividido en tres módulos principales: control de dispositivo, datos de muestreo, y la comunicación de usuario (normalmente un PC del usuario). Control de dispositivos se logra a través de una combinación de líneas de bus GPIO y al menos una parte pueda SPI o I2C control. muestreo de datos es impulsado de interrupción utilizando un módulo de temporizador para mantener la frecuencia de muestreo y más líneas de bus SPI / I2C y GPIO para controlar el hardware de muestreo (es decir. ADC). comunicación con el usuario se implementa actualmente a través de USB utilizando el marco de la aplicación del microchip.


Así que ahora la pregunta: Teniendo en cuenta lo que he descrito anteriormente, en qué momento iba a considerar el empleo de un RTOS para mi proyecto? Actualmente pienso de estos posibles puntos gatillo como razones para utilizar un RTOS:

  • Código complejidad? La arquitectura de base de código / organización es todavía lo suficientemente pequeño que puedo guardar todos los detalles en mi cabeza.
  • La multitarea / Roscado? intervalo de tiempo de la ejecución del módulo a través de interrupciones basta por ahora para la multitarea.
  • Pruebas? Actualmente no hacemos muchas pruebas de verificación formal o más allá de la prueba de humo HW (algo que espero para rectificar en el futuro cercano).
  • Comunicación? En la actualidad utilizamos un formato de paquete a medida y un protocolo que prácticamente sólo se pone en marcha, parada, los comandos de envío de datos con ser datos de un blob binario.
  • El alcance del proyecto? Hay una posibilidad en un futuro próximo que vamos a estar recibiendo un proyecto para integrar nuestro dispositivo en un sistema más grande, con el objetivo de tomar ese sistema para la producción en masa. Actualmente todos nuestros proyectos han sido los prototipos experimentales con vuelco rápido de alrededor de un mes, la producción de una o dos unidades a la vez.

¿Qué otros puntos crees que debería tener en cuenta? En su experiencia lo convenció (o forzado) a considerar el uso de un RTOS vs acaba de ejecutar su código en tiempo de ejecución de la base? Los punteros a recursos adicionales sobre el diseño / programación de un RTOS es también muy apreciada.

¿Fue útil?

Solución

Hay muchas muchas razones es posible que desee utilizar un RTOS. Ellos son variados y el grado en que se aplican a su situación es difícil de decir. (Nota: tiendo a pensar de esta manera: RTOS implica duro en tiempo real que implica preventiva kernel ...)

  • Análisis Monotónica Rate (RMA) - noreferrer si desea utilizar Tasa de Análisis Monotónica para garantizar se cumplan los plazos de tiempo, debe utilizar un preventivo planificador

  • Conoce en tiempo real los plazos - incluso sin el uso de RMA, con un RTOS preventiva basada en la prioridad, el planificador puede ayudar a asegurar que se cumplan los plazos. Paradójicamente, un RTOS típicamente aumentar interrupción latencia debido a secciones críticas en el núcleo, donde las interrupciones son generalmente enmascarado

  • Administrar la complejidad - sin duda, un RTOS (o la mayoría de los sabores OS) pueden ayudar con esto. Al permitir que el proyecto se descompone en hebras o procesos independientes, y el uso de servicios del sistema operativo tales como colas de mensajes, exclusiones mutuas, semáforos, banderas de eventos, etc., para comunicar y sincronizar, su proyecto (en mi experiencia y opinión) se vuelve más manejable. Tiendo a trabajar en proyectos más grandes, donde la mayoría de la gente entiende el concepto de protección de los recursos compartidos, por lo que muchos de los errores de novato no ocurren. Pero cuidado, una vez que vaya a un enfoque multi-hilo, las cosas pueden llegar a ser más complejo hasta que envolver su cabeza en torno a los problemas.

  • El uso de paquetes de 3 ª parte - muchos RTOSs ofrecen otros componentes de software, tales como pilas de protocolos, sistemas de archivos, controladores de dispositivos, paquetes de interfaz gráfica de usuario, gestores de arranque, y otros middleware que ayudará a construir una aplicación más rápida al convertirse en casi más de un "integrador" que una tienda de bricolaje.

  • Prueba - Sí, sin duda, se puede pensar de cada hebra de control como un componente comprobable con una interfaz bien definida, sobre todo si se utiliza un enfoque coherente (como siempre el bloqueo en un solo lugar en una cola de mensajes). Por supuesto, esto no es un sustituto de la unidad, integración, sistema, etc. prueba.

  • tolerancia Robustez / fallo - un RTOS también puede proporcionar apoyo a MMU del procesador (en su caso PIC, no creo que se aplica). Esto permite que cada hilo (o proceso) para ejecutar en su propio espacio protegido; hilos / procesos no pueden "echar mano de" memoria y pisar cada otros en él. regiones dispositivo incluso (MMIO) podrían estar fuera del alcance de algunos (o todos) los hilos. En sentido estricto, no es necesario un RTOS para explotar MMU de un procesador (o MPU), pero el 2 funcionan muy bien mano a mano.

Generalmente, cuando puedo desarrollar con un RTOS (o algún tipo de suscripción preferente multi-tasker), el resultado tiende a ser más limpio, más modular, más bien comportado y más fácil de mantener. Cuando tengo la opción, yo uso uno.

Tenga en cuenta que el desarrollo multi-roscado tiene un poco de una curva de aprendizaje. Si usted es nuevo en el desarrollo RTOS / multiproceso, que podría estar interesado en algunos artículos en la elección de un RTOS , Los peligros de apropiación y Una introducción a la multitarea preventiva .

Por último, a pesar de que no pidió recomendaciones ... Además de los muchos numeroso RTOSs comercial, hay ofertas libres ( FreeRTOS ser uno de los más populares), y la Plataforma Quantum es un marco orientado a eventos basado en el concepto de objetos activos que incluye un núcleo preventivo. Hay montón de opciones , pero he encontrado que tener el código fuente (aunque el RTOS no es libre) es ventajoso, esp. al depurar.

Otros consejos

RTOS, en primer lugar, le permite organizar su paralelo fluye en el conjunto de tareas con la sincronización bien definida entre ellos.

OMI, el diseño no RTOS es adecuado sólo para la arquitectura de flujo único donde toda su programa es un gran bucle sin fin. Si se necesita el flujo múltiple - una serie de tareas, en paralelo - que está mejor con RTOS. Sin RTOS se le obligó a implementar esta funcionalidad en la casa, volver a inventar la rueda.

Código reutilización - si usted conductores código / protocolo manipuladores mediante una API RTOS pueden tapar en proyectos futuros más fácil

Depuración - algunos IDE (como IAR Embedded Workbench) tienen plugins que muestran datos en tiempo real agradables sobre los procesos en marcha, como la utilización de la CPU y la utilización tarea pila

Por lo general, si desea utilizar un RTOS si tiene restricciones de tiempo real. Si usted no tiene restricciones de tiempo real, un sistema operativo normal son suficientes fuerzas. de OS / RTOS proporcionan una infraestructura de tiempo de ejecución como colas de mensajes y tareas. Si estás en busca de código que puede reducir la complejidad, la atención al nivel bajo y ayuda con las pruebas, algunas de las siguientes bibliotecas podría hacer:

  • El C estándar / C ++ bibliotecas
  • bibliotecas Boost
  • bibliotecas disponibles a través del fabricante del chip que puede proporcionar apoyo específico de hardware
  • bibliotecas comerciales
  • bibliotecas de código abierto

adicional a los puntos mencionados antes, usando un RTOS también puede ser útil si necesita soporte para

  • dispositivos de almacenamiento estándar (SD, Compact Flash, discos duros ...)
  • hardware de comunicación estándar (Ethernet, USB, Firewire, RS232, I2C, SPI, ...)
  • protocolos de comunicación estándar (TCP-IP, ...)

La mayoría de los RTOS proporcionan estas características o son ampliables para apoyarlos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top