Cubriremos la latencia de interrupción de las alternativas de Linux en tiempo real. La latencia de interrupción es el tiempo que transcurre desde que comienza una interrupción hasta donde se atiende la fuente de interrupción.
Según el diseño del microprocesador, el enmascaramiento de interrupciones, los controladores de interrupciones y el manejo de interrupciones del sistema operativo, la latencia puede verse afectada.
Este trabajo se realizó como parte de un examen para determinar la idoneidad de usar Linux en un marco de control avanzado constante y duro. Los círculos de control en este momento ejecutados a un ritmo de 100 Hz. Un requisito previo clave del marco es que la totalidad de los conteos de control deben completarse dentro de la ventana de 10 ms disponible, sin prestar atención a algún otro apilamiento en el marco. Para lograr esto, se consideró que el aplazamiento más extremo desde el momento en que se marca el inicio de un intervalo de control (la ocasión) hasta el momento en que se inicia la tarea de control debe ser inferior a 0,5 ms.
Hay varias configuraciones de Linux a las que se puede acceder constantemente. Una parte de estos depende solo de Linux, algunos usan Linux con un sub-bit y algunos parches de piezas de uso para mejorar el funcionamiento continuo de Linux. Este documento se centra en cuatro de los arreglos potenciales. Las alternativas elegidas son en su mayor parte accesibles sin inhibiciones para su descarga desde sitios legítimos.
En este momento, y todas las subpiezas utilizadas fueron tratadas como elementos secretos. La metodología seguida fue configurar Linux y programar el framework para las diferentes opciones, y luego medir los resultados. No se hicieron esfuerzos para explorar los detalles de la pieza para determinar por qué los diseños reaccionaron de la manera en que lo hicieron, ni se hicieron esfuerzos para mejorar la presentación utilizando parches personalizados o arreglos personalizados.
Las pruebas se realizaron en un marco delicadamente apilado y en un marco bajo un apilamiento de correspondencias moderadamente abrumador. Se utilizó el apilamiento de correspondencia porque era todo menos difícil de configurar, brindaba una forma de practicar el equipo de interfaz y el controlador del dispositivo para el equipo, y brindaba una situación razonable en la que la información continua y de intercambios debe ser concebible todo el tiempo.
Esta evaluación se realizó en un procesador Intel x86. Es posible que algunas de las opciones que se probaron no se mantengan en todas las estructuras de procesador.
Tabla de contenido
- Las cuatro opciones de Linux evaluadas incluyen:
- Linux 2.4
- Linux 2.6
- Consulte los recursos enumerados en la sección de recursos para obtener información adicional sobre Linux 2.6.
- Todas las tareas duras que se implementan en tiempo real en el espacio del núcleo como tareas RTAI para esta opción.
- Plataforma de hardware
Las cuatro opciones de Linux evaluadas incluyen:
probablemente la distribución de Linux 2.4 más actualizada descargada de kernels.org (2.4.27)
una circulación de Linux 2.6 disponible recientemente descargada de kernels.org (2.6.8.1)
una distribución de Linux 2.4 con RTAI descargada de rtai.org (3.1-test5)
una distribución de Linux 2.4 con LXRT distribuida con RTAI (3.1-test5) Todas estas opciones se definen más adelante:
Linux 2.4
Linux 2.4.27 fue el lanzamiento 2.4 más reciente ofrecido por el período que está a la derecha de la investigación. El kernel 2.4 es solo un kernel bien equilibrado que tiene deficiencias bien documentadas con respecto al tiempo real que es difícil. Se han utilizado diferentes enfoques para crear 2.4 con capacidades en tiempo real. De hecho, Linux 2.4 estaba incluido en el estudio académico como una base de referencia contra la cual comparar otras opciones.
Linux 2.6
Linux 2.6 tiene una gran cantidad de mejoras sobre Linux 2.4. La mayoría de estas mejoras se crearon para mejorar las capacidades en tiempo real de Linux 2.6. Algunos de ellos incluyen:
Nuevo algoritmo de programador: rendimiento imprescindible del algoritmo O(1) que es superior en lotes más altos y en sistemas multiprocesador
Punto de preferencia del kernel: antes de 2.6, una aplicación individual no podía adelantarse a una tarea que funcionaba en modo kernel. Con 2.6, la preferencia se ha vuelto posible, lo que lleva a reducir las latencias para las aplicaciones de usuario que son interactivas.
El modelo mejorado que está enhebrando la ayuda en el kernel para la Biblioteca de subprocesos Native Posix (NPTL) aumenta el rendimiento de las operaciones de subprocesos y brinda soporte para más subprocesos.
Fusión de gran parte del proyecto uClinux (Linux para microcontroladores). Esto brinda ayuda para los procesadores que quizás no cuentan con una MMU (Unidad de administración de memoria)
Mejoras en el subsistema de su módulo.
Consulte los recursos enumerados en la sección de recursos para obtener información adicional sobre Linux 2.6.
- Linux 2.4 con RTAI
- RTAI (Interfaz de aplicación en tiempo real) es una expansión dura que es en tiempo real el kernel de Linux. El proyecto RTAI es un proyecto de Software Libre creado por el Departamento de Ingeniería Aeroespacial del Politecnico di Milano (DIAPM). Se ha convertido en una comunidad agrupada coordinada por el profesor Paulo Mantegazza de DIAPM.
RTAI es un sub-núcleo que se ejecuta bajo Linux. Proporciona una respuesta difícil en tiempo real al ejecutar Linux como el trabajo que está inactivo. Las interrupciones son interceptadas por RTAI donde pueden ser procesadas por un controlador de interrupciones RTAI o pasadas a Linux. RTAI se ejecuta solo en el espacio del kernel, por lo que todas las tareas que pueden ser RTAI deben ejecutarse en el espacio del kernel. Hay versiones de RTAI disponibles que se utilizan con el kernel de Linux 2.4 y el kernel de Linux 2.6.
El lanzamiento 3.1 de RTAI dependerá del nano-kernel Adeos, una migración lejos de la capa de abstracción de hardware en tiempo real (RTHAL) que es el centro de un reclamo de infracción de patente por parte de FSMLabs. Las versiones futuras de RTAI deberían incluir fusión. RTAI/Fusion es el propósito de la convergencia de Adeos, LXRT, el Linux que es una mejora de baja latencia del kernel prioritaria. La versión 0.6.2 de Fusion se lanzó en realidad, pero tal vez no se probó como un elemento del enfoque en curso en este documento, ya que terminó siendo detallado como experimental.
Todas las tareas duras que se implementan en tiempo real en el espacio del núcleo como tareas RTAI para esta opción.
Linux 2.4 con LXRT
LXRT es una expansión de RTAI. Permite el desempeño en tiempo real y duro que es suave en el espacio del usuario utilizando la API RTAI. Los beneficios de participar en el espacio del usuario con LXRT comprenden:
- las tareas se ejecutan bajo la seguridad de la memoria de Linux
- asistencia para llamadas IPC con procesos estándar de Linux
- las tareas del espacio de usuario se depuran con herramientas de depuración estándar
- LXRT y RTAI trabajan juntos para producir un rendimiento que consiste en tareas de espacio de usuario en tiempo real. No obstante, los módulos de espacio del kernel RTAI son necesarios para LXRT, y cualquier ejecución incluirá tareas LXRT que generalmente se ejecutan en el espacio del usuario y tareas que son RTAI que se ejecutan en el espacio del kernel.
Todas las tareas duras en tiempo real se implementaron en el espacio del usuario utilizando el soporte que es LXRT esta técnica.
Plataforma de hardware
La placa de CPU VMIVME-7700 de GE Fanuc terminó siendo elegida para su uso en el sistema de control. La placa es una placa VMEbus que es única teniendo en cuenta que la CPU Intel Celeron funciona a 650 MHz. La placa se completa con SDRAM de 512 MB y CompactFlash de 128 MB. Otras opciones que vienen con el tablero que se encontraron en la evaluación están relacionadas con opciones que son en tiempo real:
- Interfaz de usuario 10/100BaseT,
- Controlador de video que es gráfico
- software de teclado,
- arranque remoto de Ethernet
- temporizador programable
La interfaz Ethernet había permitido que el objetivo se vinculara a la PC host empleando una LAN. La PC anfitriona era Una PC basada en x86 la Fedora Circulación de Linux Core 2. El objetivo tenía su sistema de archivos raíz NFS montado en la PC host.
El controlador de película que es una pantalla de teclado gráfico proporcionó una interfaz conveniente para monitorear y controlar la perspectiva.
De hecho, la Ethernet que es el arranque remoto se utilizó para permitir que la imagen del kernel se descargara a su destino desde un host que es tftp en la PC host.
El temporizador que es un dispositivo programable para tener una ilustración vinculada a las latencias inherentes a las diferentes opciones de SO consideradas. El motor del temporizador fue proporcionado por GE Fanuc.