Con la memoria flash, sólo es posible escribir borrando los bits de su estado de borrado (establecido), y la única manera de establecer un bit es borrar la región que lo contiene. Si sólo necesitas borrar bits, entonces puedes hipotéticamente reescribir una sección de la memoria flash hasta tantas veces como bits haya en esa sección antes de tener que borrarla. Sin embargo, he notado que las partes SAM-D de Atmel especifican un límite más estricto en esto. Sección 37-12 de la hoja de datos de la familia SAM D21/DA1:
Tenga en cuenta que en esta tecnología flash, se permite un número máximo de 8 escrituras consecutivas por fila. Una vez que se alcanza este número, es obligatorio borrar la fila.
He revisado algunas otras hojas de datos de otros MCUs y algunos ICs de memoria flash, y hasta ahora la hoja de datos del SAM D21 es el único lugar donde he visto un límite como este especificado. Dado que la hoja de datos de Atmel lo indica sólo como una nota y no como una especificación cualificada, no estoy seguro de si este límite se basa en las peores condiciones (como el voltaje, la temperatura o el número de ciclos). Supongo que este límite puede variar con la tecnología específica utilizada (de ahí la mención en la nota de Atmel), pero en ese caso no sé qué características específicas de la flash D21 imponen este límite.
No creo que sea razonable esperar que se pueda borrar cada bit de una región individualmente, pero si hay un límite general en el número de reescrituras antes de que se requiera un borrado no he podido encontrar una referencia para ello.
Es evidente que existe un límite inferior, impuesto por la forma en que se organiza generalmente la memoria flash: concretamente, el hecho de que el tamaño mínimo que puede borrarse de una vez suele ser un múltiplo del tamaño mínimo que puede escribirse de una vez. Por ejemplo, la mencionada SAM D21 escribe por "página", pero borra por "fila", y como hay cuatro páginas por fila, debe ser posible escribir en una fila determinada al menos cuatro veces antes de que se requiera un borrado si se va a utilizar toda la flash a la vez.
Más allá de este límite inferior, a falta de una especificación clara en la hoja de datos, ¿existe una norma o directriz general sobre el número mínimo o máximo de veces que una parte de la memoria flash puede reescribirse de forma segura entre borrados? ¿Qué características específicas de la tecnología de memoria, si es que hay alguna, podrían influir en este límite?
Edito para aclarar: no me preocupa la resistencia general de escritura/borrado, que suele estar bien especificada y es independiente de la especificación de reescrituras por borrado que estoy pidiendo. Y para los fines de esta pregunta, podemos asumir que cualquier reescritura está dentro de cualquier tamaño de escritura que soporte la memoria flash.