Arquitectura
- Sistemas informáticos ordinarios y de a bordo.
- Limitaciones de los sistemas integrados.
- Arquitectura general de un sistema empotrado.
- Puesta en marcha del sistema, fase de arranque.
- Arquitectura del núcleo Linux. Ubicación de las fuentes.
- Puesta en marcha del sistema, fases de arranque (código dependiente y común).
Trabajo práctico
Detección de errores en tiempo de compilación, en tiempo de enlace, uso de Eclipse/CDT, uso de una cadena de compilación cruzada. Depuración. Detección de fugas de memoria y desbordamientos de búfer. Pruebas de cobertura en la ejecución de la aplicación.
Desarrollo industrial con Linux
- Entorno Linux.
- Modo de funcionamiento: usuario, supervisor.
- Licencias e implicaciones para el desarrollo industrial.
- Herramientas de desarrollo de código abierto (compilador, depurador, herramientas de análisis, seguimiento y prueba).
- Los distintos IDE (Entorno de Desarrollo Integrado) : Eclipse...
- Métodos avanzados de compilación.
- La cadena de compilación cruzada.
- Gestión de la memoria.
- Detección de fugas de memoria.
- Desbordamiento del búfer.
Tiempo compartido flexible y programación en tiempo real
- Exactitud de las mediciones y expectativas de tiempo.
- Programación a tiempo compartido. Reglas de anticipación.
- Funcionamiento general del planificador, prioridades y reparto de CPU.
- ¿Cuándo es preferente el núcleo?
- Gestión del tiempo y temporizadores de precisión.
- Tiempo real flexible Posix.1b: principios.
- Configuración de la programación de procesos e hilos.
- Problemas algorítmicos vinculados al tiempo real.
- Planificador de Linux: núcleos 3.x
Trabajo práctico
Creación y gestión de procesos. Prioridades y compartición de CPU. Examen del funcionamiento del planificador. Cambio de procesos en tiempo real. Comprobación de la precisión de temporizadores y durmientes.
Tiempo real estricto - Extensión Xenomai
- Principio estricto de tiempo real.
- Visión general de la extensión Xenomai.
- Conceptos de tiempo real estricto: principio de los microkernels Adeos, Xenomai, LinuxRT.
- Instalación y API de Xenomai.
- Uso de la extensión LinuxRT.
- Programación estricta en tiempo real en modo usuario.
- Interrupciones (activación, desactivación, etc.).
- Protección contra interrupciones.
- Gestión de las comunicaciones.
- Presentación de la API Xenomai, instalación de Xenomai.
- Estricta gestión de tareas en tiempo real.
Trabajo práctico
Instalación de Xenomai. Creación de tareas estrictas en tiempo real. Gestión de las comunicaciones. Escribiendo un manejador de interrupciones y un proceso programado de tiempo real estricto. Instalación y uso de Xenomai.
Entornos restringidos, sistemas integrados
- Problemas de los sistemas integrados.
- Sistema LinuxRT, Xenomai: API, desarrollo.
- Embedded Linux: elegir una versión del kernel.
- Bibliotecas del sistema (Newlib, DietLibc).
- Aplicaciones y utilidades a bordo.
- Interfaz de usuario.
- Interfaces gráficas optimizadas (directfb, etc).
- Presentación y configuración de un cargador de arranque.
- Generación de un núcleo reducido. Información general sobre el sistema de archivos.
- Instalación de la cadena de compilación.
Trabajo práctico
Instalación y compilación de una aplicación LinuxRT personalizada, Xenomai y un núcleo de tamaño reducido. Creación de un sistema de archivos. Incorporación de aplicaciones mínimas. Escritura de aplicaciones utilizando una interfaz LED o LCD. Instalación de un servidor HTTP integrado.
Personalización del arranque del sistema
- Las distintas fases de arranque (encendido, Bios, cargador del kernel (Grub, UBoot, etc.).
- El papel del proceso Init. El nivel de ejecución.
- El contenido del Init.
- Sustitución del proceso Init por una versión personalizada.
- Inicialización desde el área de usuario.
Trabajo práctico
Creación y personalización de un disco initrd. Sustitución del proceso Init por una versión personalizada y sustitución por un script de Shell.