Interfaz de tarjeta MMC / SD: ¿algún acceso a la información de nivelación de desgaste? (contadores, etc)

7

Supongo que no hay algo en la especificación de la tarjeta MMC / SD para recuperar cualquier información sobre los recuentos de borrado en una tarjeta MMC / SD, ¿verdad?

Mi objetivo es lograr que mi sistema incorporado evite escribir en metadatos como el último acceso o los tiempos modificados, asignar archivos de tamaño moderado con 0xFF como sea necesario y solo agregar registros dentro de eso.

Esto es para reducir el riesgo de pérdida de datos, ya que la energía se puede perder en cualquier momento.

Sin embargo, los algoritmos de nivelación de desgaste de las tarjetas MMC / SD son desconocidos y posiblemente se implementan muy mal. Necesito verificar que las tarjetas no intenten borrar bloques de datos si solo estoy escribiendo datos sobre 0xFFs. Por lo tanto, si hubiera casi cualquier tipo de recuento de borrado (total para el disco, por bloque, lo que sea) disponible para leer ... sería genial.

No estoy completamente seguro de dónde vive esta pregunta ... pero como se trata de cosas a nivel de protocolo de la tarjeta SD, pensé que tal vez aquí.

EDIT

Creo que voy a seguir adelante y complicar las cosas. Las pruebas de disco demostraron que al menos las tarjetas SD que tengo borrarán bloques incluso si los datos que escribe no se modifican con respecto al contenido del disco. Almacenaré hasta 128 KB de datos en NAND directamente controlable (que puedo controlar un poco mejor el comportamiento de escritura), luego escribiré fragmentos de 128 KB en un archivo alineado de 128 KB en la partición VFAT. Eso debería limitar la exposición tanto como sea posible ... pero ¡qué feo y complicado!

    
pregunta darron

1 respuesta

5

No sé si determinadas tarjetas SD exponen información de nivelación de desgaste, pero en su mayor parte sugeriría que su deseo de evitar el borrado de bloques que contienen FF es erróneo. Incluso si un bloque de disco virtual contiene solo FF, es casi seguro que contendrá otra información de direccionamiento y datos de corrección de errores que deberán reescribirse si se realiza algún cambio en el bloque, independientemente de su contenido anterior.

Creo que los fabricantes de tarjetas SD tienen la libertad de seleccionar sus propios algoritmos para decidir cuándo reescribir los bloques a los que no se ha accedido durante un tiempo y para garantizar la integridad de los datos en caso de un fallo de alimentación. En consecuencia, no conozco ningún método en particular para garantizar que una tarjeta SD no se dañe si falla la alimentación durante una escritura.

    
respondido por el supercat

Lea otras preguntas en las etiquetas