← Fundamentos de Sistemas Embebidos

Clase 05

M.C. José Mauricio Matamoros de María y Campos · 9 sep 2026 · Tema 2 (continuación) — Mapas de memoria (ESP32, RP2040, ARM Cortex-M v6M), registros y periféricos (AVR/Arduino), bootloader y secuencia de arranque, espacio virtual vs físico, SRAM vs DRAM (arquitectura física, refresco, disipación térmica). Omisión intencional de interrupciones.

En corto

🎯 Para el examen

Registros y Periféricos en AVR / Arduino

Arquitectura de registros en AVR (8-bit, usado en Arduino UNO/Nano):

Comparativa: Programación a nivel registro vs. bibliotecas:

Mapa de Memoria del ESP32

Características principales:

Búsqueda en tablas (Análisis de complejidad):

Ventaja en sistemas embebidos: búsqueda en tiempo constante O(1) permite evaluar seno/coseno para ángulos arbitrarios sin latencia impredecible.

Mapa de Memoria del RP2040 — Intercalado por Retrocompatibilidad

Problema de compatibilidad: cuando se lanza una segunda versión de un microcontrolador (RP2350) con mayor capacidad de RAM (512 KB vs. 264 KB en RP2040), cambiar las direcciones de memoria físicas rompe todos los programas existentes compilados para la versión anterior.

Solución: Intercalado de bloques de memoria: en lugar de colocar los nuevos bloques de RAM encima de los existentes, se añaden debajo de los periféricos ya asignados, generando traslapes e intercalado en el mapa de direcciones.

Beneficio: los programas antigüos que usan direcciones específicas siguen funcionando, pues los bloques viejos permanecen en sus posiciones originales. Los nuevos bloques se insertan en espacios previamente no utilizados.

Rango reservado/prohibido: ciertas direcciones del mapa están reservadas y no pueden accederse para evitar colisiones con periféricos o memoria del sistema.

Mapa del Núcleo ARM Cortex-M (v6M) — Especificación de Direccionamiento

Distinción entre dos mapas:

Distribución de espacios en Cortex-M v6M (rango 0x00000000–0xFFFFFFFF = 4 GB):

Secuencia de Arranque (Bootloader)

¿Qué sucede al energizar un procesador embebido?

  1. CPU comienza a ejecutar instrucciones desde la dirección 0x00000000 (reseteo).
  2. En esa dirección reside el bootloader, un pequeño programa grabado en una ROM interna no volátil (BootROM).
  3. El bootloader no encontrará el sistema operativo (Kernel) en RAM, pues la RAM se vuelve inútil al apagar (memoria volátil).

Función del bootloader (Raspberry Pi / ARM Cortex-A como ejemplo):

En microcontroladores (Arduino, ESP32): el bootloader es minimal, pues típicamente la aplicación completa reside en Flash interna. El bootloader solo copia el programa de Flash a RAM (si es necesario) y lo ejecuta.

Analogía: al despertar una persona con amnesia severa, necesita que alguien le diga quién es, dónde está y cuáles son sus funciones. El bootloader cumple esa función para el procesador.

Espacio Virtual vs. Espacio Físico — Directorios Virtuales del Kernel

En sistemas Linux embebidos:

Sistemas de archivos virtuales (NO existen en disco físicamente):

Segmentation Fault (Segfault):

int *s = NULL;
s = 1;  // Intenta escribir en dirección 0x00000000
Clasificación de Memorias: SRAM vs. DRAM

SRAM (Static RAM — Memoria de Acceso Aleatorio Estática):

DRAM (Dynamic RAM — Memoria de Acceso Aleatorio Dinámica):

Curva de Respuesta Temporal en DRAM:

Comparativa de Temperatura según Tipo y Capacidad de RAM:

Contexto — no examen
Pendiente / próximas clases