CodingBox Documentação

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

TarefaDetalhesVisível como
Mediçãoamostra 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ábricavalores de DDM — Parâmetros
APC — controle automático de potênciacompara a corrente do PD de monitoramento com o alvo de fábrica e ajusta o DAC de bias do driverpotência de Tx constante, bias crescente — Bias de Tx e envelhecimento
Compensação de temperaturatabelas de consulta ajustam a corrente de modulação e, em PAM4, os ajustes de DSP ao longo da temperaturataxa de extinção estável
Controle de TECmalha PID mantendo a temperatura do laser em módulos refrigerados; realimentação do travador de comprimento de onda em DWDMmonitores de temperatura do laser, corrente do TEC
Limiares e flagscompara cada monitor com os limiares de alarme/aviso, define flags travadas, aciona o IntLLimiares e alarmes
Pinos de baixa velocidadelê TX_DISABLE, RS0/RS1, LPMode, ResetL; aciona TX_FAULT, RX_LOS (ou controla os sinais de hardware)comportamento dos pinos
Escravo de dois fiosresponde em A0h/A2h (SFP) ou A0h com páginas/bancos (QSFP, CMIS)o mapa de memória — Interface de dois fios
Máquinas de estadoestados de módulo e de caminho de dados do CMIS; seleção de aplicação; silenciamentoCMIS
Proteção e funções do fabricantesenhas, regiões protegidas contra gravação, comandos de salvamento, desbloqueio do fabricante, assinaturas de autenticaçãoTipos de proteção contra gravação
CDB / atualização de firmwareem módulos CMIS, recebe e grava novas imagens de firmwarebytes 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

ProjetoComo o mapa é armazenadoConsequências para a programação
EEPROM discreta (ex.: classe AT24C02) para A0h, MCU para A2ha identidade em A0h é uma EEPROM serial real com a qual o host e o programador conversam diretamente; a MCU cuida apenas do diagnósticoas 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 MCUa 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ãoas 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íbridoEEPROM para o bloco do fabricante, MCU para páginas e senhasregras 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

MecanismoImplementaçãoVista da bancada
Senhao 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ãoWRITE FAIL até que o valor correto seja inserido — Senhas
Regiões protegidas contra gravaçãoo 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 discretao pino é amarrado em nível alto dentro do módulo ou controlado pela MCUrequer que a placa programadora o controle
Comando de salvamentoas gravações ficam na RAM; uma sequência específica do fabricante as grava na flashreverte após um ciclo de energia, a menos que a sequência seja enviada
Espelho de firmwareno boot, o firmware reescreve o mapa a partir de sua própria imagemas mudanças somem a cada ciclo de energia — só a ferramenta do fabricante pode alterar a imagem
Autenticaçãoo firmware calcula uma assinatura (hash do número de série, dados do fabricante e um segredo) nos bytes do fabricante; o host verificaediçõ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

SintomaCausa provável
Módulo invisível no barramento, óptica normalMCU não inicializa: firmware corrompido, brown-out, cristal danificado
Valores de DDM congelados ou absurdoscorrupção do ADC ou da calibração; travamento do firmware
Potência de Tx derivando, embora o APC devesse mantê-lafalha do PD de monitoramento ou do ADC, APC desativado
NACKs aleatórios, leituras lentasMCU sobrecarregada (amostragem), limites de clock stretch excedidos por um programador rápido
Funciona, mas toda gravação reverteespelho 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.


Se você encontrar uma imprecisão ou um erro neste artigo, selecione o trecho correspondente e pressione Ctrl+Enter para .