20 min. La SD es la fuente de verdad: el radio pierde paquetes, la tarjeta no. Pero solo si se escribe de forma que sobreviva a un corte de energĂ­a.

Escribir en SD cuesta más de lo que parece

La tarjeta escribe en bloques (típicamente 512 B) y en erase blocks mucho mayores. Escribir 20 bytes por muestra provoca ciclos de lectura-modificación-escritura del bloque completo. Además, cada cierto tiempo la tarjeta hace wear leveling internamente y una escritura que normalmente tarda microsegundos puede tardar decenas de milisegundos. Ese pico es impredecible y hay que diseñar para él.

Consecuencia directa: la escritura a SD nunca va en la tarea de adquisiciĂłn. Va en su propia tarea, alimentada por una cola.

Buffer + tarea escritora

[tareas de sensores] → cola → [tarea SD] → buffer en RAM → flush a tarjeta

El tamaño del buffer se elige por el peor caso: cuántas muestras entran mientras dura el pico de escritura más largo. Si el buffer se llena, hay que decidir qué se tira — y decidirlo antes, no en carrera.

Flush: el compromiso central

PolĂ­tica Se pierde en un corte Costo
Flush cada muestra casi nada mata el rendimiento y desgasta la tarjeta
Flush por tiempo (p. ej. cada 1 s) 1 s de datos predecible — suele ser la respuesta correcta
Flush cada N registros hasta N registros, y N no equivale a un tiempo fijo engañoso: a baja frecuencia se pierde muchísimo tiempo de datos

Por qué se corrompe un archivo

FAT32 guarda metadatos (tamaño, cadena de clusters) aparte de los datos. Si se corta la energía entre escribir datos y actualizar metadatos, el archivo queda con tamaño cero o truncado aunque los bytes estén físicamente en la tarjeta. De ahí dos defensas:

  1. Archivos pre-asignados de tamaño fijo (preAllocate de SdFat) — los metadatos se escriben una vez, al inicio.
  2. Formato recuperable: registros de longitud fija, con marcador de inicio y checksum por registro. Así, aunque el archivo esté truncado, se puede leer hasta el último registro íntegro.

💡 exFAT sube el límite de tamaño de archivo, pero no arregla el problema de metadatos. La defensa es el formato, no el sistema de archivos.

BibliografĂ­a