Module 3Módulo 3

Memory and ArchitectureMemoria y Arquitectura

Memory technologies, Von Neumann architecture, endianness and the concrete map where MSP430 code and peripherals live. Tecnologías de memoria, arquitectura Von Neumann, endianness y el mapa concreto donde viven el código y los periféricos MSP430.

Question 1Pregunta 1

What is the difference between volatile RAM and non-volatile FRAM?¿Qué diferencia hay entre RAM volátil y FRAM no volátil?

Question 2Pregunta 2

Why does code share an address space with data and peripherals?¿Por qué el código comparte espacio de direcciones con datos y periféricos?

Question 3Pregunta 3

Where exactly do 0x1C00, 0x0202, 0xFFFE and 0x10000 belong?¿Dónde caen exactamente 0x1C00, 0x0202, 0xFFFE y 0x10000?

Memory Types: The Big PictureTipos de Memoria: Panorama General

flash_on

SRAM

Volatile workspaceEspacio de trabajo volátil
  • Fast read/write storage for variables and stack.Almacenamiento rápido de lectura/escritura para variables y pila.
  • Loses its contents when power disappears.Pierde su contenido cuando desaparece la alimentación.
  • Capacity is usually limited in small microcontrollers.La capacidad suele ser limitada en microcontroladores pequeños.
save

FRAM

Non-volatile program/data storageAlmacenamiento no volátil de programa/datos
  • Keeps data without power.Mantiene los datos sin alimentación.
  • Writes are much faster and easier than classic Flash.Las escrituras son mucho más rápidas y sencillas que en Flash clásica.
  • Still has real tradeoffs and should not be described as "infinite".Sigue teniendo compromisos reales y no debe describirse como "infinita".
SRAM
0xCAFE
Loses state without powerPierde estado sin energía
FRAM
0xBEEF
Keeps state without powerMantiene estado sin energía

SRAM in DetailSRAM en Detalle

What SRAM is forPara qué sirve la SRAM

  • It stores temporary state: variables, buffers, return addresses and stack frames.Almacena estado temporal: variables, buffers, direcciones de retorno y marcos de pila.
  • In small microcontrollers, SRAM is precious, so stack growth and data placement matter.En microcontroladores pequeños la SRAM es un recurso precioso, así que importan tanto el crecimiento de la pila como la colocación de datos.
  • It is static RAM, not the dynamic RAM used in PCs.Es RAM estática, no la RAM dinámica usada en PCs.
Typical contentsContenido típico
0x1C00 - globals
0x1F00 - buffers
0x23FE - stack top

If the stack grows downward until it collides with data, you get a stack overflow.Si la pila crece hacia abajo hasta chocar con los datos, aparece un desbordamiento de pila.

FRAM in DetailFRAM en Detalle

Real advantagesVentajas reales

  • Non-volatile: data survives power loss.No volátil: los datos sobreviven al corte de energía.
  • Writes do not need the classic Flash erase cycle.Las escrituras no necesitan el ciclo de borrado típico de la Flash.
  • Very high write endurance, on the order of 1015 writes.Muy alta resistencia a escritura, del orden de 1015 escrituras.

Real disadvantagesDesventajas reales

  • Read is destructive at the physical cell level, so restore action is required internally.La lectura es destructiva a nivel de celda física, así que internamente hace falta restaurar el dato.
  • Huge endurance is not the same thing as infinite endurance.Una resistencia enorme no es lo mismo que resistencia infinita.
  • For hot temporary data, SRAM is still the natural place.Para datos temporales muy calientes, la SRAM sigue siendo el lugar natural.
Recommended useUso recomendado
Good candidatesBuenos candidatos
  • Program codeCódigo de programa
  • Constant tablesTablas constantes
  • Calibration and persistent dataCalibración y datos persistentes
Better kept in SRAMMejor en SRAM
  • Fast-changing temporary variablesVariables temporales muy cambiantes
  • Stack dataDatos de pila
  • Frequently reused buffersBuffers reutilizados con frecuencia

Von Neumann

Core ideaIdea central

Code and data share the same address space. In the programmer's model, an address can refer to an instruction word, a variable or a peripheral register. That is exactly why memory-mapped I/O fits so naturally in the MSP430 world.Código y datos comparten el mismo espacio de direcciones. En el modelo del programador, una dirección puede referirse a una palabra de instrucción, a una variable o a un registro de periférico. Precisamente por eso la E/S mapeada en memoria encaja tan bien en el mundo MSP430.

AdvantagesVentajas
  • Simple memory map.Mapa de memoria simple.
  • Flexible use of the address space.Uso flexible del espacio de direcciones.
  • Straightforward programmer model.Modelo del programador directo.
DrawbackInconveniente

A shared path for code and data can become a bottleneck. Harvard-style separation can move more information in parallel.Un camino compartido para código y datos puede convertirse en un cuello de botella. Una separación tipo Harvard puede mover más información en paralelo.

Endianness: 32-bit ExampleEndianness: Ejemplo de 32 bits

Use the canonical word 0x12345678 and watch how memory changes.Usa la palabra canónica 0x12345678 y observa cómo cambia la memoria.

32-bit wordPalabra de 32 bits

MSP430 stores the least significant byte at the lower address.El MSP430 almacena el byte menos significativo en la dirección más baja.

Memory viewVista de memoria
0x0200
78
0x0201
56
0x0202
34
0x0203
12

Endianness in Real SystemsEndianness en Sistemas Reales

NetworksRedes

Network byte order is traditionally big-endian.El orden de bytes de red es tradicionalmente big-endian.

Modern CPUsCPUs modernas

Intel and many embedded systems are little-endian.Intel y muchos sistemas embebidos son little-endian.

Embedded linksEnlaces embebidos

When binary payloads cross UART, SPI or WiFi, byte order must be agreed explicitly.Cuando cargas binarias cruzan UART, SPI o WiFi, el orden de bytes debe acordarse explícitamente.

CompatibilityCompatibilidad

The real rule is not "which one wins", but "which one the protocol expects".La regla real no es "cuál gana", sino "cuál espera el protocolo".

Separate I/O vs Memory-Mapped I/OE/S Separada vs E/S Mapeada en Memoria

Separate I/O spaceEspacio de E/S separado

  • Advantage: user programs are less likely to hit hardware accidentally.Ventaja: es menos probable que un programa de usuario golpee hardware por accidente.
  • Advantage: fits well with kernel/supervisor privilege models.Ventaja: encaja bien con modelos de privilegio kernel/supervisor.
  • Cost: it needs dedicated instructions and usually dedicated bus semantics.Coste: necesita instrucciones dedicadas y normalmente semántica de bus específica.

Memory-mapped I/OE/S mapeada en memoria

  • Advantage: same instructions for RAM and peripherals.Ventaja: mismas instrucciones para RAM y periféricos.
  • Advantage: simpler hardware, ideal for small microcontrollers.Ventaja: hardware más simple, ideal para microcontroladores pequeños.
  • Cost: consumes address space and can be harder to protect in larger systems.Coste: consume espacio de direcciones y puede ser más difícil de proteger en sistemas grandes.

Memory-Mapped I/O DemoDemo de E/S Mapeada en Memoria

A register write does not store data somewhere abstract. It changes hardware state.Una escritura en registro no guarda datos en algún lugar abstracto. Cambia el estado del hardware.

MOV.B #1, &P1DIR
Configure P1.0 as output.Configurar P1.0 como salida.
MOV.B #1, &P1OUT
Drive the output high.Forzar la salida a nivel alto.

First you must set the direction register. Writing P1OUT only makes sense once the pin is configured as output.Primero hay que fijar el registro de dirección. Escribir P1OUT solo tiene sentido cuando el pin ya es salida.

&P1DIR0x00
&P1OUT0x00
P1.0input / offentrada / apagado
P1.0 @ 0x0202

Canonical Memory MapMapa de Memoria Canónico

Click a region to explore. The reference grid below shows all address ranges.Haz clic en una región para explorar. La cuadrícula de referencia muestra todos los rangos.

64 KB core spaceEspacio base de 64 KB
0xFFFF
0x0000
0x0006–0x001F
Tiny RAM
0x0020–0x0FFF
MMIO
0x1000–0x17FF
BSL
0x1800–0x19FF
Info
0x1A00–0x1AFF
TLV
0x1B00–0x1BFF
Startup
0x1C00–0x23FF
RAM
0x2400–0x43FF
FreeLibre
0x4400–0xFFFF
MainPrincipal
0x10000–0x23FFF
ExtendedExtendida
Selected regionRegión seleccionada

Main memory and vectorsMemoria principal y vectores

The 0x4400–0xFFFF region holds main FRAM content. At the very top, 0xFFFE stores the reset vector and the highest addresses contain interrupt vectors.La región 0x4400–0xFFFF contiene la FRAM principal. En la parte más alta, 0xFFFE almacena el vector de reset y las direcciones finales contienen los vectores de interrupción.

Region ReferenceReferencia de Regiones

0x0006 – 0x001F
Tiny RAM

Small low-address data region. Conceptually different from MMIO — stores data, not hardware state.Pequeña región de datos en direcciones bajas. Conceptualmente distinta de MMIO — almacena datos, no estado hardware.

0x0020 – 0x0FFF
MMIO

Memory-mapped peripherals, SFRs and control registers. Reads/writes interact with hardware.Periféricos mapeados en memoria, SFRs y registros de control. Las lecturas/escrituras interactúan con hardware.

0x1000 – 0x17FF
BSL

Bootstrap loader used to program the device.Bootstrap loader usado para programar el dispositivo.

0x1800 – 0x19FF
Info

Persistent configuration and calibration-like storage.Almacenamiento persistente de configuración y datos tipo calibración.

0x1A00 – 0x1AFF
TLV

Factory data: chip information and calibration constants.Datos de fábrica: información del chip y constantes de calibración.

0x1B00 – 0x1BFF
Startup

Startup code executed around reset before user code.Código de arranque ejecutado alrededor del reset antes del código de usuario.

0x1C00 – 0x23FF
RAM

Main SRAM window. Anchor: 0x1C00.Ventana principal de SRAM. Ancla: 0x1C00.

0x2400 – 0x43FF
Free / reservedLibre / reservada

Device-dependent window.Ventana dependiente del dispositivo.

0x4400 – 0xFFFF
Main FRAMFRAM principal

Program code. Reset vector at 0xFFFE.Código de programa. Vector de reset en 0xFFFE.

Why distinctions matter: Tiny RAM and MMIO are conceptually different — one stores data, the other changes hardware state. Collapsing both into "SFR" hides that difference and weakens the mental model. The same principle applies across the entire map.Por qué importan las distinciones: Tiny RAM y MMIO son conceptualmente diferentes — una almacena datos, la otra cambia el estado del hardware. Colapsar ambas como "SFR" oculta esa diferencia y debilita el modelo mental. El mismo principio se aplica a todo el mapa.

Why This Map Design WorksPor Qué Funciona Este Diseño de Mapa

FlexibilityFlexibilidad

A linear address model is easy to reason about.Un modelo lineal de direcciones es fácil de razonar.

SimplicitySimplicidad

The same instructions can touch code, data and hardware registers.Las mismas instrucciones pueden tocar código, datos y registros hardware.

CompatibilityCompatibilidad

The layout preserves continuity with older MSP430 families.La disposición preserva continuidad con familias MSP430 anteriores.

Factory calibrationCalibración de fábrica

TLV and related regions keep essential calibration data accessible.TLV y regiones relacionadas mantienen accesibles los datos esenciales de calibración.

Closing the LoopCerrando el Círculo

In the MSP430, memory is not a passive backdrop. It defines where code lives, where the stack grows, where calibration data hides and where writing 0x0202 can change the external world.En el MSP430, la memoria no es un telón de fondo pasivo. Define dónde vive el código, dónde crece la pila, dónde se esconden los datos de calibración y dónde escribir en 0x0202 puede cambiar el mundo exterior.

That is why understanding the map is not a separate topic from assembly. It is the terrain on which assembly instructions actually operate.Por eso entender el mapa no es un tema separado del ensamblador. Es el terreno sobre el que realmente operan las instrucciones que estudiamos en el módulo anterior.