Sistemas embebidos para tiempo real
Tema | Nombre | Descripción |
---|---|---|
Cronograma 2024 (actualizado 30/4/2024) | Cronograma tentativo de las clases, laboratorios, etc. |
|
Horarios y salones | ||
Información básica sobre el curso | ||
Bibliografía | Bibliografía del curso |
|
Reglamento del Curso (actualizado 10/2/2023) | Reglamento del Curso |
|
Programa de la asignatura | ||
Listado de estudiantes, turnos y grupos (actualizado 10/4/2024) | Listado de estudiantes |
|
Notas finales Laboratorio | Calificaciones Laboratorio |
|
Notas finales curso | Notas finales del curso |
|
Teórico 2024 | T0 - Presentación del curso | Contenido del curso, objetivos, metodología, forma de aprobación, etc. |
T1 - Introducción y conceptos basicos. | Introducción y conceptos basicos: sistemas embebidos y de tiempo real. |
|
T1 - Encuesta sobre el mercado de sistemas embebidos | Encuesta sobre el mercado de sistemas embebidos |
|
T2 - Introducción al lenguaje C | Introducción al lenguaje C. |
|
T3 - Herramientas de desarrollo de software embebido | Herramientas de desarrollo y depuración. Proceso de compilación de una aplicación (Compilación, linker/locator, diferencias entre compiladores nativos y embebidos). Inicialización de datos y arranque de programa. Cargado de programa. |
|
T4 - Git: introducción al control de versiones | Diapositivas usadas en la clase de introducción al control de versiones |
|
T5 - Doxygen: introducción a la generación automática de documentación de código | ||
T6 - Microcontroladores | Microcontroladores: arquitectura, periféricos, etc. |
|
T7 - Interrupciones y microcontroladores (y sus periféricos) Clase 1 | ||
T8 - Interrupciones y microcontroladores (y sus periféricos) Clase 2 | Periféricos de microcontroladores |
|
T9 - Datos compartidos: alternativas a deshabilitar interrupciones | Alternativas a deshabilitar interrupciones: lecturas sucesivas, doble buffer, cola circular. |
|
T10 - Arquitecturas de software embebido | Estudio de las diferentes arquitecturas de software embebido |
|
T11 - Sistemas embebidos de bajo consumo | Nivel circuito y sistema. Programación para bajo consumo |
|
T12 - Test de software embebido | Conceptos generales, tipos de test, test en host, simuladores, aserciones |
|
T13 - Introducción a los RTOS (1/2) | Introducción a los RTOS. Tareas. Planificador. Datos compartidos entre tareas. |
|
T14 - Introducción a los RTOS (2/2) | Semaforos: recursos compartidos y señalización. |
|
T15 - Otros servicios de los RTOS | Comunicación entre tareas. Gestión del tiempo, eventos, gestión dinámica de memoria, interrupciones en RTOS |
|
T16 - Criterios basicos de diseño | ||
Letras de ejercicios de teórico | Trabajos para los estudiantes que falten a alguna clase de teórico. |
|
Laboratorios 2024 | Guía de instalación y puesta a punto de herramientas para el Laboratorio | Versión 1.6 del 4/3/2022 |
Laboratorio 1 - Introducción al entorno de desarrollo CCS | En este laboratorio se darán los primeros pasos de utilización del entorno de desarrollo integrado (IDE, Integrated Development Environment) Code Composer Studio (CCS) para la creación de aplicaciones embebidas y se introducirá la plataforma de hardware Launchpad MSP-EXP430G2ET con un microcontrolador MSP430G2553 a utilizar durante los laboratorios, desarrollando parcialmente un módulo de reloj de tiempo real. Este laboratorio también servirá como una introducción a GIT y a las buenas prácticas de programación. |
|
Laboratorio 2 - Interrupciones | En este laboratorio se implementará un reloj de tiempo real utilizando un timer (temporizador hardware) de un microcontrolador y el módulo de reloj desarrollado en el Laboratorio 1. |
|
Archivos Laboratorio 2 | Archivos auxiliares necesarios para la realización del laboratorio 2 |
|
Laboratorio 3 - Round-Robin con interrupciones | ||
Archivos Laboratorio 3 | ||
Laboratorio 4 - Planificación por Encolado de funciones | En este laboratorio se implementará un registrador de temperatura involucrando comunicación serie asíncrona, el uso de un reloj de tiempo real y un sensor de temperatura. Para reducir el consumo se deberá configurar al microcontrolador en modo de bajo consumo (LPM3) con interrupciones habilitadas cuando no tenga ninguna tarea pendiente. Se deberán implementar dos versiones de la misma aplicación, usando: i) una arquitectura de software de Round-Robin con interrupciones, ii) una arquitectura de software de encolado de funciones con interrupciones. |
|
Archivos Laboratorio 4 | ||
gitignore para CCS | Este conjunto de reglas para gitignore no ha sido verificado, y se entrega en modalidad "as is". Cualquier comentario sobre su estructura es bienvenido. Tomado de https://github.com/keen/keen-cc3200 |
|
Ejemplo básico comentario módulo (Doxygen) | Ejemplo comentario módulo (doxygen) |
|
Ejemplo avanzado comentario módulo (Doxygen) | Ejemplo avanzado comentario módulo (Doxygen) |
|
Ejemplo interfaz módulo (temperatura.h) | ||
Ejemplo de Doxygen con Diferentes DoxyFiles (NUEVO) | ||
Proyectos | Descripción de categorías de proyectos | |
Template de la Memoria del Proyecto (Latex) | Template en Latex para Documentación Final |
|
Proyectos de años anteriores | Proyectos de fin de curso de años anteriores. |
|
Asignación de Grupos de Proyecto | ||
Horarios Presentación Primer Hito | ||
Material adicional: Ejercicios complementarios de lenguaje C | Ejercicios 1 | Ejercicios complementarios al Laboratorio 1. |
Ejercicios 2 | Ejercicios complementarios al Laboratorio 2. |
|
Ejercicios 3 | Ejercicios complementarios al laboratorio 3. |
|
Ejercicios 4 | Ejercicios complementarios al Laboratorio 4. |
|
Material adicional: Lenguaje C para sistemas embebidos | Convenciones sobre estilo de programación | Convenciones sobre estilo de programación. |
Modularidad y abstracción de software | Modularidad y abstracción de software. |
|
Artículo: "Five top causes of nasty embedded software bugs" por Michael Barr | Finding and killing latent bugs in embedded software is a difficult business. Heroic efforts and expensive tools are often required to trace backward from an observed crash, hang, or other unplanned run-time behavior to the root cause. In the worst cases, the root cause damages the code or data in a way that the system still appears to work fine or mostly fine-at least for a while. Too often engineers give up trying to discover the cause of infrequent anomalies that cannot be easily reproduced in the lab- dismissing them as user errors or "glitches." Yet these ghosts in the machine live on. Here's a guide to the most frequent root causes of difficult to reproduce bugs. Look for these top five bugs whenever you are reading firmware source code. And follow the recommended best practices to prevent them from happening to you again. |
|
Columna: "Assert Yourself" por Niall Murphy | Columna: "Assert Yourself" por Niall Murphy |
|
Material adicional: RTOS y afines | Curso web: Fundamentals of Real-Time Operating Systems por Jack Ganssle (Micrium) | In this course Jack Ganssle will describe how an RTOS is an essential part of a large class of embedded systems, and how its use can greatly simplify the design of a system while decreasing time to market. Further, he explains the essential parts of an RTOS's kernel and how the developer uses these resources in a typical application (March 2011). |
Articulo: Real-Time Operating Systems for DSP (part 6 -8) por Robert Oshana | Part 6 reviews various RTOS scheduling algorithms and explains the pros and cons of each. Part 8 shows how to analyze systems with aperiodic tasks. It also shows how to avoid priority inversion by using priority inheritance. Part 7 shows how to analyze scheduling behavior, and how to ensure tasks meet their deadlines. |
|
Generalized rate-monotonic scheduling theory: a framework fordeveloping real-time systems | Lui Sha; Rajkumar, R.; Sathaye, S.S., "Generalized rate-monotonic scheduling theory: a framework for developing real-time systems," Proceedings of the IEEE , vol.82, no.1, pp.68-82, Jan 1994 Abstract: Real-time computing systems are used to control telecommunication systems, defense systems, avionics, and modern factories. Generalized rate-monotonic scheduling theory, is a recent development that has had large impact on the development of real-time systems and open standards. In this paper we provide an up-to-date and self-contained review of generalized rate-monotonic scheduling theory. We show how this theory can be applied in practical system development, where special attention must be given to facilitate concurrent development by geographically distributed programming teams and the reuse of existing hardware and software components. |
|
Real-Time Operating Systems (RTOS) basics | by Mats Pettersson, IAR Systems. Abstract This article will explain some Real-Time Operating Systems (RTOS) basics. The material presented here is not intended as a complete coverage of different RTOSes and their features. For the purposes of simplification, I will briefly cover the most important features of a representative RTOS. After we explore what constitutes an RTOS and why we might want to use one, I’ll explain each of the basic components of a typical RTOS and show how these building blocks are integrated into the system. |
|
Build a super simple tasker | Autores: Miro Samek (Quantum Leaps) y Robert Ward (Netopia Inc.) |
|
A Compact Scheduler (pag. 17) | Autores: Andy Gayne & Steve Duckworth, Field Application Engineers, GD Technik Ltd. |
|
Operating systems on the rise | Artículo de Jim Turley (Embedded Systems Design) sobre el uso de RTOS. |