Guía docente de Programación de Sistemas Empotrados y de Tiempo Real (22111BB)
Grado
Rama
Módulo
Materia
Year of study
Semestre
ECTS Credits
Tipo
Profesorado
Teórico
Práctico
Tutorías
Juan Antonio Holgado Terriza
Email- Primer semestre
- Lunes de 10:30 a 13:30 (Etsiit Despacho 13 3ª Pla)
- Miércoles de 10:30 a 13:30 (Etsiit Despacho 13 3ª Pla)
- Segundo semestre
- Lunes de 13:30 a 14:30 (Etsiit Despacho 13 3ª Pla)
- Viernes de 13:30 a 14:30 (Etsiit Despacho 13 3ª Pla)
Prerrequisitos y/o Recomendaciones
Los alumnos no tendrán que tener materias o asignaturas aprobadas como requisito indispensable para superar esta materia. No obstante, se recomienda tener aprobados los contenidos y adquiridas las competencias de cuatrimestres precedentes.
Breve descripción de contenidos (Según memoria de verificación del Máster)
- Requerimientos particulares de sistemas empotrados y de tiempo real.
- Entornos de ejecución: sistemas operativos.
- Modelos de planificación y análisis temporal de tareas.
- Programación de aplicaciones empotradas. Interacción con el hardware. Control del Tiempo. Gestión de Eventos. Control de Recursos.
- Diseño, configuración, despliegue y depuración de aplicaciones empotradas.
Competencias
Competencias Específicas
- CE31. Capacidad para conocer sistemas operativos y los detalles de implementación.
Competencias Transversales
- CT01. Capacidad de análisis y síntesis: Encontrar, analizar, criticar (razonamiento crítico), relacionar, estructurar y sintetizar información proveniente de diversas fuentes, así como integrar ideas y conocimientos.
- CT02. Capacidad de organización y planificación así como capacidad de gestión de la Información.
- CT03. Capacidad de comunicación oral y escrita en el ámbito académico y profesional con especial énfasis, en la redacción de documentación técnica.
- CT04. Capacidad para la resolución de problemas.
- CT05. Capacidad para tomar decisiones basadas en criterios objetivos (datos experimentales, científicos o de simulación disponibles) así como capacidad de argumentar y justificar lógicamente dichas decisiones, sabiendo aceptar otros puntos de vista.
- CT06. Capacidad para el uso y aplicación de las TIC en el ámbito académico y profesional.
- CT07. Capacidad de comunicación en lengua extranjera, particularmente en inglés.
- CT08. Capacidad de trabajo en equipo.
- CT09. Capacidad para el aprendizaje autónomo así como iniciativa y espíritu emprendedor.
- CT10. Motivación por la calidad y la mejora continua, actuando con rigor, responsabilidad y ética profesional.
- CT11. Capacidad para adaptarse a las tecnologías y a los futuros entornos actualizando las competencias profesionales.
- CT12. Capacidad para innovar y generar nuevas ideas.
- CT13. Sensibilidad hacia temas medioambientales.
- CT14. Respeto a los derechos fundamentales y de igualdad entre hombres y mujeres.
- CT15. Capacidad para proyectar los conocimientos, habilidades y destrezas adquiridos para promover una sociedad basada en los valores de la libertad, la justicia, la igualdad y el pluralismo.
Resultados de aprendizaje (Objetivos)
- Reconocer las particularidades especiales de los sistemas empotrados y de tiempo real en cuanto a sus requerimientos, diseño o programación.
- Conocer las técnicas de programación, lenguajes de programación, y herramientas de desarrollo disponibles para la programación de este tipo de sistema.
- Seleccionar el entorno de ejecución (firmware o sistema operativo) más adecuado para la implementación de aplicaciones sobre entornos empotrados.
- Determinar las necesidades de tiempo real de una aplicación, evaluar su impacto en los entornos de ejecución, y analizar el modelo de planificación más adecuado.
- Aprender a diseñar, implementar, configurar y desplegar una aplicación empotrada sobre una plataforma empotrada concreta atendiendo a los requerimientos específicos de la aplicación.
- Realizar pequeños proyectos de sistemas empotrados para casos prácticos de sistemas de control de procesos, domótica, robots móviles, instrumentación, …, haciendo especial hincapié en las características de conectividad.
Programa de contenidos Teóricos y Prácticos
Teórico
Tema 1: Introducción a los sistemas empotrados y de tiempo real. Definición de sistema empotrado. Características de un sistema empotrado. Requerimientos de diseño de sistemas empotrados: criticidad, cumplimiento de requisitos temporales, coste por unidad, consumo de energía,.. Hardware y software básico de un sistema empotrado. Tipos de sistemas empotrados. Desarrollo de software para sistemas empotrados: Esquema host-target
Tema 2: Lenguajes de programación y entornos de ejecución. Características básicas de los lenguajes de programación. Componentes de un sistema empotrado. Entornos de ejecución: firmware y sistemas operativos. Sistemas Operativos Empotrados y de Tiempo Real: El estándar POSIX. Análisis y selección del entorno de ejecución más adecuado.
Tema 3: Diseño, configuración, despliegue y depuración de aplicaciones empotradas. Esquemas de diseño de una aplicación empotrada. Herramientas de programación: compiladores cruzados, depuradores, emuladores. Técnicas de depuración. Despliegue de una aplicación empotrada: carga software y hardware
Tema 4: Tareas y Concurrencia. Particionamiento del software en tareas. Modelos de gestión de tareas en un entorno empotrado: lazo, ejecutivo cíclico, sistemas foreground-background, sistemas basado en prioridades. Planificación de tareas de tiempo real: algoritmos de planificación. Análisis temporal de tareas.
Tema 5: Interacción con el hardware. Modelos de abstracción del hardware. Manejador de dispositivos de E/S. Gestión de memoria: memoria montón y pila. Gestión de eventos: interrupciones y excepciones. Implementación de un controlador de dispositivo. Planificación de tareas aperiódicas: servidor esporádico.
Tema 6: Control y medida del tiempo. Medida del tiempo: Relojes. Activación de tareas: retardos y temporizadores. Plazos de Tiempo: Timeout. Watchdog.
Tema 7: Mecanismos de comunicación y sincronización entre tareas. Introducción. Control de acceso a recursos compartidos. Uso de recursos en acciones atómicas. Inversión de prioridad: mecanismos de acceso a recursos compartidos. Planificación de tareas con recursos compartidos. Mecanismos de comunicación entre tareas.
Tema 8: Conectividad. Buses y comunicaciones en sistemas empotrados. Modelos de abstracción de protocolos de comunicaciones. Aplicación a sistemas de telecomunicaciones: redes de sistemas empotrados, redes de sensores, internet de las Cosas, …
Tema 9: Desarrollo de un proyectos software para entornos empotrados. Métodos y técnicas avanzadas para el desarrollo de proyectos empotrados. Ciclos de vida para el desarrollo de empotrados (desarrollo rápido de aplicaciones, prototipado rápido, ...).
Práctico
- Práctica 1. Entorno empotrado de recursos limitados: Arduino. Gestión de entradas/salidas.
- Práctica 2. Monitorización de un sistema empotrado. Diseño de un cronómetro de alta precisión.
- Práctica 3. Desarrollo de un controlador de tiempo real basado en ejecutivos cíclicos.
- Práctica 4. Familiarización con entornos de ejecución de tiempo real sobre plataformas empotradas basadas en ARM (BeagleBone Black, Raspberry PI).
- Práctica 5. Planificación de tareas de tiempo real: periódica y aperiódicas. Controlador de un brazo robótico.
- Práctica 6. Diseño de un controlador de dispositivo: GPIO. Sistema de detección de intrusos.
Bibliografía
Bibliografía fundamental
- Sistemas de Tiempo Real y Lenguajes de Programación (tercera edición). Alan Burns y Andy Wellings. Addison-Wesley (2002).
- Embedded C. Michael Pont. Addison-Wesley (2002).
- An Embedded Software Primer. David Simon. Addison-Wesley (2001)
- Programming Embedded Systems: With C and GNU Development Tools, 2nd Edition (Paperback). Michael Barr. O’Reilly (2006).
- Computers As Components: Principles of Embedded Computing Systems Design. Third Edition. Wayne Wolf. Morgan Kaufman Publisher, (2013)
- Operating System Foundations with Linux and the Raspberry PI. Wim Vanderbauwhede and Jeremy Singer. Arm Education Media (2019)
Bibliografía complementaria
- MicroC OS II: The Real Time Kernel. John Labrosse. Micrium Press (2002).
- Embedded C Coding Standard. Michael Barr. Netrino Institute (2008).
- Real-Time Concepts for Embedded Systems. Qing Li. CMP (2003).
- Software Engineering for Real-Time Systems. Jim Cooling. Packt Press, (2019).
- Hard Real-Time Computing Systems (Third Edition). Giorgio Buttazzo, G. Springer, (2013).
- Programming Microcontrollers in C, Second Edition. , G. Springer, (2005).
- Embedded Systems Architecture: A Comprehensive Guide for Engineers and Programmers. Tammy Noergaard. Newnes, (2005)
Enlaces recomendados
En PRADO tiene información complementaria y recursos para la ampliación de conocimientos.
Metodología docente
- MD01. Lección magistral
- MD02. Actividades prácticas
- MD03. Seminarios
- MD04. Actividades no presenciales
- MD05. Tutorías académicas
Evaluación (instrumentos de evaluación, criterios de evaluación y porcentaje sobre la calificación final)
Evaluación Ordinaria
Con objeto de evaluar la adquisición de los contenidos y competencias a desarrollar en la materia, se utilizará un sistema de evaluación diversificado, seleccionando las técnicas de evaluación más adecuadas en cada momento.
Utilizando un sistema de evaluación basado en evaluación continua que valorará los siguientes aspectos generales mediante la utilización de distintas técnicas evaluativas con una ponderación específica:
- Para la parte teórica se realizarán exámenes finales o parciales, sesiones de evaluación y entregas de ejercicios sobre el desarrollo y los resultados de las actividades propuestas. La ponderación de este bloque es del 40%.
- Para la parte práctica se realizarán prácticas de laboratorio, resolución de problemas y desarrollo de proyectos (individuales o en grupo), y se valorarán las entregas de los informes/memorias realizados por los alumnos, o en su caso las entrevistas personales con los alumnos y las sesiones de evaluación. La ponderación de este bloque es del 40%.
- En su caso, la parte de trabajo autónomo y los seminarios se evaluarán teniendo en cuenta la asistencia a los seminarios, los problemas propuestos que hayan sido resueltos y entregados por los alumnos, en su caso, las entrevistas efectuadas durante el curso y la presentación oral de los trabajos desarrollados. La ponderación de estos es del 20%.
La calificación global corresponderá a la puntuación ponderada de los diferentes aspectos y actividades que integran el sistema de evaluación. Así, el resultado de la evaluación será una calificación numérica obtenida mediante la suma ponderada de las calificaciones correspondientes a una parte teórica, una parte práctica y, en su caso, una parte relacionada con el trabajo autónomo de los alumnos, los seminarios impartidos y el aprendizaje basado en proyectos.
Para aprobar la asignatura, es necesario que la calificación global sea al menos un 5 sobre 10, y que se apruebe la parte teórica de todos los bloques del temario.
Todo lo relativo a la evaluación se regirá por la Normativa de evaluación y calificación de los estudiantes vigente en la Universidad de Granada.
El sistema de calificaciones se expresará mediante calificación numérica de acuerdo con lo establecido en el art. 5 del R. D 1125/2003, de 5 de septiembre, por el que se establece el sistema europeo de créditos y el sistema de calificaciones en las titulaciones universitarias de carácter oficial y validez en el territorio nacional.
Régimen de asistencia:
La asistencia a las clases teóricas no es obligatoria, requiriéndose en cambio la asistencia a al menos el 50% de las sesiones programadas de seminarios y prácticas. En caso de incumplimiento se calificará con 0 puntos la parte correspondiente.
Evaluación Extraordinaria
La evaluación de los estudiantes en la convocatoria extraordinaria se regirá por los mismos criterios y constará de las mismas pruebas que las indicadas en este documento para la evaluación única final (ver más abajo).
Evaluación única final
Para los estudiantes que se acojan a la evaluación única final, esta modalidad de evaluación estará formada por todas aquellas pruebas que el profesor estime oportunas, de forma que se pueda acreditar que el estudiante ha adquirido la totalidad de las competencias generales y específicas descritas en el apartado correspondiente de esta Guía Docente.
En concreto, los contenidos de teoría, de prácticas y de seminarios se evaluarán con un examen escrito por cada parte, siguiendo la ponderación especificada en la sección anterior.
Software Libre
Se utiliza software libre de distinto tipo para la programación de sistemas empotrados.