OpenComRTOS es un sistema operativo en tiempo real (RTOS) desarrollado formalmente y centrado en redes comerciales , dirigido principalmente al mercado de sistemas integrados .
OpenComRTOS se desarrolló utilizando métodos formales . Tiene características como la capacidad de soportar sistemas multiprocesador heterogéneos de forma transparente, independientemente del tamaño de palabra del procesador ( 16 bits , 24 bits , 32 bits , 64 bits ) y del medio de comunicación (memoria compartida, buses, enlaces punto a punto o enlaces virtuales en mecanismos de comunicación existentes). El tamaño típico del código en un procesador de destino de 32 bits es de aproximadamente 5 KiBytes.
OpenComRTOS se basa en el paradigma de metamodelado de Entidades Interactuantes . En el RTOS, la unidad de ejecución es una Tarea (una función con su espacio de trabajo local o pila). Las entidades de Tarea se sincronizan y se comunican mediante entidades Hubs intermedias que están desacopladas de las Tareas que interactúan. Los Hubs se modelan formalmente como Acciones Protegidas . La implementación actual proporciona las funciones de los servicios RTOS tradicionales como eventos, semáforos, puertos, pilas FIFO (primero en entrar, primero en salir ), recursos, grupos de paquetes y grupos de memoria . El usuario también puede crear tipos de Hub personalizados.
OpenComRTOS utiliza una arquitectura uniforme con una tarea de núcleo , tareas de controlador y tareas de aplicación, cada una con un puerto de entrada de tarea. Se utiliza la misma interfaz para las rutinas de servicio de interrupción. La arquitectura subyacente se basa en el uso de conmutación de paquetes priorizada , siendo la comunicación y el enrutamiento parte de los servicios del sistema subyacentes. Uno de los resultados es que el código fuente de las tareas es independiente de la asignación de tareas y concentradores a los nodos de procesamiento en el sistema de destino.
El propósito inicial para desarrollar OpenComRTOS fue proporcionar un entorno de ejecución de software que admitiera una metodología de ingeniería de sistemas coherente y unificada basada en Entidades Interactuantes . Esto fue desarrollado originalmente por la Open License Society [1] desde 2005, y desde 2008 desarrollado y comercializado por Altreonic. [2] Un RTOS desarrollado anteriormente llamado Virtuoso [3] [4] [5] [6] [7] sirvió como guía. Virtuoso es un RTOS distribuido, desarrollado por Eonic Systems hasta que la tecnología se vendió a Wind River Systems en 2001. Su funcionalidad general de procesamiento paralelo transparente (llamado modelo de tiempo de ejecución de procesador único virtual ) fue una fuerza impulsora importante para volver a desarrollarlo de una mejor manera. [8] [9] OpenComRTOS es conceptualmente una cuarta generación de Virtuoso, aunque fue un desarrollo de sala limpia. El RTOS Virtuoso tuvo su origen en el pionero Inmos Transputer , una implementación de hardware parcial del álgebra de procesos secuenciales comunicantes (CSP) de CAR Hoare . Aplicaciones más desafiantes: [ cita requerida ]
Para el desarrollo de OpenComRTOS se siguió un proceso de ingeniería sistemático pero iterativo. Una vez definidos los requisitos y las especificaciones, se desarrollaron modelos en la lógica temporal de acciones (TLA+) de Leslie Lamport y luego se verificaron con el verificador de modelos TLC correspondiente. Con base en estos modelos, se escribió el código y luego una tercera persona creó nuevos modelos en TLA+ para verificar que la implementación aún fuera isomórfica. El temporizador y la funcionalidad de tiempo de espera asociada para los servicios se verificaron con el verificador de modelos Uppaal . En 2011, Springer publicó el libro sobre el proyecto OpenComRTOS. [10]
OpenComRTOS viene con muchas herramientas. Visual Designer es un entorno de modelado visual mediante el cual el usuario especifica gráficamente la topología de los nodos y la topología de las aplicaciones. A partir de estos diagramas, se genera un modelo de tiempo de ejecución específico de la aplicación. El código específico de la aplicación se proporciona en ANSI C para cada tarea. La ejecución en tiempo de ejecución y las interacciones entre procesadores se visualizan utilizando el Event Tracer . Un Inspector del sistema permite leer y modificar las estructuras de datos. Otros módulos son los módulos hostserver (estos permiten que cualquier tarea acceda a los servicios del nodo host) y una Máquina Virtual Segura para C. Esta última requiere alrededor de 3 KiBytes (10 KiBytes para el programa y los datos) y permite descargar dinámicamente código C compilado en binario en tiempo de ejecución.
OpenComRTOS fue desarrollado para sistemas embebidos y está escrito en ANSI C portable , excepto el cambio de contexto y las interfaces ISR. OpenComRTOS ha sido portado a los siguientes destinos: Freescale PowerPC, Texas Instruments C66xx DSP, Melexis MLX16, ARM Cortex M3/4, Xilinx MicroBlaze, LEON3, NXP CoolFlux DSP y a MS-Windows y Linux. Las últimas versiones permiten la integración transparente de nodos host y sirven también para sistemas de simulación y desarrollo cruzados. Como el núcleo RTOS es idéntico para nodos de uno o varios procesadores, para soportar un sistema de varios procesadores solo es necesario escribir un pequeño controlador de nivel de tarea que pueda enviar y recibir paquetes.
OpenComRTOS está disponible en versiones binarias, de código fuente y con licencias de tecnología abierta. Estas últimas proporcionan modelos formales, documentos de diseño, código fuente y conjuntos de pruebas.