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
| Verifica | Perché |
|---|---|
| Inserimento e cradle | il 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 accensione | i 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 modulo | MOD_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 bus | parti da 100 kHz o meno; alcuni moduli rispondono NACK a 400 kHz |
| Modulo morto | nessun DDM, nessuna identità a nessuna velocità — verifica su una seconda scheda prima di scartarlo |
Le letture restituiscono FFh, 00h o dati corrotti
| Sintomo | Causa | Soluzione |
|---|---|---|
| Tutto FFh | NACK I²C — nessun dispositivo a quell’indirizzo, o pagina non presente | controlla l’indirizzo (identità A0h contro diagnostica A2h su SFP; singolo A0h con paginazione su QSFP/CMIS) |
| Tutto 00h | modulo non alimentato / tenuto in reset; oppure EEPROM davvero vuota | controlla l’alimentazione al cradle, la presenza del modulo; esistono moduli vuoti (stock non codificato) |
| Lunghezza corretta, contenuto sbagliato | lettura di una pagina diversa da quella voluta | scrivi il byte di selezione pagina (127) e rileggi; su CMIS anche la selezione banco (126) |
| Byte confusi / sfalsati | bus troppo veloce, cavo lungo, contesa con un host | scendi a ≤ 100 kHz; usa cavi corti; leggi sul banco, non su uno switch in produzione |
| Le letture A2h falliscono, A0h ok | modulo senza diagnostica, o blocco diagnostico protetto | controlla A0h byte 92 bit 6 (DDM implementato); alcuni tipi protetti in scrittura rispondono solo su A0h |
| I valori cambiano tra una lettura e l’altra | monitor in tempo reale — normale; oppure data not ready | i 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:
| Causa | Come riconoscerla | Cosa 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 scrittura | sola lettura indipendentemente dalla password, sopravvive ai power cycle | il pin WP deve essere pilotato dalla scheda del programmatore — il software da solo non può; vedi Tipi di protezione in scrittura |
| Temporizzazione | guasti intermittenti, pagine scritte parzialmente | rallenta 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 lettura | byte 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 sbagliato | i moduli CMIS possono richiedere LowPwr, o un data-path disattivato, prima di accettare scritture | porta prima il modulo nello stato richiesto |
| Pagina non selezionata | hai scritto l’offset giusto sulla pagina sbagliata | imposta 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
| Causa | Soluzione |
|---|---|
| Checksum non aggiornati — CC_BASE (byte 63), CC_EXT (95), CC_DMI (A2h 95), QSFP 191/223 | ricalcolali; 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 diverso | mantieni l’identità coerente con l’ottica reale (Velocità e rate, Incompatibilità fisiche) |
| Hai scritto nel layout del tipo di modulo sbagliato | un 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
- Prima leggi e salva — ogni scrittura dovrebbe essere preceduta da una lettura completa che finisce nel database.
- Identifica il tipo di protezione prima del primo tentativo di scrittura (Tipi di protezione in scrittura).
- Vai piano — il clock e la temporizzazione tra i byte risolvono la maggior parte dei guasti «casuali».
- Scrivi solo ciò che intendi — campi, non intere pagine, a meno di ripristinare un’immagine.
- 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.