En un pequeño proyecto de sistema integrado, tenemos un código que nos gustaría ejecutar en un hilo, por lo que optamos por construir en la parte superior de un RTOS incrustado (eCos).¿Tiene sentido mezclar un RTOS y un ejecutivo cíclico?
Anteriormente, hemos utilizado un ejecutivo cíclico en main() que dirigía tareas cada una implementada como una máquina de estado. Para algunas tareas, encontramos problemas en los que la tarea tendría que dividirse en muchos estados de grano fino, lo que hacía que el código fuera más complejo.
Al cambiar a un RTOS encontramos que el uso de memoria para la pila de cada hilo se suma rápidamente si le damos a cada tarea por separado su propio hilo. (solo tenemos 64k y necesitamos la memoria para nuestros búferes de comunicaciones)
Estamos considerando usar una banda de rodadura para nuestra tarea de comunicaciones y otra para un ejecutivo cíclico. El ejecutivo cíclico dirigirá las otras tareas lógicas.
¿Tiene sentido combinar un RTOS y ejecutivo cíclico de esta manera?
La capacidad de subprocesamiento preventivo nos permite evitar la construcción de una máquina de estado demasiado compleja en la tarea de comunicaciones. Al tener un hilo para la parte de comunicaciones, el código es bastante directo. Si lo dividimos en un estado en cada punto que actualmente tiene un tipo de bloque de reposo (1000), el código sería básicamente un lío de código espagueti de estados muy pequeños. Se podría hacer, sin embargo, preferiríamos mantener el código limpio y mantenible. Las otras máquinas de estado varían de simples a algo complejas (una tiene ~ 15 estados).La máquina de estado de comunicaciones sería aún más co – JeffV