jueves, 25 de febrero de 2016

RTOS mas básico no se puede!

Un Sistema Operativo de tiempo Real (RTOS) es una colección de recursos de software que provee al desarrollador de sistemas embebidos el esqueleto o estructura básica del software sobre las cuales se va a implementar una solución específica. El RTOS permite mejorar la eficiencia de los sistemas embebidos ya que simplifica enormemente el manejo de las tareas o procesos. Un RTOS siempre incluye un Kernel el cual es un programa relativamente pequeño pero bastante confiable que corre casi independientemente del resto de las tareas; el cual es el encargado de administrar las secuencias de las actividades a ser ejecutadas por la CPU.
Un sistema embebido esta generalmente compuesto por secuencias de código comúnmente llamadas “tareas”. El Kernel cambia la ejecución de las actividades (para los sistemas embebidos generalmente emplean “single cores” de CPU por lo cual solo puede se ejecutar una sola tarea específica en un momento de tiempo determinado) dependiendo de las demandas dadas por Kernel secuenciador. El Kernel también incluye una colección de recursos con el fin de intercambiar mensajes entre las diversas tareas así como también para sincronizar actividades dentro del sistema embebido. Gracias a estos recursos, se evita el uso de variables globales en el sistema (las cuales son peligrosas debido a que literalmente “explotan” con el uso de multitareas).
El RTOS, al igual que los programas, debe usar los recursos de memoria RAM de la CPU. La cantidad de memoria utilizada por el sistema operativo se conoce a menudo como “footprint” (huella) y por lo general esta dada en Kbytes. Con el fin de ahorrar recursos de memoria, los RTOS generalmente incluyen únicamente los servicios indispensables que el usuario necesita. La mayoría de ellos permiten ser configurados extensivamente para satisfacer las necesidades específicas del diseñador. Los RTOS también tienen otros recursos adicionales como: administrador de archivos del sistema, interfaz gráfica del usuario (GUI), protocolos de comunicaciones (conjunto de librerías para TCP/IP, USB, etc.), ayudas de depuración y otros módulos adicionales que son empleados según la aplicación que se desee desarrollar.
Un aspecto importante a considerar de los sistemas operativos de tiempo real es su capacidad de ser determinísticos; esto es, responder a tareas específicas dentro de periodos de tiempo determinados. El RTOS generalmente garantiza respuestas en tiempo real a eventos reales lo cual es posible mediante control de la ejecución de las tareas a niveles de microsegundo (dependiendo de la CPU), de allí su nombre “tiempo real”.
Una diferencia fundamental de los RTOS con los sistemas operativos de escritorio para computadores es que una vez iniciado este, el sistema operativo toma control de la máquina tan pronto como es encendida y luego de esto permite la inicialización de las aplicaciones. Esto es, las aplicaciones y el sistema operativos en los computadores de escritorio son compilados y enlazados de manera separada. Por otro lado, en los sistemas embebidos, el RTOS y la aplicación son generalmente compilados al mismo tiempo y están mucho mas atados el uno de la otra. En un RTOS todo es diferente, cada actividad desarrollada por la CPU puede ser segregada a su propia Tarea, la cual esta bajo la supervisión del Kernel, por ejemplo, una tarea puede manejar la visualización en el display mientras que otra puede estar controlando las comunicaciones (TCP por ejemplo) y una tercera puede estar realizando algún tipo de procesamiento con los datos. En general, el manejador de interrupciones maneja cierto número de interrupciones. Las tareas pueden ser creadas, programadas para ser ejecutadas en un momento específico; de igual manera pueden ser borradas o re-creadas en el futuro (del flujo del programa) según la necesidad. Todos estos mecanismos simplifican ampliamente la labor del ingeniero programador, ya que en vez de usar retardos codificados en software, los ciclos de la CPU nunca son desperdiciados, y la designación de tareas puede ser mas sencilla en vez de emplear código “espagueti” intentando coordinar múltiples tareas las cuales la mayoría de veces no se relacionan las unas con las otras.
Cuando utilizar un RTOS?
En general, cuando un sistema embebido requiere la ejecución de múltiples actividades independientes, un RTOS es la solución preferida debido a su robustez, alta confiabilidad y código simplificado. Por ejemplo, si nuestro sistema requiere manejar datos de múltiples fuentes, manejar varias salidas mientras que al mismo tiempo realiza cómputos y procesamiento; el RTOS es la solución ideal. Debido a la creciente complejidad de los protocolos de comunicación (CAN, TCP y USB por ejemplo) se requiere a menudo el manejo de múltiples tareas y complejos arbitramientos los cuales pueden beneficiarse ampliamente con el uso de un RTOS.
Abajo se mencionan algunos Sistemas Operativos de Tiempo Real – RTOS que son de código-abierto y no-comerciales, los cuales se pueden emplear y modificar con el fin de hacer su sistema embebido más robusto y poderoso
– FreeRTOS
– µC/OS-II Kernel de Micrium
– FreeOSEK
– Tnkernel
– eCos
– CooCox CoOS
– TinyOS
– PICos18
– AvrX
– RTEMS

No hay comentarios:

Publicar un comentario