Erros de leitura e gravação de EEPROM no programador
Antes de um módulo poder ser diagnosticado ou codificado, ele precisa ser lido — e depois, muitas vezes, gravado. As duas etapas falham de formas características. Esta página mapeia cada falha para sua causa e para a configuração ou procedimento que a corrige, desde o módulo não ser visto de forma alguma até uma gravação que “tem sucesso” e depois desaparece silenciosamente.
Módulo não detectado
| Verificação | Por quê |
|---|---|
| Encaixe e berço | o módulo precisa encostar no fundo do conector; use o adaptador para o seu fator de forma — um SFP em um berço QSFP não será visto |
| Tempo de energização | os módulos precisam de até ~2 s (SFP) ou mais (CMIS) após a inserção antes que o barramento de dois fios responda |
| Sinal de módulo presente | MOD_ABS / ModPrsL precisa estar ativo; um pino torto ou um módulo sem o sinal parece ausente |
| Estado de baixa potência (CMIS) | a identidade é legível em LowPwr, mas alguns hosts/programadores esperam Ready para acesso completo |
| Velocidade do barramento | comece em 100 kHz ou menos; alguns módulos dão NACK a 400 kHz |
| Módulo morto | sem DDM, sem identidade em nenhuma velocidade — confirme em uma segunda placa antes de condená-lo |
Leituras retornam FFh, 00h ou lixo
| Sintoma | Causa | Correção |
|---|---|---|
| Tudo FFh | NACK de I²C — nenhum dispositivo naquele endereço, ou página ausente | verifique o endereço (identidade A0h vs. diagnóstico A2h no SFP; A0h único com paginação no QSFP/CMIS) |
| Tudo 00h | módulo sem energia / mantido em reset; ou EEPROM genuinamente em branco | verifique a energia do berço, presença do módulo; módulos em branco existem (estoque não codificado) |
| Comprimento certo, conteúdo errado | lendo uma página diferente da pretendida | grave o byte de seleção de página (127) e releia; no CMIS, também a seleção de banco (126) |
| Bytes embaralhados / deslocados | barramento rápido demais, cabo longo, contenção com um host | reduza para ≤ 100 kHz; use fios curtos; leia na bancada, não em um switch ativo |
| Leituras de A2h falham, A0h ok | módulo sem diagnóstico, ou bloco de diagnóstico protegido | verifique o A0h byte 92 bit 6 (DDM implementado); alguns tipos protegidos contra gravação respondem apenas A0h |
| Valores mudam entre leituras | monitores ao vivo — normal; ou data not ready | os bytes de DDM devem mudar; verifique o bit de dado pronto antes de confiar em um instantâneo |
A gravação falha completamente
WRITE FAIL, NACK nos dados, ou o byte é lido de volta sem alteração:
| Causa | Como reconhecer | O que fazer |
|---|---|---|
| Senha exigida (controlador de firmware) | a gravação é recusada até que o valor correto seja colocado no endereço de senha (SFP A2h 0x7B–0x7E, QSFP 123–126, CMIS 122–125) | digite a senha do módulo em Memória protegida contra gravação e senhas; senhas de fabricante conhecidas são aplicadas a partir do banco de dados |
| Proteção de gravação por hardware | somente leitura independentemente da senha, sobrevive a ciclos de energia | o pino WP precisa ser acionado pela placa do programador — o software sozinho não consegue; veja Tipos de proteção contra gravação |
| Temporização | falhas intermitentes, páginas gravadas parcialmente | reduza o clock (~1 kHz costuma ser necessário para gravações confiáveis de EEPROM), respeite o tempo de ciclo de gravação (5–10 ms) entre bytes/páginas, adicione atrasos entre blocos |
| Região somente leitura | bytes específicos nunca mudam (somas de verificação, limiares em algumas peças, área do fabricante) | a EEPROM tem uma região protegida por projeto; grave apenas os campos que o módulo permite |
| Estado errado | módulos CMIS podem exigir LowPwr, ou um data path desativado, antes de aceitar gravações | coloque o módulo no estado exigido primeiro |
| Página não selecionada | você gravou o offset certo na página errada | defina o byte 127 (e o 126) antes da gravação e verifique relendo o byte de seleção de página |
A gravação “tem sucesso” mas não permanece
- Reverte após um ciclo de energia — o módulo armazena as gravações em memória temporária e precisa do comando de salvamento do fabricante; sem ele, a imagem antiga retorna. Tratado por um script de programação (Tipo de proteção contra gravação 4).
- Reverte imediatamente — o microcontrolador espelha a EEPROM a partir de seu próprio armazenamento e sobrescreve seus bytes; exige o algoritmo do fabricante (tipo 5).
- Alguns bytes permanecem, outros não — um mapa parcialmente protegido; grave campo por campo e verifique cada um.
O host rejeita o módulo após uma gravação bem-sucedida
| Causa | Correção |
|---|---|
| Somas de verificação desatualizadas — CC_BASE (byte 63), CC_EXT (95), CC_DMI (A2h 95), QSFP 191/223 | recalcule; o CodingBox faz isso automaticamente na gravação (Mapa de memória) |
| Identidade agora inconsistente — por exemplo, o fabricante mudou mas os códigos de conformidade ou o comprimento de onda sugerem hardware diferente | mantenha a identidade consistente com a óptica real (Velocidade e taxa, Incompatibilidades físicas) |
| Gravou no layout de um tipo de módulo errado | um XFP gravado como SFP, ou uma confusão de página QSFP — restaure a partir do backup |
Módulo morto após uma gravação
Gravar lixo sobre constantes de calibração, limiares ou a área específica do fabricante (onde alguns controladores mantêm sua configuração) pode brickar um módulo. Caminho de recuperação: restaure o backup que o CodingBox fez antes da gravação a partir do code database, depois grave apenas os campos pretendidos.
Regras de ouro
- Leia e salve primeiro — toda gravação deve ser precedida por uma leitura completa que vá para o banco de dados.
- Identifique o tipo de proteção antes da primeira tentativa de gravação (Tipos de proteção contra gravação).
- Vá devagar — o clock e a temporização entre bytes resolvem a maioria das falhas “aleatórias”.
- Grave apenas o que pretende — campos, não páginas inteiras, a menos que esteja restaurando uma imagem.
- Verifique relendo após um ciclo de energia.
No CodingBox
O CodingBox lê os módulos com o endereço e a paginação corretos por fator de forma, mostra os bytes brutos e decodificados no EEPROM editor, recalcula as somas de verificação na gravação, armazena um backup automaticamente, e suporta entrada de senha e scripts de programação para módulos protegidos e com comando de salvamento (Gravando um módulo). Se uma falha no nível da placa é suspeitada, veja a Solução de problemas do produto.
A mecânica do barramento por trás dessas falhas — endereços, seleção de página, tempo de ciclo de gravação, clock stretching: Interface de dois fios.
Por que um módulo responde do jeito que responde — memória emulada pela MCU, janela de boot, clock stretching, regiões protegidas: Controlador e firmware.