Lese- und Schreibfehler der EEPROM am Programmiergerät · Häufige Probleme und Lösungen · Optische Transceiver und Kabel · Dokumentation · CodingBox
CodingBox Dokumentation

Lese- und Schreibfehler der EEPROM am Programmiergerät

Bevor ein Modul diagnostiziert oder kodiert werden kann, muss es gelesen werden, und danach oft auch beschrieben. Beide Schritte scheitern auf charakteristische Weise. Diese Seite ordnet jeden Fehler seiner Ursache und der Einstellung oder dem Verfahren zu, das ihn behebt, vom Modul, das überhaupt nicht erkannt wird, bis zum Schreibvorgang, der „gelingt“ und still wieder verschwindet.

Modul nicht erkannt

PrüfungWarum
Sitz und Aufnahmedas Modul muss im Steckverbinder vollständig einrasten; den Adapter für den jeweiligen Formfaktor verwenden – ein SFP in einer QSFP-Aufnahme wird nicht erkannt
HochlaufzeitModule brauchen nach dem Einsetzen bis zu ~2 s (SFP) oder länger (CMIS), bevor der Zweidraht-Bus antwortet
Modul-PräsenzsignalMOD_ABS/ModPrsL muss aktiv werden; ein verbogener Pin oder ein Modul ohne dieses Signal wirkt wie nicht vorhanden
Low-Power-Zustand (CMIS)die Identität ist in LowPwr lesbar, aber manche Hosts/Programmiergeräte erwarten für vollen Zugriff Ready
Busgeschwindigkeitmit 100 kHz oder niedriger beginnen; manche Module quittieren bei 400 kHz mit NACK
totes Modulkein DDM, keine Identität bei irgendeiner Geschwindigkeit – vor dem endgültigen Urteil an einer zweiten Platine bestätigen

Lesevorgänge liefern FFh, 00h oder Datenmüll

SymptomUrsacheAbhilfe
Durchgehend FFhI²C-NACK: kein Gerät an dieser Adresse, oder Seite nicht vorhandendie Adresse prüfen (A0h-Identität vs. A2h-Diagnose bei SFP; einzelnes A0h mit Paging bei QSFP/CMIS)
Durchgehend 00hModul nicht mit Strom versorgt/im Reset gehalten; oder tatsächlich leeres EEPROMStromversorgung der Aufnahme prüfen, Modul vorhanden; leere Module existieren (unkodierte Ware)
richtige Länge, falscher Inhalteine andere als die beabsichtigte Seite wird gelesendas Page-Select-Byte (127) schreiben und erneut lesen; bei CMIS zusätzlich Bank-Select (126)
verstümmelte/verschobene BytesBus zu schnell, langes Kabel, Konflikt mit einem Hostauf ≤ 100 kHz heruntergehen; kurze Leitungen verwenden; auf der Werkbank lesen, nicht im laufenden Switch
A2h-Lesevorgänge schlagen fehl, A0h in OrdnungModul ohne Diagnose, oder geschützter DiagnoseblockA0h Byte 92 Bit 6 prüfen (DDM implementiert); manche schreibgeschützten Typen antworten nur auf A0h
Werte ändern sich zwischen LesevorgängenLive-Monitore – normal; oder data not readyDDM-Bytes sollen sich ändern; das Data-Ready-Bit prüfen, bevor eine Momentaufnahme als verlässlich gilt

Schreibvorgang schlägt vollständig fehl

WRITE FAIL, NACK bei den Daten, oder das Byte liest sich beim erneuten Lesen unverändert zurück:

UrsacheErkennungsmerkmalMaßnahme
Passwort erforderlich (Firmware-Controller)Schreiben wird verweigert, bis der richtige Wert an der Passwortadresse steht (SFP A2h 0x7B–0x7E, QSFP 123–126, CMIS 122–125)das Passwort des Moduls in Geschützter Speicher und Passwörter eingeben; bekannte Herstellerpasswörter werden aus der Datenbank angewendet
Hardware-Schreibschutzschreibgeschützt unabhängig vom Passwort, übersteht Stromzyklender WP-Pin muss von der Programmiergerät-Platine angesteuert werden – Software allein kann das nicht; siehe Schreibschutzarten
Timingsporadische Fehler, teilweise beschriebene Seitenden Takt verlangsamen (für zuverlässige EEPROM-Schreibvorgänge sind oft ~1 kHz nötig), die Schreibzykluszeit (5–10 ms) zwischen Bytes/Seiten einhalten, Verzögerungen zwischen Blöcken einfügen
Reiner Lesebereichbestimmte Bytes ändern sich nie (Prüfsummen, bei manchen Bauteilen Schwellwerte, Herstellerbereich)das EEPROM hat konstruktionsbedingt einen geschützten Bereich; nur die vom Modul erlaubten Felder beschreiben
Falscher ZustandCMIS-Module verlangen vor dem Beschreiben mitunter LowPwr oder einen deaktivierten Datenpfaddas Modul zunächst in den erforderlichen Zustand versetzen
Seite nicht ausgewähltder richtige Offset wurde auf der falschen Seite beschriebenvor dem Schreiben Byte 127 (und 126) setzen und durch Rücklesen des Page-Select-Bytes prüfen

Schreibvorgang „gelingt“, bleibt aber nicht erhalten

  • Setzt sich nach einem Stromzyklus zurück – das Modul speichert Schreibvorgänge im temporären Speicher und benötigt den herstellerspezifischen Save-Befehl; ohne ihn kehrt das alte Abbild zurück. Wird durch ein Programmierskript erledigt (Schreibschutzart 4).
  • Setzt sich sofort zurück – der Mikrocontroller spiegelt das EEPROM aus seinem eigenen Speicher und überschreibt die eigenen Bytes; erfordert den Algorithmus des Herstellers (Art 5).
  • Manche Bytes bleiben, andere nicht – eine teilweise geschützte Belegung; feldweise schreiben und jedes einzeln überprüfen.

Host lehnt das Modul nach erfolgreichem Schreiben ab

UrsacheAbhilfe
Prüfsummen veraltet: CC_BASE (Byte 63), CC_EXT (95), CC_DMI (A2h 95), QSFP 191/223neu berechnen; CodingBox macht das beim Schreiben automatisch (Speicherbelegung)
Identität jetzt widersprüchlich, z. B. Hersteller geändert, aber Compliance-Codes oder Wellenlänge deuten auf andere Hardwaredie Identität konsistent mit der realen Optik halten (Geschwindigkeit und Rate, Physikalische Fehlanpassungen)
in die Belegung des falschen Modultyps geschriebenein XFP wurde wie ein SFP beschrieben, oder eine QSFP-Seitenverwechslung – aus der Sicherung wiederherstellen

Modul nach einem Schreibvorgang tot

Werden Kalibrierkonstanten, Schwellwerte oder der herstellerspezifische Bereich (wo manche Controller ihre Konfiguration ablegen) mit Datenmüll überschrieben, kann ein Modul unbrauchbar werden. Weg zur Wiederherstellung: die Sicherung zurückspielen, die CodingBox vor dem Schreiben in der code database angelegt hat, und dann nur die beabsichtigten Felder schreiben.

Goldene Regeln

  1. Erst lesen und sichern – jedem Schreibvorgang sollte ein vollständiger Lesevorgang vorausgehen, der in der Datenbank landet.
  2. Die Schutzart bestimmen, bevor der erste Schreibversuch erfolgt (Schreibschutzarten).
  3. Langsam vorgehen – Takt und Timing zwischen den Bytes lösen die meisten „zufälligen“ Fehler.
  4. Nur das Beabsichtigte schreiben – Felder, keine ganzen Seiten, außer bei der Wiederherstellung eines Abbilds.
  5. Durch erneutes Lesen nach einem Stromzyklus verifizieren.

In CodingBox

CodingBox liest Module mit der richtigen Adresse und dem richtigen Paging je Formfaktor, zeigt Roh- und dekodierte Bytes im EEPROM editor, berechnet Prüfsummen beim Schreiben neu, legt automatisch eine Sicherung an und unterstützt Passworteingabe sowie Programmierskripte für geschützte Module und solche mit Save-Befehl (Ein Modul beschreiben). Wird ein Fehler auf Platinenebene vermutet, siehe die Produkt- Fehlerbehebung.

Die Busmechanik hinter diesen Fehlern: Adressen, Page-Select, Schreibzykluszeit, Clock Stretching in Zweidraht-Schnittstelle.

Warum ein Modul so antwortet, wie es antwortet: MCU-emulierter Speicher, Boot-Fenster, Clock Stretching, geschützte Bereiche in Controller und Firmware.


Wenn Sie in diesem Artikel eine Ungenauigkeit oder einen Fehler finden, markieren Sie die betreffende Stelle und drücken Sie Ctrl+Enter, um .