ciclos de escritura en la memoria del microcontrolador

4

La información muestra que la memoria flash tiene un número limitado de ciclos de escritura (generalmente ~ 10'000). Muchas MCUs emulan EEPROM en flash, por lo tanto, algunos documentan este write_life_cycle.

Una mirada a cualquier hoja de datos de MCU revela algo extraño, sin embargo, esta memoria flash es solo un banco en la unidad de memoria de MCU. Comparte la memoria general con los "REGISTROS de control y datos" (ver foto adjunta).

Por lo tanto, mi pregunta: Supongamos que un programa escribe continuamente en estos registros (por ejemplo, const de las lecturas de temperatura de ADC escritas en ADC1_DR), entonces este write_life_cycle se puede superar en menos de un segundo. Sin embargo, como sabemos, las MCU sobreviven a eso por algún margen.

Traté de suponer que tal vez, los registros se implementan de manera diferente en HW, pero entonces, ¿por qué sus direcciones de memoria se superponen con el espacio de memoria flash y sus anchos son iguales? (un bus de 32 bits puede acceder a un registro de 16 bits, obviamente ; caso en cuestión: todos esos bits reservados en algunos registros; incluso podrían reducir el costo)

¿En qué me he equivocado al entender cómo funciona la memoria de MCU?

    
pregunta haxkalibrr

1 respuesta

4

Las arquitecturas modernas de procesadores le permiten abordar un espacio de memoria contiguo con el mismo bus de datos, incluso cuando accede a múltiples tipos de memoria (por ejemplo, RAM, ROM y Flash). Resulta que esto es bastante útil ya que le permite a su programa leer / escribir RAM y leer desde Flash sin hacer ningún truco especial para cambiar los tipos de memoria.

Este es el mismo principio que un bus de datos externo que puede acceder a un chip RAM discreto dentro de un cierto rango de direcciones y un chip ROM discreto dentro de un rango de direcciones diferente, incluso cuando ambos chips están en el mismo bus y dentro de la misma dirección espacio.

En un microcontrolador moderno, estas secciones RAM / ROM / Flash se incluyen todas juntas en la misma parte y se puede acceder a ellas por el mismo bus de datos dentro del procesador.

Los registros de funciones están en la RAM, y pueden leerse / escribirse tanto como quieras sin penalización. Su ejemplo de un registro de ADC que se actualiza constantemente es bueno; La RAM se utiliza para almacenar los resultados de ADC en ese registro y se puede acceder a ellos en el mismo bus de datos con la memoria flash.

El código del programa generalmente está en el espacio de la memoria flash, y esto es (generalmente) de solo lectura. Sin embargo, algunos procesadores le permiten borrar y volver a escribir secciones de la memoria flash interna. Esto no es tan fácil como escribir en RAM; por lo general, hay instrucciones especiales que indican al procesador qué página se debe borrar, etc. La mayoría de los proveedores proporcionarán una biblioteca y / o un código de ejemplo para hacer esto, como en el caso de un área flash emulada por EEPROM que mencionó.

En la mayoría de los microcontroladores, escribir en flash es la transición "fácil" (1s se cambia a 0s) y se puede hacer byte a byte. El borrado (0s a 1s) no es tan específico y generalmente se realiza en bloques (página, sector, etc.) Dado que este borrado requiere un voltaje más alto, hay una bomba de carga en el chip para generar este voltaje de borrado de flash.

Este mayor voltaje de borrado tiene dos consecuencias: los ciclos de borrado suelen ser mucho más lentos que las lecturas (se debe acumular una carga y se debe verificar el borrado), y los impulsos de alto voltaje desgastan un poco el flash con cada ciclo de borrado . Por lo tanto, el borrado de flash debe hacerse con moderación.

Tiene razón en que los proveedores aumentan el margen de estas estimaciones de vida útil, pero debe tener cuidado al diseñar una aplicación que borre / escriba en flash (autoprogramación) para no gastar su memoria flash antes de que su producto superó su vida útil de diseño.

    
respondido por el mhilden

Lea otras preguntas en las etiquetas