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.
What is the difference between volatile RAM and non-volatile FRAM?¿Qué diferencia hay entre RAM volátil y FRAM no volátil?
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?
Where exactly do 0x1C00, 0x0202, 0xFFFE and 0x10000 belong?¿Dónde caen exactamente 0x1C00, 0x0202, 0xFFFE y 0x10000?
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.
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.
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.
Use the canonical word 0x12345678 and watch how memory changes.Usa la palabra canónica 0x12345678 y observa cómo cambia la memoria.
MSP430 stores the least significant byte at the lower address.El MSP430 almacena el byte menos significativo en la dirección más baja.
Network byte order is traditionally big-endian.El orden de bytes de red es tradicionalmente big-endian.
Intel and many embedded systems are little-endian.Intel y muchos sistemas embebidos son little-endian.
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.
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".
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.
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.
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.
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.
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.
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.
Bootstrap loader used to program the device.Bootstrap loader usado para programar el dispositivo.
Persistent configuration and calibration-like storage.Almacenamiento persistente de configuración y datos tipo calibración.
Factory data: chip information and calibration constants.Datos de fábrica: información del chip y constantes de calibración.
Startup code executed around reset before user code.Código de arranque ejecutado alrededor del reset antes del código de usuario.
Main SRAM window. Anchor: 0x1C00.Ventana principal de SRAM. Ancla: 0x1C00.
Device-dependent window.Ventana dependiente del dispositivo.
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.
A linear address model is easy to reason about.Un modelo lineal de direcciones es fácil de razonar.
The same instructions can touch code, data and hardware registers.Las mismas instrucciones pueden tocar código, datos y registros hardware.
The layout preserves continuity with older MSP430 families.La disposición preserva continuidad con familias MSP430 anteriores.
TLV and related regions keep essential calibration data accessible.TLV y regiones relacionadas mantienen accesibles los datos esenciales de calibración.
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.