Skip to content

All about Flash module

Pablo González edited this page Nov 22, 2022 · 4 revisions

Los problemas que nos podemos encontrar usando la FLASH son los siguientes:

  • Lo primero, hay que tener en cuenta que la FLASH es bastante delicada, un fallo en la alimentación o que esta sea inestable durante un proceso de borrado, escritura o incluso cuando esta no esta realizando ninguna operación podría causar problemas.

  • Hay que tener en cuenta que programar con el debuguer, desde el STM32Cube o desde el STM32Programmer, mientras la FLASH estaba en uso (escibiendo o borrando) puede traer problemas. Es posible que el valor de la FLASH quede modificado y/o alguna flag quede mal puesta y en cuanto intentamos leer o progamar la FLASH el MCU entra en hard fault.

  • Cuando se quiere programar desde el STM32Programmer es muy importante deshabilita la opción de Run after programming porque esta opción por algún motivo que no he podido determinar provoca que el MCU entre en hard fault.

image

Como solucionar problemas:

  • Si lo anterior ocurre (el MCU entra en hard fault cada vez que queremos usar una funcion del módulo) la solución normal es ir al STM32Programmer, seleccionar la ventana Erasing&Programming en el apartado de Erase flash memory seleccionaremos los sectores del 4 al 7 y finalmente le daremos al botón de Erase selected sectors.

image

  • Un indicador común de que la FLASH tiene algún problema es observarla desde el STM32Programmer y observar patrones de 0x00000000 y 0xFFFFFFFF alternados cada ciertos bytes.

  • Si has realizado y comprobado lo anterior y la placa sigue entrando en hard fault seguramente no sea causado por la memoria FLASH.

Consejos para evitar problemas:

  • Estaría bastante bien que las placas de este año tengan alguna forma para indicar que alguna operación en la FLASH esta en marcha para evitar que se realicen operaciones que puedan corromper la FLASH.

  • También es importante que cuando una placa reciba la orden de saltar al bootloader, antes compruebe que ninguna operación se esta realizando en la FLASH y esperar a que acabe si alguna esta en marcha antes de saltar.

Problemas conocidos del módulo:

Al escirbir en dos páginas distintas a la vez consume 256KB de ram en vez de los 128KB que consume al escribir solo una. Esta ineficiencia se puede corregir si fuese necesario, aunque para el uso esperado de esta libreria no deberia ser un problema.

Clone this wiki locally