CONOCIMIENTO — Kalstor CONOCIMIENTO K KALSTOR
InicioRecursosSalud eMMC: PRE_EOL_INFO y DEVICE_LIFE_TIME
Conocimiento · Salud de flash gestionada

Salud eMMC: PRE_EOL_INFO y DEVICE_LIFE_TIME

Por Kalstor 8 min de lectura
Puntos clave
  • DEVICE_LIFE_TIME_EST_TYP_A y TYPE_B informan vida estimada consumida en bandas del 10%. No son un porcentaje restante preciso ni una cuenta atrás en días.
  • PRE_EOL_INFO describe el estado de los bloques reservados que sustituyen a los retirados. Es independiente de las estimaciones de vida y no usa la misma escala.
  • El valor 0x00 significa indefinido o no disponible, no desgaste cero. Un valor de vida 0x0B indica que se superó el máximo estimado, no un fallo instantáneo.
  • Siga la tendencia de los dos campos de vida y PRE_EOL_INFO junto con la carga, escrituras, errores y especificación exacta; planifique el servicio antes de un riesgo inaceptable.

Un sistema integrado informa un valor eMMC 0x05. El panel lo convierte en “50% de salud” y compras programa el reemplazo a partir de esa cifra. La conversión parece clara, pero cambia el significado del registro.

eMMC expone estimaciones aproximadas en el Extended CSD (EXT_CSD). Los campos útiles responden dos preguntas distintas: cuánta vida estimada se consumió y qué presión existe sobre la reserva de bloques.

Los tres campos que hay que leer

Campo EXT_CSDByteQué describe
PRE_EOL_INFO267Estado de bloques reservados
DEVICE_LIFE_TIME_EST_TYP_A268Vida estimada consumida para Type A
DEVICE_LIFE_TIME_EST_TYP_B269Vida estimada consumida para Type B

La disponibilidad depende del dispositivo y de la versión eMMC que admita. Las herramientas del fabricante pueden añadir información específica; Micron, por ejemplo, publica recursos de salud separados para ciertos productos eMMC industriales y de automoción [4]. Vincule esos datos al número de parte y firmware exactos.

No suponga que Type A siempre corresponde a una zona NAND determinada y Type B a otra en todos los productos. Representan tipos o áreas definidos por la implementación. Lea ambos y use el mapeo del fabricante; no los promedie para inventar un único porcentaje.

DEVICE_LIFE_TIME informa vida consumida por bandas

KIOXIA documenta la codificación eMMC de esta forma [1]:

ValorVida estimada consumida
0x00Indefinida
0x010–10%
0x0210–20%
0x0A90–100%
0x0BMáximo estimado superado

Tres reglas evitan los errores más comunes:

  1. El porcentaje está consumido, no restante.
  2. Cada código normal es un intervalo de diez puntos, no una medición exacta.
  3. 0x0B significa que la estimación de resistencia superó su máximo; no predice el instante del fallo.

Por ejemplo, 0x05 sitúa la estimación entre 40 y 50% consumido. Mostrar “50% de salud restante” elimina el intervalo y puede invertir o exagerar la información.

PRE_EOL_INFO mide una reserva distinta

La flash gestionada retira bloques que ya no puede usar de forma fiable y los sustituye por bloques reservados. PRE_EOL_INFO indica el estado de esa reserva. La tabla eMMC de KIOXIA muestra [2]:

ValorEstado
0x00Indefinido
0x01Normal
0x02Aviso: 80% de bloques reservados consumido
0x03Urgente

No es una segunda versión de DEVICE_LIFE_TIME. Una carga puede consumir ciclos de borrado y bloques de sustitución a ritmos diferentes. Mantenga ambas señales visibles.

Además, 0x00 significa que no existe un valor definido en esa lectura. No debe mostrarse como “0% desgastado” ni “100% saludable”.

Para entender cómo el controlador retira y sustituye bloques, consulte bloques defectuosos NAND y ECC.

Leer EXT_CSD sin modificar el dispositivo

En un Linux compatible, mmc-utils puede mostrar y decodificar EXT_CSD [3]. Una forma de solo lectura habitual es:

mmc extcsd read /dev/mmcblkX

Sustituya X solo después de verificar el destino exacto. Guarde la salida completa, cruda y decodificada, con fecha, número de parte, firmware y tiempo de uso.

Mantenga la tarea en solo lectura. mmc-utils también incorpora funciones de particionado, saneamiento y protección contra escritura que pueden ser irreversibles [3]. No copie comandos de escritura de un script genérico a un equipo de producción.

Convertir lecturas en una decisión de servicio

Una lectura ofrece una banda; una serie muestra dirección. Para una flota:

  1. Registre Type A, Type B y PRE_EOL_INFO en intervalos de servicio razonables.
  2. Registre escrituras del host, volumen de la aplicación y cambios de carga.
  3. Siga errores de E/S, eventos no corregibles, modo de solo lectura y fallos de arranque.
  4. Alerte ante PRE_EOL warning/urgent, 0x0B, saltos inesperados o errores crecientes.
  5. Haga un respaldo antes de investigar una alerta.
  6. Defina el reemplazo según el riesgo del negocio, no solo el último código posible.

Consultar cada minuto aporta poco porque las bandas son amplias. Es mejor un intervalo ligado a un volumen de escritura significativo. Los sistemas críticos deben reemplazar antes y conservar redundancia; los de menor impacto pueden aceptar más consumo con copias verificadas.

Para elegir la arquitectura, compare las diferencias de gestión e interfaz entre eMMC, UFS y SD para almacenamiento integrado.

Conclusión

La salud eMMC no es un porcentaje preciso. DEVICE_LIFE_TIME Type A y Type B son bandas de vida estimada consumida; PRE_EOL_INFO informa la presión sobre los bloques reservados. Conserve los valores crudos, siga los tres junto con la carga y los errores, y aplique la documentación exacta del fabricante.

Preguntas frecuentes

¿DEVICE_LIFE_TIME 0x05 significa que queda 50% de vida?
No. 0x05 representa un 40–50% estimado de vida consumida para el tipo correspondiente. Es una banda, no un valor exacto, y no predice directamente el tiempo restante. Lea Type A y Type B por separado y aplique la documentación del fabricante.
¿Qué significa PRE_EOL_INFO 0x02 en eMMC?
En el esquema documentado, 0x02 avisa que se ha consumido el 80% de los bloques reservados para sustitución. No equivale a un 80% de vida NAND consumida. Haga respaldo, revise errores y tendencia, e inicie el plan de servicio según la consecuencia de fallo.
¿Puedo leer la salud eMMC con mmc-utils?
En un Linux compatible, mmc-utils puede leer y decodificar EXT_CSD con “mmc extcsd read” sobre el dispositivo mmc correcto. Identifique el destino con cuidado y mantenga la operación en solo lectura: la utilidad también contiene comandos que realizan cambios irreversibles.
¿Abasteciendo por volumen?

Publicamos la capacidad utilizable medida y aceptamos verificación de lote de prueba — grado automotriz, directo de la fábrica de origen.