Salud eMMC: PRE_EOL_INFO y DEVICE_LIFE_TIME
- 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_CSD | Byte | Qué describe |
|---|---|---|
| PRE_EOL_INFO | 267 | Estado de bloques reservados |
| DEVICE_LIFE_TIME_EST_TYP_A | 268 | Vida estimada consumida para Type A |
| DEVICE_LIFE_TIME_EST_TYP_B | 269 | Vida 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]:
| Valor | Vida estimada consumida |
|---|---|
0x00 | Indefinida |
0x01 | 0–10% |
0x02 | 10–20% |
| … | … |
0x0A | 90–100% |
0x0B | Máximo estimado superado |
Tres reglas evitan los errores más comunes:
- El porcentaje está consumido, no restante.
- Cada código normal es un intervalo de diez puntos, no una medición exacta.
0x0Bsignifica 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]:
| Valor | Estado |
|---|---|
0x00 | Indefinido |
0x01 | Normal |
0x02 | Aviso: 80% de bloques reservados consumido |
0x03 | Urgente |
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:
- Registre Type A, Type B y PRE_EOL_INFO en intervalos de servicio razonables.
- Registre escrituras del host, volumen de la aplicación y cambios de carga.
- Siga errores de E/S, eventos no corregibles, modo de solo lectura y fallos de arranque.
- Alerte ante PRE_EOL warning/urgent,
0x0B, saltos inesperados o errores crecientes. - Haga un respaldo antes de investigar una alerta.
- 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?
¿Qué significa PRE_EOL_INFO 0x02 en eMMC?
¿Puedo leer la salud eMMC con mmc-utils?
Referencias
Publicamos la capacidad utilizable medida y aceptamos verificación de lote de prueba — grado automotriz, directo de la fábrica de origen.