No puedo encontrar ninguna información confiable sobre esto. No tengo la especificación completa del hardware de la tarjeta SD / MMC.
¿Es verdad? ¿Mi aplicación de alto nivel no necesita preocuparse por la nivelación del desgaste cuando trabajo con estas tarjetas?
EDITAR
¿Podría alguien confirmar que la especificación SD garantiza la nivelación del desgaste ? Quiero estar seguro, porque parece que la mayoría de los vendedores lo hacen, pero la especificación no lo exige.
Respuestas:
Trabajo para una empresa que solía ser miembro de la asociación SD, estamos familiarizados con la especificación 2.0 (SDHC). La especificación de la tarjeta SD NO tiene entrada para nivelar el desgaste. Eso depende completamente del fabricante de SD para manejar eso si así lo eligen. Hemos visto que algunos probablemente lo hacen, mientras que otros no (tenga cuidado con las tarjetas SD super baratas). SDXC puede haber cambiado eso para incluir nivelación de desgaste, pero no estoy seguro de eso. Desafortunadamente, la única forma de demostrarlo es obtener las especificaciones oficiales. Lo puede encontrar en línea muy probablemente, pero la asociación SD realmente quiere que pague por ello.
Como nota al margen, tomar una tarjeta de 2GB y escribirla comenzando a terminar una y otra vez promedia aproximadamente 10 TB antes de que la tarjeta esté muerta y ya no se pueda escribir. Además, las tarjetas SD no le avisarán cuando los datos sean malos, es decir, no devolverán un error de E / S como lo hará un disco duro de PC. Esto podría no ser un problema para los diseños integrados, ya que 10 TB son MUCHOS datos, pero podrían ser un factor para alguien.
fuente
¡Es verdad! Las tarjetas MicroSD contienen un chip flash NAND unido a un microcontrolador (ARM) encapsulado en plástico negro. http://www.bunniestudios.com/blog/?p=898 explica.
Al final de la publicación de seguimiento http://www.bunniestudios.com/blog/?p=918 Bunnie postula que integrar el controlador probablemente cuesta menos que probar el flash antes de tiempo.
Citando el manual del producto de la tarjeta SD de SanDisk: "1.9 Nivelación de desgaste. La nivelación de desgaste es una parte intrínseca de la funcionalidad de agrupación de borrado de la tarjeta SD, utilizando memoria NAND". Puede leer todo en la hoja de datos de una tarjeta de marca SanDisk .
fuente
Sí, las tarjetas SD / MMC tienen controladores que desgastan la nivelación. Si no lo hicieran, podría destruir uno en cuestión de minutos con los patrones de escritura incorrectos.
Eso es realmente un problema para algunos proyectos integrados. No hay absolutamente ninguna manera (aparentemente) de saber qué sectores podrían desgastarse nivelados en cualquier momento, por lo que un ciclo de energía en el momento equivocado puede destruir datos en cualquier lugar de la tarjeta, sin importar dónde PIENSAS que estás escribiendo. (no preguntes cómo lo sé :))
Las tarjetas SD deben usarse con un sistema que garantice un apagado limpio del sistema (o al menos que las escrituras tengan permiso para completarse), o se producirá (eventualmente) una pérdida de datos.
EDITAR
El problema es que el proceso de nivelación del desgaste está completamente oculto. CUALQUIER sector en el disco podría moverse en cualquier momento (intercambiado con la página escrita), y si la energía fallara en medio de ese proceso, ese sector aleatorio podría corromperse.
Si bien hay formas razonablemente seguras de implementar este movimiento, no está en ninguna especificación, por lo que no puede confiar en que la tarjeta lo hará. Podrías probar una tarjeta, hacer que funcione, luego el fabricante podría cambiar la implementación sin cambiar el número de pieza y estás jodido.
De la prueba, el controlador de mis tarjetas SD NO hace esto de manera segura.
Puedo buscar una tarjeta SD de "alta confiabilidad" que vi anunciada específicamente para la tolerancia a fallas de energía ... pero luego tienes que confiar en el fabricante para hacerlo correctamente, y no lo hago. Realmente quiero control directo sobre los borrados de página. Todavía estoy tratando de resolver esto.
fuente
Cualquier tipo de tarjeta SD que use cualquier tipo de memoria flash NAND convencional tendrá que usar algún tipo de virtualización de sector, ya que ningún dispositivo flash NAND convencional puede soportar el borrado de sectores individuales de 512 bytes, y ningún dispositivo flash NAND convencional de tamaño significativo sería capaz de producir un rendimiento que estuviera dentro de un orden de magnitud de ser incluso marginalmente aceptable si cada intento de escribir un sector requiriera que el dispositivo copie todos los sectores en el bloque de borrado de ese sector (incluso en la RAM), luego borre el bloque y escriba Todos los sectores de vuelta. La mayoría de las técnicas de virtualización de sector son inherentemente algo niveladoras de desgaste. Esperaría que el mayor problema de variación entre los dispositivos de calidad y las imitaciones sea la medida en que un dispositivo intenta activamente igualar la nivelación entre bloques, versus simplemente usar la asignación de bloques pseudoaleatoria y esperar que arroje resultados aceptablemente cercanos a los uniformes. En la práctica, esperaría que incluso la asignación aleatoria / con la esperanza de la mejor sea adecuada en la mayoría de los casos.
fuente
Sandisk tiene un documento técnico que explica la lógica de nivelación del desgaste en sus tarjetas, y continúa dando estimaciones de la vida útil de la tarjeta en varios escenarios. Resumen ejecutivo: a menos que esté martillando la tarjeta sin parar, durará décadas.
fuente
Es interesante observar que, a pesar de esto, muchos dispositivos corrompen las tarjetas SD y microSD, especialmente las de alta densidad si la batería está baja o el teléfono se bloquea / se apaga / etc. Sospecho que el problema es una regulación inadecuada del suministro de voltaje, ya que esto es bien conocido en algunas tarjetas (tos Ad t / tos) para provocar el fenómeno de una tarjeta ilegible en ciertos lectores externos, pero funciona bien en la micro variedad suministrada por algunos tiendas de informática
Estoy en el proceso de recuperar una tarjeta en este momento con este fallo, por extraño que parezca, la mayoría de los datos son recuperables, pero algunos sectores no lo hacen aunque esto cambie en cada intento. ¿Podría ser la culpa la nivelación del desgaste? (Sí, probé varios lectores, ¡la misma falla!)
fuente
También tuvo algunas cartas de zombis "nucleares" exitosas, es decir, las que no completarán un formato o son de solo lectura. Solo funciona en un pequeño porcentaje, pero son mucho más sensibles que la mayoría de las pautas "oficiales" al respecto.
Una tarjeta de prueba así tratada duró cuatro meses completos antes de fallar nuevamente, si no hubiera sido por el dispositivo que se utilizó para suministrar voltaje ruidoso, la vida útil podría haber sido más larga.
fuente