Errores de lectura y escritura de EEPROM en el programador · Problemas frecuentes y soluciones · Transceptores y cables ópticos · Documentación · CodingBox
CodingBox Documentación

Errores de lectura y escritura de EEPROM en el programador

Antes de poder diagnosticar o codificar un módulo hay que leerlo, y después, a menudo, escribirlo. Ambos pasos fallan de formas características. Esta página asocia cada fallo con su causa y con el ajuste o procedimiento que lo soluciona, desde que el módulo no se ve en absoluto hasta una escritura que «tiene éxito» y desaparece en silencio.

Módulo no detectado

ComprobaciónPor qué
Asiento y zócaloel módulo debe asentarse a fondo en el conector; use el adaptador de su factor de forma: un SFP en un zócalo QSFP no se verá
Tiempo de arranquelos módulos necesitan hasta ~2 s (SFP) o más (CMIS) tras la inserción antes de que el bus de dos hilos responda
Señal de módulo presenteMOD_ABS / ModPrsL debe activarse; un pin doblado o un módulo sin esa señal parece ausente
Estado de bajo consumo (CMIS)la identidad es legible en LowPwr, pero algunos hosts/programadores esperan Ready para el acceso completo
Velocidad del busempiece a 100 kHz o menos; algunos módulos responden NACK a 400 kHz
Módulo muertosin DDM, sin identidad a ninguna velocidad: confírmelo en una segunda placa antes de descartarlo

Las lecturas devuelven FFh, 00h o basura

SíntomaCausaSolución
Todo FFhNACK de I²C: no hay dispositivo en esa dirección, o la página no está presentecompruebe la dirección (identidad A0h frente a diagnóstico A2h en SFP; A0h único con paginación en QSFP/CMIS)
Todo 00hmódulo sin alimentación / mantenido en reset; o EEPROM realmente en blancocompruebe la alimentación al zócalo, la presencia del módulo; existen módulos en blanco (stock sin codificar)
Longitud correcta, contenido incorrectose está leyendo una página distinta de la previstaescriba el byte de selección de página (127) y vuelva a leer; en CMIS también la selección de banco (126)
Bytes corruptos / desplazadosbus demasiado rápido, cable largo, contención con un hostbaje a ≤ 100 kHz; use cables cortos; lea en el banco, no en un conmutador en producción
Las lecturas A2h fallan, A0h bienmódulo sin diagnóstico, o bloque de diagnóstico protegidocompruebe el byte 92 bit 6 de A0h (DDM implementado); algunos tipos protegidos contra escritura solo responden en A0h
Los valores cambian entre lecturasmonitores en vivo: es normal; o data not readyse espera que los bytes de DDM cambien; compruebe el bit de datos listos antes de confiar en una instantánea

La escritura falla por completo

WRITE FAIL, NACK en los datos, o el byte se vuelve a leer sin cambios:

CausaCómo reconocerloQué hacer
Se requiere contraseña (controlador con firmware)la escritura se rechaza hasta que se coloca el valor correcto en la dirección de la contraseña (SFP A2h 0x7B–0x7E, QSFP 123–126, CMIS 122–125)introduzca la contraseña del módulo en Memoria protegida y contraseñas; las contraseñas de fabricante conocidas se aplican desde la base de datos
Protección de escritura por hardwaresolo lectura independientemente de la contraseña, sobrevive a los ciclos de encendidoel pin WP debe ser accionado por la placa programadora; el software por sí solo no puede hacerlo; véase Tipos de protección de escritura
Temporizaciónfallos intermitentes, páginas escritas parcialmentereduzca la velocidad del reloj (a menudo se necesita ~1 kHz para escrituras fiables de EEPROM), respete el tiempo de ciclo de escritura (5–10 ms) entre bytes/páginas, añada retardos entre bloques
Región de solo lecturaciertos bytes nunca cambian (sumas de comprobación, umbrales en algunas piezas, área del fabricante)la EEPROM tiene una región protegida por diseño; escriba solo los campos que el módulo permite
Estado incorrectolos módulos CMIS pueden requerir LowPwr, o una ruta de datos desactivada, antes de aceptar escriturasponga primero el módulo en el estado requerido
Página no seleccionadaescribió el desplazamiento correcto en la página equivocadafije el byte 127 (y 126) antes de la escritura y verifique releyendo el byte de selección de página

La escritura «tiene éxito» pero no se mantiene

  • Revierte tras un ciclo de encendido — el módulo almacena las escrituras en memoria temporal y necesita el comando de guardado del fabricante; sin él vuelve la imagen antigua. Lo gestiona un script de programación (Tipo 4 de protección de escritura).
  • Revierte de inmediato — el microcontrolador refleja la EEPROM desde su propio almacén y sobrescribe sus bytes; requiere el algoritmo del fabricante (tipo 5).
  • Algunos bytes se mantienen, otros no — un mapa parcialmente protegido; escriba campo a campo y verifique cada uno.

El host rechaza el módulo tras una escritura correcta

CausaSolución
Sumas de comprobación obsoletas — CC_BASE (byte 63), CC_EXT (95), CC_DMI (A2h 95), QSFP 191/223recalcúlelas; CodingBox lo hace automáticamente al escribir (Mapa de memoria)
Identidad ahora inconsistente — por ejemplo, se cambió el fabricante pero los códigos de cumplimiento o la longitud de onda implican un hardware distintomantenga la identidad coherente con la óptica real (Velocidad y tasa, Incompatibilidades físicas)
Se escribió en el diseño de otro tipo de móduloun XFP escrito como SFP, o una confusión de página QSFP: restaure desde la copia de seguridad

Módulo muerto tras una escritura

Escribir basura sobre las constantes de calibración, los umbrales o el área específica del fabricante (donde algunos controladores guardan su configuración) puede inutilizar un módulo. Vía de recuperación: restaure la copia de seguridad que CodingBox tomó antes de la escritura desde la code database, y después escriba solo los campos previstos.

Reglas de oro

  1. Lea y guarde primero — toda escritura debe ir precedida de una lectura completa que quede en la base de datos.
  2. Identifique el tipo de protección antes del primer intento de escritura (Tipos de protección de escritura).
  3. Vaya despacio — el reloj y la temporización entre bytes resuelven la mayoría de los fallos «aleatorios».
  4. Escriba solo lo que pretende — campos, no páginas enteras, salvo al restaurar una imagen.
  5. Verifique releyendo tras un ciclo de encendido.

En CodingBox

CodingBox lee los módulos con la dirección y la paginación correctas según el factor de forma, muestra los bytes en bruto y decodificados en el EEPROM editor, recalcula las sumas de comprobación al escribir, guarda una copia de seguridad automáticamente, y admite la introducción de contraseñas y scripts de programación para módulos protegidos y con comando de guardado (Escritura de un módulo). Si se sospecha un fallo a nivel de placa, véase la solución de problemas del producto.

La mecánica del bus detrás de estos fallos — direcciones, selección de página, tiempo de ciclo de escritura, clock stretching: Interfaz de dos hilos.

Por qué un módulo responde como lo hace — memoria emulada por MCU, ventana de arranque, clock stretching, regiones protegidas: Controlador y firmware.


Si encuentra una inexactitud o un error en este material, seleccione el fragmento correspondiente y pulse Ctrl+Enter para .