Errori di lettura e scrittura EEPROM sul programmatore · Problemi comuni e soluzioni · Ricetrasmettitori ottici e cavi · Documentazione · CodingBox
CodingBox Documentazione

Errori di lettura e scrittura EEPROM sul programmatore

Prima che un modulo possa essere diagnosticato o codificato deve essere letto — e poi, spesso, scritto. Entrambi i passaggi falliscono in modi caratteristici. Questa pagina associa ogni guasto alla sua causa e all’impostazione o procedura che lo risolve, dal modulo che non viene visto affatto a una scrittura che «riesce» e sparisce silenziosamente.

Modulo non rilevato

VerificaPerché
Inserimento e cradleil modulo deve arrivare a fondo corsa nel connettore; usa l’adattatore per il suo fattore di forma — un SFP in un cradle QSFP non verrà visto
Tempo di accensionei moduli richiedono fino a ~2 s (SFP) o più (CMIS) dopo l’inserimento prima che il bus a due fili risponda
Segnale di presenza del moduloMOD_ABS / ModPrsL deve attivarsi; un pin piegato o un modulo privo del segnale appare assente
Stato a bassa potenza (CMIS)l’identità è leggibile in LowPwr, ma alcuni host/programmatori si aspettano Ready per l’accesso completo
Velocità del busparti da 100 kHz o meno; alcuni moduli rispondono NACK a 400 kHz
Modulo mortonessun DDM, nessuna identità a nessuna velocità — verifica su una seconda scheda prima di scartarlo

Le letture restituiscono FFh, 00h o dati corrotti

SintomoCausaSoluzione
Tutto FFhNACK I²C — nessun dispositivo a quell’indirizzo, o pagina non presentecontrolla l’indirizzo (identità A0h contro diagnostica A2h su SFP; singolo A0h con paginazione su QSFP/CMIS)
Tutto 00hmodulo non alimentato / tenuto in reset; oppure EEPROM davvero vuotacontrolla l’alimentazione al cradle, la presenza del modulo; esistono moduli vuoti (stock non codificato)
Lunghezza corretta, contenuto sbagliatolettura di una pagina diversa da quella volutascrivi il byte di selezione pagina (127) e rileggi; su CMIS anche la selezione banco (126)
Byte confusi / sfalsatibus troppo veloce, cavo lungo, contesa con un hostscendi a ≤ 100 kHz; usa cavi corti; leggi sul banco, non su uno switch in produzione
Le letture A2h falliscono, A0h okmodulo senza diagnostica, o blocco diagnostico protettocontrolla A0h byte 92 bit 6 (DDM implementato); alcuni tipi protetti in scrittura rispondono solo su A0h
I valori cambiano tra una lettura e l’altramonitor in tempo reale — normale; oppure data not readyi byte DDM devono cambiare per natura; controlla il bit di data-ready prima di fidarti di uno snapshot

La scrittura fallisce del tutto

WRITE FAIL, NACK sui dati, oppure il byte riletto risulta invariato:

CausaCome riconoscerlaCosa fare
Password richiesta (controller a firmware)scrittura rifiutata finché il valore corretto non viene inserito all’indirizzo password (SFP A2h 0x7B–0x7E, QSFP 123–126, CMIS 122–125)inserisci la password del modulo in Memoria protetta in scrittura e password; le password note dei produttori vengono applicate dal database
Protezione hardware in scritturasola lettura indipendentemente dalla password, sopravvive ai power cycleil pin WP deve essere pilotato dalla scheda del programmatore — il software da solo non può; vedi Tipi di protezione in scrittura
Temporizzazioneguasti intermittenti, pagine scritte parzialmenterallenta il clock (~1 kHz è spesso necessario per scritture EEPROM affidabili), rispetta il tempo di ciclo di scrittura (5–10 ms) tra byte/pagine, aggiungi ritardi tra i blocchi
Regione di sola letturabyte specifici non cambiano mai (checksum, soglie su alcuni modelli, area del produttore)l’EEPROM ha una regione protetta per progettazione; scrivi solo i campi che il modulo consente
Stato sbagliatoi moduli CMIS possono richiedere LowPwr, o un data-path disattivato, prima di accettare scrittureporta prima il modulo nello stato richiesto
Pagina non selezionatahai scritto l’offset giusto sulla pagina sbagliataimposta il byte 127 (e 126) prima della scrittura e verifica rileggendo il byte di selezione pagina

La scrittura «riesce» ma non si fissa

  • Torna indietro dopo un power cycle — il modulo memorizza le scritture in memoria temporanea e richiede il comando di salvataggio del produttore; senza di esso torna la vecchia immagine. Gestito da uno script di programmazione (Tipo 4 di protezione in scrittura).
  • Torna indietro immediatamente — il microcontroller rispecchia l’EEPROM dalla propria memoria e sovrascrive i tuoi byte; richiede l’algoritmo del produttore (tipo 5).
  • Alcuni byte si fissano, altri no — una mappa parzialmente protetta; scrivi campo per campo e verifica ciascuno.

L’host rifiuta il modulo dopo una scrittura riuscita

CausaSoluzione
Checksum non aggiornati — CC_BASE (byte 63), CC_EXT (95), CC_DMI (A2h 95), QSFP 191/223ricalcolali; CodingBox lo fa automaticamente alla scrittura (Mappa di memoria)
L’identità ora è incoerente — per esempio il produttore è cambiato ma i codici di conformità o la lunghezza d’onda implicano un hardware diversomantieni l’identità coerente con l’ottica reale (Velocità e rate, Incompatibilità fisiche)
Hai scritto nel layout del tipo di modulo sbagliatoun XFP scritto come un SFP, oppure confusione di pagina su QSFP — ripristina dal backup

Modulo morto dopo una scrittura

Scrivere dati casuali sopra le costanti di calibrazione, le soglie o l’area specifica del produttore (dove alcuni controller tengono la propria configurazione) può rendere un modulo inutilizzabile. Percorso di recupero: ripristina il backup che CodingBox ha preso prima della scrittura dal code database, poi scrivi solo i campi voluti.

Regole d’oro

  1. Prima leggi e salva — ogni scrittura dovrebbe essere preceduta da una lettura completa che finisce nel database.
  2. Identifica il tipo di protezione prima del primo tentativo di scrittura (Tipi di protezione in scrittura).
  3. Vai piano — il clock e la temporizzazione tra i byte risolvono la maggior parte dei guasti «casuali».
  4. Scrivi solo ciò che intendi — campi, non intere pagine, a meno di ripristinare un’immagine.
  5. Verifica rileggendo dopo un power cycle.

In CodingBox

CodingBox legge i moduli con l’indirizzo e la paginazione corretti per ogni fattore di forma, mostra i byte grezzi e decodificati nell'EEPROM editor, ricalcola i checksum alla scrittura, memorizza un backup automaticamente, e supporta l’inserimento password e gli script di programmazione per i moduli protetti e a comando di salvataggio (Scrivere un modulo). Se si sospetta un guasto a livello di scheda, vedi la risoluzione dei problemi del prodotto.

La meccanica del bus dietro questi guasti — indirizzi, selezione pagina, tempo di ciclo di scrittura, clock stretching: Interfaccia a due fili.

Perché un modulo risponde nel modo in cui risponde — memoria emulata da MCU, finestra di boot, clock stretching, regioni protette: Controller e firmware.


Se trovi un’imprecisione o un errore in questo articolo, seleziona il passaggio corrispondente e premi Ctrl+Enter per .