Estoy trabajando en un registrador de datos que escribe las posiciones del GPS al flash serie W25Q64FV. Planeo escribir datos GPS cada segundo. Tengo un par de preguntas:
- Con esta memoria flash es posible escribir en cualquier posición de 1 a 256 bytes a la vez (página). La especificación dice que la memoria tiene 100,000 ciclos de escritura / borrado. ¿Se cuenta por página o por byte? Entonces, si escribo un byte en la dirección X y luego otro en la dirección X + 1 (pero en la misma página) ¿significa que solo me quedan 99.998 escrituras a esa página? Yo diría que no, pero seguro que lo estoy preguntando. ¿Qué sucede si la escritura de un byte reescribe internamente la página completa?
- ¿Cómo mantener persistentemente la dirección del último byte escrito? Podría escribirlo en la EEPROM de Arduino en cada actualización, pero también tiene "solo" 100,000 ciclos de escritura, por lo que esto se alcanzaría mucho antes. Otra posibilidad podría ser escanear toda la memoria escrita y buscar el (los) byte (s) vacío (s), pero esto puede llevar un tiempo. O tal vez solo para tener un mapa de bits en el encabezado flash que marca las páginas completas y solo escanearía el último. ¿Alguna otra sugerencia?
- ¿Hay algún propósito especial para borrar bloques o completar la memoria flash? ¿No puedo simplemente escribir en la memoria de forma rotunda? Si elimino un archivo en mi disco duro, no escribirá ceros en todos sus bytes, ¿no podría ser igual con flash?