Eventos destacados

« 11 2017 »
LunMarMiéJueVieSábDom
12345
6789101112
13141516171819
20212223242526
27282930

Sistemas Empotrados (SEMP-1 / 2016-17)

Documento electrónico: 
Créditos Totales: 
4.0
Fechas de impartición: 
Primer semestre
Tipo de asignatura: 
Itinerario I1
Objetivos docentes: 

Este curso contempla dos aspectos de manera simultánea: computación y restricciones.  Está claro que los sistemas de computación tienen un impacto muy importante en nuestras vidas, y está claro que todo ingeniero o científico debe tener unos conocimientos básicos sobre su funcionamiento interno.  Pero, ¿por qué deberíamos preocuparnos de las restricciones?
Los sistemas empotrados, como cualquier sistema de computación, tienen que realizar una funcionalidad.  Pero también tienen que cumplir unas restricciones a menudo muy estrictas:
• Restricciones de tiempo: El ABS de un coche tiene que activar los frenos en un tiempo muy corto para evitar accidentes.
• Una reducción en los requisitos de memoria y tamaño implica dispositivos más ligeros, más portables y más baratos.
• Los teléfonos móviles, los dispositivos multimedia portátiles y las redes de sensores inalámbricas suelen tener restricciones muy fuertes de consumo de energía.
• Por último, con tan escasos recursos, la seguridad se convierte en un reto muy difícil.
Además, un sistema empotrado tiene que funcionar en el peor escenario posible, debe ser diseñado para cumplir las restricciones incluso en el caso peor.
En este curso los alumnos aprenderán a programar sistemas empotrados basados en microprocesador y diseñar extensiones hardware para funcionar en el caso peor, considerando todas las restricciones durante el diseño y la implementación.  Empezaremos por los conceptos más básicos para pronto avanzar a las técnicas más avanzadas.
Esta asignatura aporta el contenido teórico necesario para la asignatura “Laboratorio de Sistemas Electrónicos”, que se imparte en el segundo semestre.  El entorno de desarrollo y las herramientas que se presentan en esta asignatura se utilizarán también en el laboratorio.  Y las prácticas de este laboratorio están diseñadas para complementar el enfoque dado en esta asignatura.
Creemos firmemente en aprender haciendo.  No hay mejor forma de aprender cómo construir un sistema empotrado que construyéndolo.  Por tanto, el curso está organizado en torno a varios proyectos utilizando la Raspberry-Pi, un sistema de computación del tamaño de una tarjeta de crédito y muy barato que se enchufa al televisor y un teclado.
Al final del curso, el alumno:
1. Utilizará de forma eficiente las herramientas de desarrollo más ampliamente utilizadas (las herramientas de desarrollo del proyecto GNU): compilador GCC, GNU make, binutils, profilers y depuradores.
2. Utilizará de forma eficiente el sistema operativo Linux, incluyendo extensiones de tiempo real basadas en Xenomai, y será capaz de describir su funcionamiento interno.
3. Será capaz de escribir programas en C bien estructurados, formalmente correctos y eficientes, teniendo en cuenta restricciones de tiempo real estricto, restricciones de memoria, restricciones de consumo y restricciones de seguridad física.
4. Será capaz de diseñar e implementar sistemas empotrados completos basados en la Raspberry-Pi, conectando otros componentes hardware.

Metodología docente
Propuesta de ejercicios prácticos sencillos sobre sistemas empotrados basados en la Raspberry-Pi para el planteamiento de los diferentes temas, haciendo patentes las dificultades y los retos.
Clases de exposición teórica de los temas por parte de los profesores.
Trabajo personal del alumno para resolver los ejercicios, con entrega por el portal moodle de la asignatura.
Puesta en común de los resultados de los ejercicios y aspectos prácticos de diseño y optimización.
Uso continuo de los foros del portal moodle de la asignatura como mecanismo básico de comunicación.

Programa: 

Descripción del programa con un reparto aproximado de horas de clase por tema:
1. Introducción a los sistemas empotrados y conceptos básicos. 4h (11%)
Definición de sistema empotrado.  Sistemas ciber-físicos. Conceptos básicos de arquitectura, compiladores, sistemas operativos para sistemas empotrados.  Introducción a la Raspberry-Pi y a Linux para sistemas empotrados.
2. Microprocesadores y plataformas para sistemas empotrados. Programación de sistemas empotrados. 10h (26%)
Microprocesadores, micro-controladores y periféricos. Ruta de datos y segmentación. Entorno de desarrollo.  Elementos de la toolchain, análisis de errores.  Inicialización del núcleo y del espacio de usuario.
3. Diseño y análisis de programas. Sistemas concurrentes y tiempo real. 8h (21%)
Planificación de software multi-tarea. Sistemas de tiempo real. Ejecutivos cíclicos. Planificación con prioridades. Métodos de análisis del tiempo de ejecución en caso peor. Recursos compartidos. Cálculo del bloqueo máximo.  Protocolos de techo de prioridad.
4. Técnicas de diseño de sistemas. Modelado (modelos de computación). 4h (11%)
Modelos de computación. Invariantes. Equivalencias y refinado. Fiabilidad. Análisis de accesibilidad. Model Checking. Análisis cuantitativo de programas. Análisis del tiempo de ejecución en caso peor.
5. Diseño de bajo consumo. Optimización de consumo. 4h (11%)
Conceptos básicos de consumo en circuitos integrados. Modelos de consumo de alto nivel. Técnicas de reducción de consumo en hardware.  Técnicas de reducción de consumo en software.
6. Técnicas de diseño para reducir el uso de memoria. Optimización de memoria. 4h (10%)
Patrones de diseño para reducir el consumo de memoria. Jerarquías de memoria. Técnicas arquitecturales de optimización de memoria. Scratchpad memories. Loop buffers.
7. Seguridad en sistemas empotrados. 4h (10%)
Introducción a la seguridad en sistemas empotrados.  Seguridad lógica y seguridad física. Ataques de canal auxiliar. Contramedidas y recomendaciones de diseño.

Evaluación: 

• Ejercicios propuestos a lo largo del curso  50%
• Examen final escrito sin libros ni apuntes  50%

Profesorado
Más Información
Código de la asignatura: 
93000708
Número del curso al que pertenece dentro de la titulación: 
1
Centro de impartición: 
ETSITelecomunicación
Curso académico de impartición: 
2015-2016
Bibliografía: 

Bibliografía básica
1. Christopher Hallinan, Embedded Linux Primer: A Practical, Real-World Approach, Second Edition, Prentice Hall, ISBN-13: 978-0-13-701783-6, 2010.
2. Edward A. Lee and Sanjit A. Seshia, Introduction to Embedded Systems, A Cyber-Physical Systems Approach, http://LeeSeshia.org, ISBN 978-0-557-70857-4, 2011.

Bibliografía complementaria
3. Marilyn Wolf, Computers as Components: Principles of Embedded Computing System Design, 3rd edition, Morgan Kaufmann, ISBN 978-0-12-388436-7, 2012.
4. Jane W. S. Liu, Real-Time Systems, Prentice Hall, ISBN 0-13-099651-3, 2000.
5. Karim Yaghmour, Jon Masters, Gilad Ben-Yossef, and Philippe Gerum, Building Embedded Linux Systems, 2nd edition, O’Reilly, ISBN 978-0-596-52968-0, 2008.
6. Artículos y documentación del portal moodle de la asignatura.

Tribunal
Secretario: