O controlador e seu firmware: DDM, APC, memória, proteção
Todo transceptor gerenciado tem um pequeno computador dentro. O microcontrolador (MCU) mede, regula, reporta e — o mais importante do ponto de vista do programador — é a memória que você lê e grava. Se um módulo tem uma EEPROM simples ou uma MCU fingindo ser uma decide como ele pode ser programado, por que algumas gravações somem depois de um ciclo de energia e por que senhas existem, afinal. Esta página descreve o que o controlador faz e como seu projeto se manifesta na bancada.
O que a MCU faz
| Tarefa | Detalhes | Visível como |
|---|---|---|
| Medição | amostra temperatura (termistor ou sensor no chip), Vcc, bias do laser, corrente do PD de monitoramento (Tx) e fotocorrente do receptor (Rx) por meio de um ADC de 10–12 bits várias vezes por segundo; aplica a calibração de fábrica | valores de DDM — Parâmetros |
| APC — controle automático de potência | compara a corrente do PD de monitoramento com o alvo de fábrica e ajusta o DAC de bias do driver | potência de Tx constante, bias crescente — Bias de Tx e envelhecimento |
| Compensação de temperatura | tabelas de consulta ajustam a corrente de modulação e, em PAM4, os ajustes de DSP ao longo da temperatura | taxa de extinção estável |
| Controle de TEC | malha PID mantendo a temperatura do laser em módulos refrigerados; realimentação do travador de comprimento de onda em DWDM | monitores de temperatura do laser, corrente do TEC |
| Limiares e flags | compara cada monitor com os limiares de alarme/aviso, define flags travadas, aciona o IntL | Limiares e alarmes |
| Pinos de baixa velocidade | lê TX_DISABLE, RS0/RS1, LPMode, ResetL; aciona TX_FAULT, RX_LOS (ou controla os sinais de hardware) | comportamento dos pinos |
| Escravo de dois fios | responde em A0h/A2h (SFP) ou A0h com páginas/bancos (QSFP, CMIS) | o mapa de memória — Interface de dois fios |
| Máquinas de estado | estados de módulo e de caminho de dados do CMIS; seleção de aplicação; silenciamento | CMIS |
| Proteção e funções do fabricante | senhas, regiões protegidas contra gravação, comandos de salvamento, desbloqueio do fabricante, assinaturas de autenticação | Tipos de proteção contra gravação |
| CDB / atualização de firmware | em módulos CMIS, recebe e grava novas imagens de firmware | bytes de versão do firmware |
Peças típicas: MCUs de 8 bits (classe 8051) com alguns kB de flash em SFP/SFP+ de baixo custo; classe Cortex-M de 32 bits em módulos 100G+ e CMIS; alguns fabricantes usam um ASIC controlador de transceptor dedicado que integra ADCs, DACs e o escravo de dois fios.
Duas formas de construir a memória
| Projeto | Como o mapa é armazenado | Consequências para a programação |
|---|---|---|
| EEPROM discreta (ex.: classe AT24C02) para A0h, MCU para A2h | a identidade em A0h é uma EEPROM serial real com a qual o host e o programador conversam diretamente; a MCU cuida apenas do diagnóstico | as gravações em A0h são gravações de EEPROM comuns — respeite t_WR e o tamanho de página; um pino WP de hardware pode bloqueá-las (Tipos de proteção contra gravação 1–3) |
| Mapa emulado pela MCU | a MCU responde a cada requisição de dois fios a partir da RAM e espelha as mudanças em sua flash/EEPROM interna — ou não | as gravações vão para onde o firmware decidir: aceitas, ignoradas, bloqueadas por senha, armazenadas somente após um comando de salvamento, ou sobrescritas pela própria cópia do firmware no próximo boot (tipos 4–5) |
| Híbrido | EEPROM para o bloco do fabricante, MCU para páginas e senhas | regras mistas por faixa de bytes |
Um mapa emulado explica a maioria dos mistérios de bancada: FFh vindo de uma página que o firmware não implementa, gravações que “dão certo” e depois revertem, bytes que são somente leitura em uma faixa e livres na seguinte, clock stretching enquanto a MCU está ocupada amostrando (Erros de leitura e gravação de EEPROM).
Boot e a janela t_init
Ao ligar, a MCU carrega a calibração e a identidade de sua memória não volátil, inicia o ADC, executa o APC até seu alvo e só então habilita o escravo de dois fios e limpa o data-not-ready. Esse é o intervalo de 300 ms (SFP) a 2 s (QSFP/CMIS) que as especificações permitem antes que um host possa esperar respostas, e o motivo pelo qual uma leitura imediatamente após a inserção retorna lixo (O que o host faz).
A calibração mora aqui
As contagens brutas do ADC não significam nada sem as constantes que a fábrica mediu em uma estação de teste: corrente do PD de monitoramento vs. potência de lançamento real, fotocorrente do receptor vs. potência de entrada no comprimento de onda do módulo, curva do termistor, escala do DAC de bias. Em módulos calibrados internamente, o firmware as aplica e reporta em unidades físicas; em módulos calibrados externamente, as constantes são gravadas em A2h 56–91 para o host aplicar (Calibração). Sobrescrever a área do fabricante onde alguns firmwares guardam essas constantes produz um DDM absurdo ou uma malha de APC morta — a forma clássica pela qual uma gravação descuidada transforma um módulo em um “tijolo” (Fabricação e testes).
Como a proteção é implementada
| Mecanismo | Implementação | Vista da bancada |
|---|---|---|
| Senha | o firmware compara os 4 bytes gravados na área de senha (SFP A2h 123–126, QSFP 123–126, CMIS 122–125) com um valor armazenado; desbloqueia gravações para a sessão | WRITE FAIL até que o valor correto seja inserido — Senhas |
| Regiões protegidas contra gravação | o firmware ignora gravações em faixas que considera somente leitura (somas de verificação, limiares, calibração, área do fabricante) | os bytes lidos de volta ficam inalterados, sem erro |
| Pino WP de hardware em uma EEPROM discreta | o pino é amarrado em nível alto dentro do módulo ou controlado pela MCU | requer que a placa programadora o controle |
| Comando de salvamento | as gravações ficam na RAM; uma sequência específica do fabricante as grava na flash | reverte após um ciclo de energia, a menos que a sequência seja enviada |
| Espelho de firmware | no boot, o firmware reescreve o mapa a partir de sua própria imagem | as mudanças somem a cada ciclo de energia — só a ferramenta do fabricante pode alterar a imagem |
| Autenticação | o firmware calcula uma assinatura (hash do número de série, dados do fabricante e um segredo) nos bytes do fabricante; o host verifica | edições de identidade passam nas somas de verificação, mas o host ainda rejeita — Bloqueio do fabricante |
Como cada tipo é reconhecido e programado: Tipos de proteção contra gravação, Reprogramação de EEPROM.
Atualizações de firmware
Módulos CMIS podem receber firmware pelo barramento de dois fios por meio de comandos CDB (iniciar download, gravar blocos, concluir, executar, confirmar), muitas vezes com dois bancos de imagem para que uma atualização malsucedida tenha um fallback. Módulos SFF-8472/8636 não têm mecanismo padrão; os fabricantes usam sequências proprietárias por meio de bytes do fabricante. Correções de firmware são como os fabricantes resolvem problemas de interoperabilidade do CMIS (Problemas de CMIS), e os bytes de versão de firmware (página inferior do CMIS 39–40, página 01h 128–129) valem a pena registrar junto com a identidade.
Modos de falha do controlador
| Sintoma | Causa provável |
|---|---|
| Módulo invisível no barramento, óptica normal | MCU não inicializa: firmware corrompido, brown-out, cristal danificado |
| Valores de DDM congelados ou absurdos | corrupção do ADC ou da calibração; travamento do firmware |
| Potência de Tx derivando, embora o APC devesse mantê-la | falha do PD de monitoramento ou do ADC, APC desativado |
| NACKs aleatórios, leituras lentas | MCU sobrecarregada (amostragem), limites de clock stretch excedidos por um programador rápido |
| Funciona, mas toda gravação reverte | espelho de firmware por projeto — não é uma falha |
| Módulo morto após uma gravação | área de configuração ou calibração do firmware sobrescrita |
No CodingBox
O CodingBox trata o módulo como o firmware o apresenta: detecta o tipo de mapa, aplica senhas conhecidas e scripts de programação para projetos com comando de salvamento e espelhados, recalcula as somas de verificação, mantém um backup antes de cada gravação e permite restaurá-lo a partir do code database se um controlador reagir mal. O EEPROM editor marca as faixas que a especificação define como somente leitura ou específicas do fabricante, para que você saiba quando está gravando no território privado do firmware.