¿Se detiene la CPU de un ARM Cortex M durante la autoprogramación del flash?

7

La mayoría de las MCU ARM Cortex M no cuentan con memoria EEPROM. En su lugar, 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 de MCU específica (por ejemplo, STM32, Kinetis L) utilizada?

(Para algunas personas, esto puede parecer una pregunta estúpida, pero el PIC16 de Microchip detiene la CPU hasta 40 ms durante la autoprogramación del flash.)

    
pregunta realtime

1 respuesta

4

El comportamiento del núcleo depende de la implementación. Flash no es parte integral del núcleo de ARM y, como tal, cada proveedor lo implementa de manera diferente. Normalmente, durante el proceso de borrado / escritura uno se ejecutaría desde la RAM, y la ejecución no debería verse afectada.

En el STM32, creo que las lecturas del flash stall mientras los ciclos de borrado / escritura están en curso. Esto causaría que la ejecución del núcleo se detenga hasta que la operación se complete. 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's en los que debe ejecutar desde la RAM mientras se modifican los contenidos flash. De lo contrario, se producirá un fallo en el bus (y es probable que se produzca un fallo del sistema si los manejadores de fallos / fallos de bus están en destello). Algunos micros con grandes cantidades de memoria flash lo implementan como dos arreglos de memoria flash independientes, y estos generalmente permiten el acceso total a un banco mientras operan en el otro.

Necesitaría consultar la documentación de su parte específica para ver las limitaciones de ejecución al modificar los contenidos flash.

    
respondido por el rjp

Lea otras preguntas en las etiquetas