EEPROM-lees- en schrijffouten op de programmer
Voordat u een module kunt diagnosticeren of coderen, moet deze worden gelezen en vaak ook worden geschreven. Beide stappen falen op kenmerkende manieren. Deze pagina koppelt elke fout aan de oorzaak en aan de instelling of werkwijze die deze verhelpt, van een module die helemaal niet wordt gezien tot een schrijfactie die ‘slaagt’ en stil verdwijnt.
Module niet gedetecteerd
| Controle | Waarom |
|---|---|
| Plaatsing en cradle | de module moet volledig in de connector steken; gebruik de adapter voor de vormfactor, want een SFP in een QSFP-cradle wordt niet gezien |
| Inschakeltijd | modules hebben na het plaatsen tot ~2 s (SFP) of langer (CMIS) nodig voordat de two-wire-bus antwoordt |
| Signaal voor aanwezige module | MOD_ABS / ModPrsL moet actief worden; een gebogen pin of module zonder dit signaal lijkt afwezig |
| Low-power-toestand (CMIS) | identiteit is leesbaar in LowPwr, maar sommige hosts/programmers verwachten Ready voor volledige toegang |
| Bussnelheid | begin met 100 kHz of lager; sommige modules geven NACK bij 400 kHz |
| Defecte module | geen DDM, geen identiteit bij enige snelheid; bevestig op een tweede board voordat u hem afschrijft |
Uitlezingen geven FFh, 00h of rommel terug
| Symptoom | Oorzaak | Herstel |
|---|---|---|
| Alle FFh | I²C NACK: geen apparaat op dat adres, of pagina ontbreekt | controleer adres (A0h-identiteit versus A2h-diagnostiek op SFP; enkel A0h met paging op QSFP/CMIS) |
| Alle 00h | module zonder voeding / in reset gehouden, of werkelijk lege EEPROM | controleer voeding van de cradle en module-present; lege modules bestaan als ongecodeerde voorraad |
| Juiste lengte, verkeerde inhoud | een andere pagina dan bedoeld lezen | schrijf de pagina-selectbyte (127) en lees opnieuw; kies bij CMIS ook bank (126) |
| Verminkte / verschoven bytes | bus te snel, lange kabel, conflict met host | ga naar ≤ 100 kHz; gebruik korte leidingen; lees op de werkbank, niet in een actieve switch |
| A2h-lezen faalt, A0h is goed | module zonder diagnostiek, of beveiligd diagnostiekblok | controleer A0h byte 92 bit 6 (DDM implemented); sommige schrijfbeveiligde typen antwoorden alleen op A0h |
| Waarden veranderen tussen uitlezingen | actuele monitors, normaal, of data not ready | DDM-bytes horen te veranderen; controleer de data-ready-bit vóór u een momentopname vertrouwt |
Schrijven faalt onmiddellijk
WRITE FAIL, NACK bij gegevens of een onveranderde byte na teruglezen:
| Oorzaak | Herkenning | Wat te doen |
|---|---|---|
| Wachtwoord vereist (firmwarecontroller) | schrijven wordt geweigerd tot de juiste waarde op het wachtwoordadres staat (SFP A2h 0x7B–0x7E, QSFP 123–126, CMIS 122–125) | voer het wachtwoord van de module in bij Beveiligd geheugen en wachtwoorden; bekende fabrikantwachtwoorden worden uit de database toegepast |
| Hardwarematige schrijfbeveiliging | alleen lezen ongeacht wachtwoord, ook na power-cycles | de WP-pin moet door het programmerboard worden aangestuurd; software alleen kan dit niet; zie Schrijfbeveiligingstypen |
| Timing | onderbroken fouten, gedeeltelijk geschreven pagina's | verlaag de klok (~1 kHz is vaak nodig voor betrouwbare EEPROM-schrijfacties), respecteer schrijftijd (5–10 ms) tussen bytes/pagina's, voeg vertraging tussen blokken toe |
| Alleen-lezengebied | bepaalde bytes veranderen nooit (checksums, drempels op sommige onderdelen, fabrikantgebied) | de EEPROM heeft van ontwerp een beveiligd gebied; schrijf alleen velden die de module toestaat |
| Verkeerde toestand | CMIS-modules kunnen LowPwr of een gedeactiveerd datapad vereisen vóór ze schrijven accepteren | zet de module eerst in de vereiste toestand |
| Pagina niet geselecteerd | juiste offset op verkeerde pagina geschreven | zet byte 127 (en 126) vóór het schrijven en controleer door de pagina-selectbyte terug te lezen |
Schrijven ‘slaagt’ maar blijft niet behouden
- Keert terug na power-cycle: de module bewaart schrijfacties tijdelijk en heeft het save command van de fabrikant nodig; zonder dat komt het oude image terug. Dit behandelt een programmeerscript (Schrijfbeveiligingstype 4).
- Keert onmiddellijk terug: de microcontroller spiegelt de EEPROM vanuit zijn eigen opslag en overschrijft uw bytes; dit vereist het algoritme van de fabrikant (type 5).
- Sommige bytes blijven, andere niet: een gedeeltelijk beveiligde kaart; schrijf veld voor veld en verifieer elk veld.
Host weigert de module na een geslaagde schrijfactie
| Oorzaak | Herstel |
|---|---|
| Checksums verouderd: CC_BASE (byte 63), CC_EXT (95), CC_DMI (A2h 95), QSFP 191/223 | bereken opnieuw; CodingBox doet dit automatisch bij schrijven (Geheugenkaart) |
| Identiteit nu inconsistent, bijv. fabrikant gewijzigd maar conformiteitscodes of golflengte wijzen op andere hardware | houd de identiteit consistent met de werkelijke optiek (Snelheid en rate, Fysieke afwijkingen) |
| Geschreven naar de layout van het verkeerde moduletype | een XFP als SFP geschreven of verwarring over QSFP-pagina's: herstel uit back-up |
Module defect na een schrijfactie
Rommel schrijven over kalibratieconstanten, drempels of het fabrikant-specifieke gebied (waar sommige controllers hun configuratie bewaren) kan een module onbruikbaar maken. Herstelroute: zet de back-up terug die CodingBox vóór de schrijfactie in de Code database heeft opgeslagen, en schrijf daarna alleen de bedoelde velden.
Gouden regels
- Lees en sla eerst op: elke schrijfactie hoort voorafgegaan te worden door een volledige uitlezing die in de database terechtkomt.
- Identificeer het beveiligingstype vóór de eerste schrijfpoging (Schrijfbeveiligingstypen).
- Werk langzaam: klok en timing tussen bytes lossen de meeste ‘willekeurige’ fouten op.
- Schrijf alleen wat u bedoelt: velden, geen hele pagina's, behalve bij herstel van een image.
- Verifieer door na een power-cycle opnieuw te lezen.
In CodingBox
CodingBox leest modules met het juiste adres en de juiste paging per vormfactor, toont ruwe en gedecodeerde bytes in de EEPROM editor, berekent checksums opnieuw bij schrijven, slaat automatisch een back-up op en ondersteunt wachtwoordinvoer en programmeerscripts voor beveiligde modules en modules met save command (Een module schrijven). Verdenkt u een storing op boardniveau, zie dan Troubleshooting.
De busmechanica achter deze fouten, adressen, paginaselectie, schrijftijd en clock stretching: Tweedraadsinterface.
Waarom een module antwoordt zoals hij doet: door MCU geëmuleerd geheugen, bootvenster, clock stretching en beveiligde gebieden: Controller en firmware.