El controlador y su firmware: DDM, APC, memoria, protección
Todo transceptor gestionado tiene un pequeño ordenador dentro. El microcontrolador (MCU) mide, regula, informa y — desde el punto de vista de quien programa, lo más importante — es la memoria que se lee y se escribe. Que un módulo tenga una EEPROM simple o una MCU que finge serlo decide cómo se puede codificar, por qué algunas escrituras desaparecen tras un ciclo de apagado y por qué existen las contraseñas. Esta página describe qué hace el controlador y cómo su diseño se manifiesta en el banco.
Qué hace la MCU
| Tarea | Detalles | Visible como |
|---|---|---|
| Medición | muestrea la temperatura (termistor o sensor integrado), Vcc, bias del láser, corriente del PD monitor (Tx) y fotocorriente del receptor (Rx) mediante un ADC de 10–12 bits varias veces por segundo; aplica la calibración de fábrica | valores de DDM — Parámetros |
| APC — control automático de potencia | compara la corriente del PD monitor con el objetivo de fábrica y ajusta el DAC de bias del driver | potencia de Tx constante, bias creciente — Tx bias y envejecimiento |
| Compensación de temperatura | tablas de consulta ajustan la corriente de modulación y, en PAM4, los ajustes del DSP en función de la temperatura | relación de extinción estable |
| Control de TEC | bucle PID que mantiene la temperatura del láser en los módulos enfriados; realimentación del bloqueador de longitud de onda en DWDM | monitores de temperatura del láser, corriente del TEC |
| Umbrales y banderas | compara cada monitor con los umbrales de alarma/advertencia, fija banderas enclavadas, activa IntL | Umbrales y alarmas |
| Pines de baja velocidad | lee TX_DISABLE, RS0/RS1, LPMode, ResetL; activa TX_FAULT, RX_LOS (o controla las señales de hardware) | comportamiento de los pines |
| Esclavo de dos hilos | responde en A0h/A2h (SFP) o en A0h con páginas/bancos (QSFP, CMIS) | el mapa de memoria — Interfaz de dos hilos |
| Máquinas de estado | estados de módulo y de ruta de datos de CMIS; selección de aplicación; silenciado | CMIS |
| Protección y funciones de vendedor | contraseñas, regiones protegidas contra escritura, comandos de guardado, desbloqueo de vendedor, firmas de autenticación | Tipos de protección de escritura |
| CDB / actualización de firmware | en los módulos CMIS, recibe y graba nuevas imágenes de firmware | bytes de versión de firmware |
Componentes típicos: MCU de 8 bits (clase 8051) con unos pocos kB de flash en los SFP/SFP+ de bajo coste; clase Cortex-M de 32 bits en los módulos de 100G+ y CMIS; algunos fabricantes usan un ASIC controlador de transceptor dedicado que integra los ADC, los DAC y el esclavo de dos hilos.
Dos formas de construir la memoria
| Diseño | Cómo se almacena el mapa | Consecuencias para la programación |
|---|---|---|
| EEPROM discreta (por ejemplo, clase AT24C02) para A0h, MCU para A2h | la identidad de A0h es una EEPROM serie real con la que el host y el programador hablan directamente; la MCU gestiona solo el diagnóstico | las escrituras en A0h son escrituras EEPROM normales — respetan t_WR y el tamaño de página; un pin WP de hardware puede bloquearlas (Tipos de protección de escritura 1–3) |
| Mapa emulado por MCU | la MCU responde a toda solicitud de dos hilos desde RAM y refleja los cambios en su flash/EEPROM interna — o no | las escrituras van a donde decide el firmware: aceptadas, ignoradas, bloqueadas por contraseña, almacenadas solo tras un comando de guardado, o sobrescritas desde la copia propia del firmware en el siguiente arranque (tipos 4–5) |
| Híbrido | EEPROM para el bloque de vendedor, MCU para páginas y contraseñas | reglas mixtas según el rango de bytes |
Un mapa emulado explica la mayoría de los misterios del banco: FFh en una página que el firmware no implementa, escrituras que "tienen éxito" y luego revierten, bytes de solo lectura en un rango y libres en el siguiente, estiramiento de reloj mientras la MCU está ocupada muestreando (Errores de lectura y escritura de EEPROM).
Arranque y la ventana t_init
Al encender, la MCU carga la calibración y la identidad desde su almacenamiento no volátil, arranca el ADC, ejecuta el APC hasta su objetivo y solo entonces habilita el esclavo de dos hilos y limpia el indicador data-not-ready. Ese es el intervalo de 300 ms (SFP) a 2 s (QSFP/CMIS) que las especificaciones permiten antes de que un host pueda esperar respuestas, y la razón por la que una lectura inmediatamente después de la inserción devuelve basura (Qué hace el host).
La calibración vive aquí
Los conteos del ADC en bruto no significan nada sin las constantes que la fábrica midió en una estación de prueba: corriente del PD monitor frente a la potencia de lanzamiento real, fotocorriente del receptor frente a la potencia de entrada a la longitud de onda del módulo, curva del termistor, escala del DAC de bias. En los módulos calibrados internamente el firmware las aplica y reporta unidades físicas; en los módulos calibrados externamente las constantes se escriben en A2h 56–91 para que el host las aplique (Calibración). Sobrescribir el área de vendedor donde algunos firmwares guardan estas constantes produce un DDM absurdo o un bucle de APC muerto — la forma clásica en la que una escritura descuidada "bloquea" un módulo (Fabricación y pruebas).
Cómo se implementa la protección
| Mecanismo | Implementación | Vista desde el banco |
|---|---|---|
| Contraseña | el firmware compara los 4 bytes escritos en el área de contraseña (SFP A2h 123–126, QSFP 123–126, CMIS 122–125) con un valor almacenado; desbloquea las escrituras para la sesión | WRITE FAIL hasta que se introduce el valor correcto — Contraseñas |
| Regiones protegidas contra escritura | el firmware ignora las escrituras en rangos que considera de solo lectura (sumas de comprobación, umbrales, calibración, área de vendedor) | los bytes se leen sin cambios, sin error |
| Pin WP de hardware en una EEPROM discreta | el pin está fijado alto dentro del módulo o controlado por la MCU | requiere que la placa programadora active el pin |
| Comando de guardado | las escrituras caen en RAM; una secuencia específica del fabricante las confirma en flash | revierte tras un ciclo de apagado salvo que se envíe la secuencia |
| Espejo de firmware | al arrancar, el firmware reescribe el mapa desde su propia imagen | los cambios desaparecen en cada ciclo de apagado — solo la herramienta del fabricante puede cambiar la imagen |
| Autenticación | el firmware calcula una firma (hash del número de serie, datos de vendedor y un secreto) en los bytes de vendedor; el host la verifica | las ediciones de identidad pasan las sumas de comprobación pero el host las rechaza igualmente — Bloqueo de fabricante |
Cómo se reconoce y se programa cada tipo: Tipos de protección de escritura, Recodificación de EEPROM.
Actualizaciones de firmware
Los módulos CMIS pueden recibir firmware por el bus de dos hilos mediante comandos CDB (iniciar descarga, escribir bloques, completar, ejecutar, confirmar), a menudo con dos bancos de imagen para que una actualización fallida tenga respaldo. Los módulos SFF-8472/8636 no tienen mecanismo estándar; los fabricantes usan secuencias propias a través de bytes de vendedor. Las correcciones de firmware son la forma en que los fabricantes resuelven los problemas de interoperabilidad de CMIS (Problemas de CMIS), y los bytes de versión de firmware (página baja de CMIS 39–40, página 01h 128–129) merecen registrarse junto con la identidad.
Modos de fallo del controlador
| Síntoma | Causa probable |
|---|---|
| Módulo invisible en el bus, óptica por lo demás correcta | la MCU no arranca: firmware corrupto, caída de tensión, cristal dañado |
| Valores de DDM congelados o absurdos | corrupción del ADC o de la calibración; firmware bloqueado |
| Potencia de Tx a la deriva aunque el APC debería mantenerla | fallo del PD monitor o del ADC, APC deshabilitado |
| NACK aleatorios, lecturas lentas | MCU sobrecargada (muestreando), límites de estiramiento de reloj superados por un programador rápido |
| Funciona, pero cada escritura revierte | espejo de firmware por diseño — no es un fallo |
| Módulo muerto tras una escritura | área de configuración de firmware o de calibración sobrescrita |
En CodingBox
CodingBox trata el módulo tal como lo presenta el firmware: detecta el tipo de mapa, aplica contraseñas y scripts de programación conocidos para los diseños de comando de guardado y de espejo, recalcula las sumas de comprobación, mantiene una copia de seguridad antes de cada escritura y permite restaurarla desde la base de datos de códigos si un controlador reacciona mal. El editor de EEPROM marca los rangos que la especificación define como de solo lectura o específicos del vendedor, para que se sepa cuándo se está escribiendo en territorio privado del firmware.