La mayoría de las MCU ARM Cortex M no cuentan con memoria EEPROM. En cambio, los datos persistentes se pueden escribir en la misma memoria flash que también contiene el programa.
- ¿Cuál es el estado de la CPU durante este proceso de borrado / escritura?
- ¿Se detiene? ¿Mantiene el funcionamiento normal?
- ¿El comportamiento de la CPU depende de la familia MCU específica (por ejemplo, STM32, Kinetis L) utilizada?
(Para algunas personas, esto podría parecer una pregunta estúpida, pero el PIC16 de Microchip detiene la CPU hasta 40 ms durante la autoprogramación flash).
Respuestas:
El comportamiento del núcleo depende de la implementación. Flash no es parte integral del núcleo ARM y, como tal, cada proveedor lo implementa de manera diferente. Por lo general, durante el proceso de borrado / escritura, uno ejecutaría desde la RAM y la ejecución no debería verse afectada.
En el STM32, creo que las lecturas de bloqueo de flash mientras los ciclos de borrado / escritura están en curso. Esto provocaría que la ejecución del núcleo se detenga hasta que se complete la operación. Con algunas de las configuraciones de flash, creo que puede continuar ejecutando / leyendo flash y solo se detendrá cuando acceda a la parte del flash que está borrando / programando.
He usado otros Cortex M en los que debe ejecutar desde la RAM mientras modifica el contenido de la memoria flash; de lo contrario, se encontrará con una falla del bus (y probablemente un bloqueo del sistema si sus manejadores de fallas de bus / fallas duras están en flash). Algunos micros con grandes cantidades de flash lo implementan como dos arreglos flash independientes, y estos generalmente permiten el acceso completo a un banco mientras operan en el otro.
Debería consultar la documentación de su parte específica para ver las limitaciones de ejecución al modificar el contenido flash.
fuente