¿Qué sucede dentro de un microcontrolador cuando grabo un programa en él?

“Grabar” es solo una palabra, el programa, que resulta ser una colección de bytes, se escribe en la Memoria de programa (ROM / Flash) y en la Memoria de datos (RAM) y probablemente en EEPROM (Memoria no volátil – NVM).

El formato en el que se almacenan esos bytes en el archivo hexadecimal o cualquier salida que produzca el compilador es diferente según el fabricante.

Lo que hace el Programador de hardware es que solo lee el binario de la PC (Un PC Client lo envía al Programador MCU) y lo envía a la MCU en una secuencia. La MCU luego almacena los bytes adecuadamente en Flash, RAM y EEPROM en función de la secuencia.

Después del reinicio, la MCU comienza la ejecución del programa desde la dirección Flash 0. Ahí es donde reside el código de inicialización del programa.

Algunas MCU tienen un gestor de arranque que es una pequeña memoria de programa desde la cual el programa del gestor de arranque (programa almacenado en la memoria del cargador de arranque) se ejecuta en secuencias especiales de arranque, como mantener presionado el botón del cargador de arranque o algo que active la secuencia del cargador de arranque. Los cargadores de arranque aceptan bytes del programador MCU y escriben en la memoria principal del programa de la MCU.

Los microcontroladores tienen arquitecturas diferentes según su fabricante. Pero lo que todos tienen en común son la memoria. Flash, EEPROM, RAM, etc. Supongo que esto responde a su pregunta sobre los componentes internos de ROM y Flash.

Cómo funciona la ROM

Cómo funciona la memoria flash

Microcontrolador : es un circuito integrado que significa que millones de transistores están fusionados en una pequeña oblea de silicio.

Código hexadecimal : el código hexadecimal es básicamente una serie de 0 y 1 dispuestos en un formato que transmite un significado (sin entrar en detalles) para ex. código de inicio, recuento de bytes, etc. para el microcontrolador, la combinación de dichos formatos se divide además en una instrucción o se está programando un dato.

Programación / grabación : es el proceso de permitir que nuestro dispositivo (microcontrolador) aprenda ese código hexadecimal. Esto sucede básicamente en la memoria flash o ROM, es decir, por qué los microcontroladores se especifican con memoria flash, es decir, cuánto código hexadecimal pueden almacenar.

En el nivel base, esta sesión de programación se lleva a cabo configurando y restableciendo millones de flip flops y otros elementos de memoria que pueden retener la información incluso después de que se corta la energía (es decir, por qué se llaman elementos de memoria … :))

Todas estas actividades de configuración y restablecimiento ocurren en una transición de reloj, por lo que esta es la razón por la cual las dos líneas principales de un programador son las líneas de reloj (CLK) y de DATOS. los DATOS se comunican o parpadean en la memoria del microcontrolador en cada transición de reloj.

Creo que esta visión general es suficiente … es un proceso muy complejo …

¡Feliz aprendizaje!

Tenga en cuenta que esta es una respuesta simplificada.

El hexadecimal generado por el compilador es una lista de instrucciones (códigos operativos) para la CPU del controlador. Las instrucciones pueden variar desde ADD simple, MULT hasta complejas como saltar, recuperar datos de la memoria, etc.

La Unidad de Gestión de Programas (PMU) dentro de la MCU es responsable de obtener estas instrucciones de la memoria flash y entregarlas a la CPU para que las ejecute. La CPU luego utiliza la ALU si es una instrucción aritmética, los buses intra MCU si es una instrucción de lectura / escritura de memoria y así sucesivamente para ejecutar las instrucciones dadas por la PMU.

Espero que esta explicación lo aclare y lo ayude a comprender mejor los sistemas integrados

Se voltean un poco. Muchos de ellos.

Eso es básicamente lo que es. Cómo los bits representados dependen de la tecnología de implementación específica. Cuando es un relé, un imán, una puerta flotante.