CodingBox Documentação

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çãoPor quê
Encaixe e berçoo 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çãoos 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 presenteMOD_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 barramentocomece em 100 kHz ou menos; alguns módulos dão NACK a 400 kHz
Módulo mortosem DDM, sem identidade em nenhuma velocidade — confirme em uma segunda placa antes de condená-lo

Leituras retornam FFh, 00h ou lixo

SintomaCausaCorreção
Tudo FFhNACK de I²C — nenhum dispositivo naquele endereço, ou página ausenteverifique o endereço (identidade A0h vs. diagnóstico A2h no SFP; A0h único com paginação no QSFP/CMIS)
Tudo 00hmódulo sem energia / mantido em reset; ou EEPROM genuinamente em brancoverifique a energia do berço, presença do módulo; módulos em branco existem (estoque não codificado)
Comprimento certo, conteúdo erradolendo uma página diferente da pretendidagrave o byte de seleção de página (127) e releia; no CMIS, também a seleção de banco (126)
Bytes embaralhados / deslocadosbarramento rápido demais, cabo longo, contenção com um hostreduza para ≤ 100 kHz; use fios curtos; leia na bancada, não em um switch ativo
Leituras de A2h falham, A0h okmódulo sem diagnóstico, ou bloco de diagnóstico protegidoverifique o A0h byte 92 bit 6 (DDM implementado); alguns tipos protegidos contra gravação respondem apenas A0h
Valores mudam entre leiturasmonitores ao vivo — normal; ou data not readyos 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:

CausaComo reconhecerO 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 hardwaresomente leitura independentemente da senha, sobrevive a ciclos de energiao pino WP precisa ser acionado pela placa do programador — o software sozinho não consegue; veja Tipos de proteção contra gravação
Temporizaçãofalhas intermitentes, páginas gravadas parcialmentereduza 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 leiturabytes 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 erradomódulos CMIS podem exigir LowPwr, ou um data path desativado, antes de aceitar gravaçõescoloque o módulo no estado exigido primeiro
Página não selecionadavocê gravou o offset certo na página erradadefina 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

CausaCorreção
Somas de verificação desatualizadas — CC_BASE (byte 63), CC_EXT (95), CC_DMI (A2h 95), QSFP 191/223recalcule; 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 diferentemantenha a identidade consistente com a óptica real (Velocidade e taxa, Incompatibilidades físicas)
Gravou no layout de um tipo de módulo erradoum 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

  1. Leia e salve primeiro — toda gravação deve ser precedida por uma leitura completa que vá para o banco de dados.
  2. Identifique o tipo de proteção antes da primeira tentativa de gravação (Tipos de proteção contra gravação).
  3. Vá devagar — o clock e a temporização entre bytes resolvem a maioria das falhas “aleatórias”.
  4. Grave apenas o que pretende — campos, não páginas inteiras, a menos que esteja restaurando uma imagem.
  5. 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.


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