Puede ser una pregunta tonta, pero no puedo averiguar en qué casos es relevante el borrado masivo instantáneo de la programación dentro de la aplicación (IAP), ya que también borraría el código de usuario.
Para dispositivos STM32, ST proporciona código de ejemplo en manuales de referencia como this :
A.2.4 Ejemplo de código de secuencia de borrado masivo
/* (1) Set the MER bit in the FLASH_CR register to enable mass erasing */
/* (2) Set the STRT bit in the FLASH_CR register to start the erasing */
/* (3) Wait until the BSY bit is reset in the FLASH_SR register */
/* (4) Check the EOP flag in the FLASH_SR register */
/* (5) Clear EOP flag by software by writing EOP at 1 */
/* (6) Reset the PER Bit to disable the mass erase */
FLASH->CR |= FLASH_CR_MER; /* (1) */
FLASH->CR |= FLASH_CR_STRT; /* (2) */
while ((FLASH->SR & FLASH_SR_BSY) != 0) /* (3) */
{
/* For robust implementation, add here time-out management */
}
if ((FLASH->SR & FLASH_SR_EOP) != 0) /* (4)*/
{
FLASH->SR = FLASH_SR_EOP; /* (5) */
}
else
{
/* Manage the error cases */
}
FLASH->CR &= ~FLASH_CR_MER; /* (6) */
No entiendo cómo la CPU puede llegar a las instrucciones de (3) a (6).
¿No deberían ser borrados ya?