19 votos

¿Cómo puedo proteger la tarjeta SD contra cortes de corriente inesperados?

Estoy trabajando en un dispositivo que utiliza la biblioteca MDDFS de Microchip para almacenar datos en una tarjeta SD. El registrador registrará datos a una velocidad máxima de 1 entrada (56bytes) cada minuto. El problema es que el dispositivo puede perder energía en cualquier momento, potencialmente en medio de una secuencia de escritura. Me pregunto cuál es la mejor manera de proteger mis datos contra la corrupción. He descubierto que si el archivo está abierto cuando se corta la corriente, todos los datos que se escribieron en el archivo después del último cierre se pierden. No sé si ocurre lo mismo si se pierde la alimentación en medio de la secuencia de escritura.

Dado que el procedimiento de escritura no se produce con mucha frecuencia, podría abrir el archivo, escribir los datos y, a continuación, cerrar el archivo cada vez que se registren datos. ¿Este enfoque dañaría la tarjeta sd con el tiempo?

Otro enfoque podría ser mantener el archivo abierto, pero después de cada 10 o 50 escrituras podría cerrar el archivo y luego volver a abrirlo.

También podría almacenar los datos en la memoria, y luego vaciarlos de vez en cuando, tal vez después de un kbyte más o menos.

La última idea que tuve fue, en mi circuito, podría añadir un condensador grande que proporcionaría energía a mi tarjeta pic/sd el tiempo suficiente después de desconectar la alimentación para cerrar rápidamente el archivo. El problema con este enfoque es que el tiempo que tarda en cerrar el archivo y/o guardar los datos es muy inconsistente. Según tengo entendido, este tiempo puede ser muy dependiente del lugar actual en una página flash en la que se encuentre el archivo.

En cualquier caso, ¿qué me sugieren?

1voto

Zephyrus Puntos 175

Si sólo quieres almacenar datos, no necesitas un sistema de archivos. la operación de escritura se hará directamente sobre el SPI seleccionando la dirección del bloque. Haciendo esto minimizas el tiempo de escritura y el riesgo de corrupción de datos.

Incluso en caso de pérdida de alimentación y no tener suerte, sólo perderás una entrada (lo que puede ser aceptable en algunos sistemas).

0voto

hano hano Puntos 13

Además de las otras respuestas: Es posible que las tarjetas más nuevas soporten el vaciado de la caché de la tarjeta SD y/o la señalización a la tarjeta SD de que el host desea apagarse. Esto se describe en la Parte 1 de la Especificación Simplificada de la Capa Física. Especificación de la tarjeta SD (V8.00):

Capítulo "4.17 Caché"/"5.8.2 Función de mejora del rendimiento" y "5.8.1. Función de mejora del rendimiento". Función de gestión de energía" ("Notificación de apagado").

Sin embargo, que yo sepa, estas funciones no son compatibles con el modo SPI, que es probablemente el que utilizas :(

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X