# TEMA 1: Introducción y conceptos básicos ## 1. Clasificación Los sistemas de propósito general se pueden diferenciar de los sistemas empotrados, pero no es una clasificación estricta sino más bien un rango o gradiente. ![[Pasted image 20250206105144.png]] - **Sistema tiempo real VS Sistema convencional:** Freno ABS frente a procesador de texto. - **Sistema de uso industrial VS Producto de consumo:** Máquina de empaquetado de patatas fritas frente a consola de videojuegos. - **Sistema dirigido por eventos VS Sistema dirigido por datos:** Freno ABS frente a MP3. - Procesadores digitales de señal (DSP): para procesar flujos de datos. - **Sistema artesanal/prototipo VS Sistema industrializado:** Puerta de garaje autoconstrucción frente a lavadora comercial. ### Dispositivos comunes - PC sobremesa. - Autómatas Programables Industriales (API) o Controladores Lógicos Programables (PLC). - Microcontroladores. - Procesadores Digitales de Señal (DSP). - Lógica programable (FPGAs, PLDs). - Sistemas _Full Custom_. ### Principales diferencias GPC VS Embedded System [EXAMEN] ![[Pasted image 20250206111909.png]] ## 2. Características especiales de los sistemas empotrados ### Memoria - Siempre ejecutan el mismo código: necesitan normalmente más ROM que RAM, el código se encuentra en la ROM y el _stack_ en la RAM, aunque algunos no tienen. - [EXAMEN] Las variables en la ROM son constantes, pero ¿las globales en RAM se inicializan explícitamente? - Si la variable la declaramos e inicializamos a la vez, mientras tengamos el microcontrolador conectado al IDE, es válido. Sin embargo, al funcionar el microcontrolador independientemente, si queremos inicializar una variable global, deberíamos declararla y luego inicializarla dentro del código, ya que no hay intérprete ni nada que la inicialice en tiempo de ejecución. **ACTUALMENTE** se soluciona con un código _startup_ antes del `main` para inicializar este tipo de variables globales. En el código _startup_ también se inicializan punteros de pila. - Se puede usar la palabra reservada `const` para establecer que ese código está en ROM, y en este caso se podría inicializar en la declaración. - No requiere soporte de almacenamiento tipo HD. - Pueden poseer o no protección para acceder a datos/código internos. - Por compatibilidad y limitaciones, uso de bancos de memoria. ### Datos e instrucciones - Preparados para manipulación de bits - El ISA suele ser recortado: instrucciones de salto condicional, instrucciones aritméticas, signo, modos de direccionamiento, registro de estado "pobre"... ### Fallos y robustez - No suelen ser sistemas atendidos, el usuario no es consciente de que es un computador. - Implementan sistemas de tolerancia y recuperación de fallos - Se han ampliado los rangos de funcionamiento en cuanto a temperatura, radiación, niveles de alimentación, etc ### Consumo - Optimizados para bajo consumo - Utilización en aplicaciones móviles modos de bajo consumo (ej: mando a distancia) ### Programación y desarrollo - Difícil de depurar - Siempre ejecutan el mismo software - Los programas no suelen acabar `while(1) {...}` ### Tamaño y precio - En grandes cantidades son muy baratos - Multitud de formatos para satisfacer la industria ## 3. Sistemas tiempo real ![[Pasted image 20250206122521.png]] ### Sistema Tiempo Real Sistema informático en el que la corrección del resultado depende tanto de su validez lógica como del instante en que se produce. ### Computador Empotrado Computador integrado en algún mecanismo físico para implementar un tipo de control de procesos o toma de datos. ### Sistema Empotrado Tiempo Real Sistema informático que ejecuta alguna aplicación de tiempo real y tiene al menos un elemento que sea un computador empotrado.
heap, memoria principalmalloc y freeint* a = malloc(10*sizeof(int));Como la cantidad de memoria en los SSEE es limitada, no es que no se pueda usar, pero hay que tener mucho cuidado al usar la asignación dinámica ya que puede llegar un momento en que se pida reservar más memoria de la disponible. Para asegurar que el sistema sea seguro, se recomienda usar variables estáticas
Single Chip (Microcontrolador, MCU): RAM y ROM internas
Modo expandido (Microprocesador, MPU): se sacan desde el chip buses de datos, direcciones y líneas de control hacia fuera para RAM y ROM externas