Atributos
Sigla: 
CI-0155
Créditos: 
4
Horas: 
5
Clasificación: 
Curso propio
Descripción: 

Este curso proporciona a los estudiantes la oportunidad de aprender conceptos fundamentales para la programación de sistemas empotrados y desarrollar habilidades prácticas en esa área.

Objetivo general: 

El  objetivo  general  del  curso  es  que  los  estudiantes  desarrollen  habilidades  para  diseñar, desarrollar y probar sistemas empotrados, mediante el uso de estrategias teórico-­prácticas y de laboratorio.  

Objetivos específicos: 

Durante este curso el estudiante desarrollará habilidades para:

  1. Identificar los conceptos básicos de pruebas de sistemas empotrados y utilizarlos correctamente, mediante la discusión de lecturas y ejemplos.
  2. Describir y utilizar herramientas de hardware y software necesarias para el diseño de sistemas empotrados, mediante su aplicación en el desarrollo de un sistema empotrado.
  3. Diseñar, analizar, programar y probar sistemas empotrados usando estándares y metodologías de desarrollos actuales y pertinentes, con el fin de que el proceso y el producto desarrollado sean de calidad, seguros y estén acordes con estándares existentes.
  4. Diferenciar entre niveles y tipos de sistemas empotrados, mediante la discusión de sus características y la presentación de ejemplos, para seleccionar el nivel y tipo más adecuado en diversos contextos.
  5. Explicar los problemas de diseño asociados al software empotrado, con el fin de generar buenas prácticas de diseño de sistemas empotrados de acuerdo al entorno de destino.
Contenidos: 
Objetivo específico Eje temático Desglose
1 Introducción a los sistemas empotrados  Qué es un sistema empotrado. Características de los sistemas empotrados. Diferencia entre sistemas empotrados de tiempo real y no real. Principales componentes de un sistema empotrado. Tendencias de los sistemas empotrados (por ejemplo, simuladores de arquitecturas, adaptadores).
1,2 Componentes de los sistemas empotrados y ambientes de desarrollo Sistemas empotrados de tiempo real. Componentes importantes de un sistema empotrado en tiempo real. Ambientes de desarrollo para sistemas empotrados incluyendo compiladores y simuladores. 
4 Tipos de sistemas empotrados Tipos de sistemas empotrados.  Computador en una tarjeta (Single Board Computers). Quark SOC y arquitectura Galileo.
1,4 Sistemas empotrados de tiempo real Qué es un sistema de tiempo real. Diversas aplicaciones de sistemas de tiempo real. Modelo básico de un sistema de tiempo real. Características de un sistema de tiempo real. Técnicas de software con tolerancia a errores. Categorías de sistemas de tiempo real. 
3,5 Programación de tareas de tiempo real - Parte I Terminología básica relacionada con la programación de tareas real-time. Clasificación de las tareas de tiempo real con respecto a su reaparición. Diferentes estilos de programación. Formas de clasificar los algoritmos de programación. Lógica de la programación clock-driven scheduling, table-driven schedulers y cyclic schedulers. Soluciones a los problemas relacionados con table-driven shedulers y cyclic schedulers. Funcionamiento de un programador de tareas.
3,5 Programación de tareas de tiempo real - Parte II Introducción al evento impulsado por los programadores. Programadores de fondo. Earliest Deadline First (EDF) y sus deficiencias. Soluciones a los problemas de EDF. Rate Monotonic Algorithm (RMA). Soluciones a los problemas RMA. Ventajas y desventajas del RMA. Deadline Monotonic Algorithm (DMA). 
2 Sistemas operativos de tiempo real El reloj y el tiempo de servicios prestados por un sistema operativo de tiempo real. Características que debe ofrecer un sistema operativo de tiempo real. 
Work queue and Input processing. Mecanismos de sincronización. Señales. Sistemas empotrados multicore. Modelo sincrónico. Protocolo de sincronización de tiempo real. Análisis WCET. Configuración PCI.
3,5 Seguridad, safety y fiabilidad en sistemas de tiempo real Comprender aspectos de seguridad y fiabilidad en sistemas en tiempo real.  Cómo producir software empotrado altamente fiable. Visión general de las técnicas de software con tolerancia a errores. Autorización y autenticación en sistemas de tiempo real.
Bibliografía: 
  1. Li, Qing (2003), Real-time concepts for embedded systems, ISBN 1-57820-124-1.
  2. Barr Michael, Massa Anthony (2006), Programming Embedded Systems - O'Reilly, ISBN: 0-596-00983-6.
  3. T. Noergaard (2005), Embedded Systems Architecture - A Comprehensive Guide for Engineers and Programmers, Newnes.
  4. Ganssle, Jack G., The art of designing embedded systems- 2nd ed.p.cm. , ISBN 978-0-7506-8644-0.
  5. Intel® Quark SoC X1000 Core Developer’s Manual.
  6. Intel® Quark SoC X1000 Datasheet.
  7. Liu, Jane. Real-time Systems, Prentice Hall; ISBN: 0130996513.
  8. Corbet, Jonathan (2005). Linux Device Drivers (3rd Edition).
  9. Cooperstein, Jerry. Writing Linux Device Drivers: a guide with exercises, ISBN: 978-1448672387.
  10. Hallinan, Christopher (2007). Debugging Embedded Linux.
     
LIberación de responsabilidad: 

Este no es un documento oficial. Documentos oficiales se entregan en la secretaría de la escuela.