Tema Nombre Descripción
Archivo Cronograma 2024 (actualizado 22/2/2024)

Cronograma tentativo de las clases, laboratorios, etc.

Página Horarios y salones
Página Información básica sobre el curso
Página Bibliografía

Bibliografía del curso

Archivo Reglamento del Curso (actualizado 10/2/2023)

Reglamento del Curso

URL Programa de la asignatura
Archivo Listado de estudiantes, turnos y grupos (actualizado 8/3/2024)

Listado de estudiantes 

Teórico 2024 Archivo T0 - Presentación del curso

Contenido del curso, objetivos, metodología, forma de aprobación, etc.

Archivo T1 - Introducción y conceptos basicos.

Introducción y conceptos basicos: sistemas embebidos y de tiempo real.

Archivo T1 - Encuesta sobre el mercado de sistemas embebidos

Encuesta sobre el mercado de sistemas embebidos

Archivo T2 - Introducción al lenguaje C

Introducción al lenguaje C.

Archivo 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.

Archivo T4 - Git: introducción al control de versiones

Diapositivas usadas en la clase de introducción al control de versiones

Archivo T5 - Doxygen: introducción a la generación automática de documentación de código
Archivo T6 - Microcontroladores

Microcontroladores: arquitectura, periféricos, etc.

Archivo T7 - Interrupciones y microcontroladores (y sus periféricos) Clase 1
Archivo T8 - Interrupciones y microcontroladores (y sus periféricos) Clase 2

Periféricos de microcontroladores

Archivo T9 - Datos compartidos: alternativas a deshabilitar interrupciones

Alternativas a deshabilitar interrupciones: lecturas sucesivas, doble buffer, cola circular.

Página Letras de ejercicios de teórico

Trabajos para los estudiantes que falten a alguna clase de teórico.

Laboratorios 2024 Archivo Guía de instalación y puesta a punto de herramientas para el Laboratorio

Versión 1.6 del 4/3/2022

Archivo 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.


Archivo 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.

Carpeta Archivos Laboratorio 2

Archivos auxiliares necesarios para la realización del laboratorio 2

Archivo Laboratorio 3 - Round-Robin con interrupciones
Carpeta Archivos Laboratorio 3
Archivo 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.


Carpeta Archivos Laboratorio 4
Archivo 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

Archivo Ejemplo básico comentario módulo (Doxygen)

Ejemplo comentario módulo (doxygen)

Archivo Ejemplo avanzado comentario módulo (Doxygen)

Ejemplo avanzado comentario módulo (Doxygen)

Archivo Ejemplo interfaz módulo (temperatura.h)
Archivo Ejemplo de Doxygen con Diferentes DoxyFiles (NUEVO)
Proyectos Archivo Template de la Memoria del Proyecto (Latex)

Template en Latex para Documentación Final

Página Proyectos de años anteriores

Proyectos de fin de curso de años anteriores.

Material adicional: Ejercicios complementarios de lenguaje C Página Ejercicios 1
Ejercicios complementarios al Laboratorio 1.
Página Ejercicios 2
Ejercicios complementarios al Laboratorio 2.
Página Ejercicios 3
Ejercicios complementarios al laboratorio 3.
Página Ejercicios 4
Ejercicios complementarios al Laboratorio 4.
Material adicional: Lenguaje C para sistemas embebidos Página Convenciones sobre estilo de programación

Convenciones sobre estilo de programación.

Página Modularidad y abstracción de software
Modularidad y abstracción de software.
URL 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.
URL Columna: "Assert Yourself" por Niall Murphy

Columna: "Assert Yourself" por Niall Murphy

Material adicional: RTOS y afines URL 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).
URL 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.
URL 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.
URL 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.
URL Build a super simple tasker
Autores: Miro Samek (Quantum Leaps) y Robert Ward (Netopia Inc.)
URL A Compact Scheduler (pag. 17)
Autores: Andy Gayne & Steve Duckworth, Field Application Engineers, GD Technik Ltd.
URL Operating systems on the rise
Artículo de Jim Turley (Embedded Systems Design) sobre el uso de RTOS.